使用linear_harvey_collier检验模型线性度时触发ValueError问题排查
使用linear_harvey_collier检验线性特征时的报错解决
我在用linear_harvey_collier检验模型是否具有线性特征时触发了错误,代码示例如下:
import statsmodels.formula.api as smf import statsmodels.stats.diagnostic as sms QGDP = df['QUARTERLY REAL GDP'] UNRATE = df['UNRATE(%)'] ols_1 = smf.ols(formula='QGDP ~ UNRATE', data = df) ols_fit = ols_1.fit() test = sms.linear_harvey_collier(ols_fit)
报错信息:
ValueError: "The initial regressor matrix, x[:skip], is singular. You must use a value of skip large enough to ensure that the first OLS estimator is well-defined.
报错原因
linear_harvey_collier检验会将样本按模型拟合值排序后,拆分前后部分数据进行OLS回归。默认的skip参数(样本前后跳过的比例)可能导致前半段的自变量矩阵出现奇异值——比如自变量UNRATE在前半段样本中取值完全一致,或是样本量过少导致矩阵无法求逆,进而无法完成OLS估计。
解决办法
- 手动设置更大的
skip参数,确保保留的样本能让自变量矩阵非奇异。例如跳过前后20%的样本,用中间段数据做检验:
test = sms.linear_harvey_collier(ols_fit, skip=0.2)
- 检查自变量
UNRATE在前半段样本中的取值分布,若存在取值过于单一的情况,需清洗数据或补充更多样本。
内容的提问来源于stack exchange,提问作者Songfan Yang
相关产品推荐
相关产品推荐

