Python 使用ols对非变独立变量进行回归
这是我的数据集:Python 使用ols对非变独立变量进行回归,python,r,machine-learning,regression,statsmodels,Python,R,Machine Learning,Regression,Statsmodels,这是我的数据集: x y z 1 2 1 1 4 6 1 1 12 1 5 14 1 6 17 1 9 18 现在我想使用python中statsmodel库的ols函数对此进行回归。为此,我使用了: lm=smf.ols(公式='z~x+I(x+y)',data=data).fit() 现在我将得到x,(x+y)和截距的系数。由于自变量x在整个数据集中都是常数,其系数应为0,因为因变量z不依赖于x值。但我的输出与预期不同。我的输出是:
x y z
1 2 1
1 4 6
1 1 12
1 5 14
1 6 17
1 9 18
现在我想使用python中statsmodel库的ols函数对此进行回归。为此,我使用了:
lm=smf.ols(公式='z~x+I(x+y)',data=data).fit()
现在我将得到x,(x+y)和截距的系数。由于自变量x在整个数据集中都是常数,其系数应为0,因为因变量z不依赖于x值。但我的输出与预期不同。我的输出是:
Intercept 1.293173
col1 1.293173
I(col1 + col2) 1.590361
Coefficients:
(Intercept) x I(x + y)
2.586 NA 1.590
我使用相同的数据,使用以下函数找到R上的系数:
m检查results.summary()末尾的注释,它应该说明您的模型的特征值接近于零。问题是完全共线,在R和statsmodel中处理方式不同,但我从R和statsmodel中得到的方程完全不同,这会给我的预测带来误差。你能详细解释一下特征值的事情吗。还有,我怎样才能克服这个问题?python中是否有其他包可用于预测?您的
x
变量是一个常数,包含所有的变量。它与拦截“冲突”。有两种解决方案:不考虑模型中的拦截或不使用模型公式中的x:<代码> MOD1