gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:15:13 26 4
gpt4 key购买 nike

我正在逐步提高 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com