最近我在做胖回归,所以我从R转到python,一切正常,但遇到了'奇异矩阵'(由于多重共线性或完美的可预测性)错误很多。在R或Stata中这不是问题,因为它们会自动删除这样的观察值,所以我实际上有两个问题:
python中是否有内置方法来处理由我刚才提到的两个来源引起的“奇异矩阵”错误?
如果不是,我想自己挑选那些观察结果,但是尝试时遇到问题。
对于每个子组(因为我使用很多固定效应),基本思想是计算相关性的决定因素,将那些值足够低的子组删除。
我的数据:
df = pd.DataFrame({'col_1': [1,1,1,1,1,2,2,2,2,2],
'col_2': [1,2,3,4,5,6,7,8,9,10],
'col_3':['A','A','A','A','A','B','B','B','B','B'],
'col_4':0*10})
我的回归方程:
col_4 ~ col_1 + col_2 + C(col_3)
每组的决定因素:
np.linalg.det(np.corrcoef(df.loc[df['col_3'].isin(['A'])][['col_1','col_2','col_4']]))
2.068910295301473e-48
np.linalg.det(np.corrcoef(df.loc[df['col_3'].isin(['B'])][['col_1','col_2','col_4']]))
8.197321048400957e-50
我想要的
col_1 col_2 col_3 col_4 col_det
0 1 1 A 0 2.068910e-48
1 1 2 A 0 2.068910e-48
2 1 3 A 0 2.068910e-48
3 1 4 A 0 2.068910e-48
4 1 5 A 0 2.068910e-48
5 2 6 B 0 8.197321e-50
6 2 7 B 0 8.197321e-50
7 2 8 B 0 8.197321e-50
8 2 9 B 0 8.197321e-50
9 2 10 B 0 8.197321e-50