如何运行无预测变量的回归?仅含常数项误差项的代码调试
仅常数项回归代码修正说明
问题原因
你调用sm.add_constant()时未传入基准数组,无法生成和因变量y长度匹配的常数项自变量矩阵,因此代码运行报错。仅含常数项的回归需要给OLS的第二个参数传入长度和y一致的全1数组作为自变量。
修正代码
写法1:直接生成全1自变量数组
import numpy as np import statsmodels.api as sm import matplotlib.pyplot as plt y = np.random.normal(size=50) # 直接传入全1数组作为仅含常数项的自变量 model = sm.OLS(y, np.ones(len(y)), missing='drop').fit() # 输出拟合结果 print(model.summary())
写法2:使用sm.add_constant生成自变量(符合statsmodels常规使用逻辑)
import numpy as np import statsmodels.api as sm import matplotlib.pyplot as plt y = np.random.normal(size=50) # 传入空的二维数组,让add_constant生成仅含常数项的自变量矩阵 exog = sm.add_constant(np.empty((len(y), 0))) model = sm.OLS(y, exog, missing='drop').fit() print(model.summary())
结果说明
两种写法得到的拟合结果完全一致,输出中的系数项就是你要的常数项a。由于示例中y是标准正态分布生成的,a的估计值会非常接近0。
内容的提问来源于stack exchange,提问作者Peter_Warren
相关产品推荐
相关产品推荐

