python - 如何从 statsmodels 中 WLS 回归的 2D 参数获取测试预测

标签 python arrays numpy regression statsmodels

我正在逐步提高 WLS regression functions 的参数使用统计模型。

我有一个 10x3 数据集 X,我声明如下:

X = np.array([[1,2,3],[1,2,3],[4,5,6],[1,2,3],[4,5,6],[1,2,3],[1,2,3],[4,5,6],[4,5,6],[1,2,3]])

这是我的数据集,我有一个 10x2 endog 向量,如下所示:

z =
[[  3.90311860e-322   2.00000000e+000]
 [  0.00000000e+000   2.00000000e+000]
 [  0.00000000e+000  -2.00000000e+000]
 [  0.00000000e+000   2.00000000e+000]
 [  0.00000000e+000  -2.00000000e+000]
 [  0.00000000e+000   2.00000000e+000]
 [  0.00000000e+000   2.00000000e+000]
 [  0.00000000e+000  -2.00000000e+000]
 [  0.00000000e+000  -2.00000000e+000]
 [  0.00000000e+000   2.00000000e+000]]

现在导入import statsmodels.api as sm后我这样做:

g = np.zeros([3, 2]) # g(x) is a function that will store the regression parameters
mod_wls = sm.WLS(z, X)
temp_g = mod_wls.fit()
print temp_g.params

我得到这个输出:

[[ -5.92878775e-323  -2.77777778e+000]
 [ -4.94065646e-324  -4.44444444e-001]
 [  4.94065646e-323   1.88888889e+000]]

早些时候,来自the answer to this question ,我能够使用 numpy.dot 预测测试数据 X_test 的值,如下所示:

np.dot(X_test, temp_g.params)

我很容易理解,因为它是 endog 向量,y 是一个一维数组。但是,当我的 endog 矢量(在本例中为 z)为 2D 时,它如何工作? 当我尝试 1D 版本中使用的上述行时,出现以下错误:

   self._check_integrity()
  File "C:\Users\app\Anaconda\lib\site-packages\statsmodels\base\data.py", line 247, in _check_integrity
    raise ValueError("endog and exog matrices are different sizes")
ValueError: endog and exog matrices are different sizes

最佳答案

np.dot(X_test, temp_g.params) 应该仍然有效。

在某些情况下,您需要检查矩阵的方向,有时需要转置

但是,预测 和大多数其他结果方法将不起作用,因为模型假设因变量 z 是一维。

问题又是你想做什么?

如果您想独立拟合 z 的列,则对其进行迭代,使每个 y 都是一维。

对于 z.T 中的 y:res = WLS(y, X).fit()

z.T 允许对列进行迭代。

在其他情况下,我们通常堆叠模型,使 y 为一维,其第一部分为 z[:,0],列的第二部分为 z[: ,1]。设计矩阵或解释变量矩阵必须相应扩展。

statsmodels 正在为多变量因变量提供支持,但仍需要一些时间才能准备好。

关于python - 如何从 statsmodels 中 WLS 回归的 2D 参数获取测试预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23369859/

相关文章:

python - 如何对 Pandas 中的两个领域进行分组?

python - 如何比较两个集合,其中每个元素都是列表?

python - 这是 python 解释器在模块加载期间的名称-值绑定(bind)问题吗?

python - 在 Python/Scapy 网络扫描仪中通过 MAC 地址过滤/标记设备识别的打印结果

c++ - 使用 malloc、char 数组和指针

numpy - 如何通过固定索引将 4D numpy 数组转换为 2D

python / NumPy : How to extract interior of any dimension of numpy array?

c++ - 为什么即使输入有效也总是设置 cin.failbit?

JavaScript:为什么使用原型(prototype)来调用函数而不是仅仅调用函数?

python - 如何在 groupby 之后合并列并选择 pandas 数据框中其他列的第一个有效值?