我已经看到这个问题在我的编码中出现了几次,其中statsmodels计算的“Df模型”小于模型拟合的参数数量。
据我所知,无论我适合哪种型号和(我相信),只有在参数数量不小(> ~20?)的情况下才会发生这种情况。这可能与参数之间的高多重共线性有关吗?
由于这个问题似乎出现了大量参数(带有“真实”数据),我不确定我是否可以重新创建一些虚拟数据来展示问题。我只是希望有人以前见过它并知道它为什么会发生。
无论如何,我的代码示例(&输出为注释)如下所示。
print type(base_features) #<type 'list'>
print len(base_features) #70
model = sm.GLM(train1['target'], train1[base_features], family=Poisson())
#^ produces the same results for other glm family models as well as standard OLS
poi_base = model.fit()
print len(poi_base.params) #70
print poi_base.df_model #63
请注意,'base_features'中有一个用户构造的拦截/常量,但即使statsmodel能够辨别出来,df_model仍应至少为69.