我使用Sympy来运行一个基本的回归示例,希望它能成为分解更复杂估计量的有效工具。然而,对于每一步密集矩阵的显示,我无法计算出。尤其是,我在尝试表示最小二乘估计值时遇到了麻烦:
这是一个只有五个观测值的装置。在
from sympy import *
y=MatrixSymbol('y',5,1)
x=MatrixSymbol('x',5,2)
b=MatrixSymbol('b',2,1)
我可以表示基本组件:
^{pr2}$(x.T*y).as_explicit()
我甚至可以象征性地表示第一个分量的倒数。在
(x.T*x).I
但是,当我试图展开第一个组件的反向时,我会遇到一个索引器错误。在
(x.T*x).I.as_explicit()
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-182-93739c34be6e> in <module>()
----> 1 (x.T*x).I.as_explicit()
/home/choct155/analysis/Anaconda/lib/python2.7/site-packages/sympy/matrices/expressions/matexpr.pyc in as_explicit(self)
230 return ImmutableMatrix([[ self[i, j]
231 for j in range(self.cols)]
--> 232 for i in range(self.rows)])
233
234 def as_mutable(self):
/home/choct155/analysis/Anaconda/lib/python2.7/site-packages/sympy/matrices/expressions/matexpr.pyc in __getitem__(self, key)
198 i, j = sympify(i), sympify(j)
199 if self.valid_index(i, j) is not False:
--> 200 return self._entry(i, j)
201 else:
202 raise IndexError("Invalid indices (%s, %s)" % (i, j))
/home/choct155/analysis/Anaconda/lib/python2.7/site-packages/sympy/matrices/expressions/matpow.pyc in _entry(self, i, j)
27 if self.exp.is_Integer:
28 # Make an explicity MatMul out of the MatPow
---> 29 return MatMul(*[self.base for k in range(self.exp)])._entry(i, j)
30
31 from matmul import MatMul
/home/choct155/analysis/Anaconda/lib/python2.7/site-packages/sympy/matrices/expressions/matmul.pyc in _entry(self, i, j, expand)
45 return coeff * matrices[0][i, j]
46
---> 47 head, tail = matrices[0], matrices[1:]
48 assert len(tail) != 0
49
IndexError: list index out of range
相反的情况存在,所以我是不是只是要求辛菲做一些它做不到的事情?这里的目标是通过IPython笔记本中的矩阵表示和数据处理显式地逐步完成估算过程的每个组件。我一直找不到解决这个问题的办法,因此任何在这方面的帮助将不胜感激。在
我怀疑
as_explicit()
方法是否支持矩阵求逆中的变量表达式。由于逆运算需要更多的空间,这可能导致数组索引超出范围。但是,如果指定矩阵:这是个虫子。我为它打开了https://github.com/sympy/sympy/issues/2749。解决方法是
(x.T*x).as_explicit().I
,但它似乎引发了自己的异常(https://github.com/sympy/sympy/issues/2750)。因此,在其中一个问题得到解决之前,我很遗憾没有一个好的解决方案给你,除了用.det()
和2x2矩阵的常用公式手动计算逆。在相关问题 更多 >
编程相关推荐