我试图通过尝试实现$$(X ^ {T} X)^ { - 1} X ^ {T} y $$
来反过来但是,这样做时,我收到以下错误:TypeError: No loop matching the specified signature and casting was found for ufunc inv
我的代码如下:
import pandas as pd
import numpy as np
from numpy.linalg import inv
data = pd.read_csv("Tbill10yr.csv")
X = data.as_matrix()[:,1]
X1 = X[:730]
y_1 = X[1:,].reshape((730,1))
Nobs = y_1.shape[0]
X1 = np.c_[ np.ones( (Nobs,1) ) , X1]
XX = np.dot(X1.T , X1)
Xy = np.dot(X1.T , y_1)
beta_hat = np.dot(inv(XX),Xy)
我后来发现我必须使用beta_hat = np.dot(inv(XX.dtype(float)),Xy)
为什么有必要这样做?有没有正确的方法来解决这个问题?
任何解释都非常适用。
由于
答案 0 :(得分:0)
一个可能的原因可能是您的数据未被识别为float
。来自data.as_matrix
documentation:
dtype将是一个较低的共同分母dtype(隐含的 向上转型);也就是说,如果dtypes(甚至数字类型)是 混合,将容纳所有容纳的人。使用它 如果你不处理这些街区,请小心。
您可以通过执行XX.dtype
来检查数组的类型。