python - 为什么除第一个(截距)之外的所有系数在 OLS 回归模型中都获得非常接近零(e^-17 或低)的值?
问题描述
我使用statsmodels包在 python 中编写了以下代码,以创建OLS回归模型。我用不同的数据集尝试了代码,得到的模型除了第一个(截距)系数外,所有系数值都接近于零。代码可能有什么问题?
data1 = pandas.concat([Y, X], axis = 1)
dta = lagmat2ds(data1, mxlg, trim='both', dropex=1)
dtaown = sm.add_constant(dta[:, 0:(mxlg + 1)], prepend = False)
dtajoint = sm.add_constant(dta[:, 0:], prepend = False)
res2down = sm.OLS(dta[:, 0], dtaown).fit()
res2djoint = sm.OLS(dta[:, 0], dtajoint).fit()
这里的sm是statsmodels.api 作为 sm并且对于样本测试,您可以考虑数据集sm.datasets.spector。
解决方案
您的数据的结构方式 - 您正在建模Y
与Y|lag Y|constant
. 请注意,OLS
文档(https://www.statsmodels.org/dev/generated/statsmodels.regression.linear_model.OLS.html)指出 -
除非您使用公式,否则模型不会添加任何常数。
所以你看到的第一个值不是截距,而是拟合系数Y
vs Y
- 这将是1.0
。
您可以尝试检查是否获得了合理的结果是Y
从这样的预测变量中排除 -
res2down = sm.OLS(dta[:, 0], dtaown[:, 1:]).fit()
推荐阅读
- amcharts - 使用 dataloader 插件将 JSON 数据加载到 AmCharts
- apache-kafka - 使用 kafka-consumer-groups.sh 获取 kafka 消费者滞后时出错
- python - 需要基于一个公共键将多个数据帧的字典导出到 Excel
- python - 从excel多列创建python嵌套字典
- arrays - Excel VBA:使用日期值填充一维数组
- java - `array = array` 实际上是如何工作的?
- javascript - 创建 JSON 文件时如何使用在 Android Studio 上编写的 JSON 数组?
- java - Gradle 复合构建 - 您可以从包含的多项目构建中依赖于 java 子项目吗?
- java - Java Spring MySQL String Timezone 列在两毫秒之间
- mysql - Django:1215,“无法在只有一个字段的模型上添加外键约束”