熊猫groupby与行列式等子组操作?

时间:2019-03-05 01:50:00

标签: python regression pandas-groupby

最近我在做胖回归,所以我从R转到python,一切正常,但遇到了'奇异矩阵'(由于多重共线性或完美的可预测性)错误很多。在R或Stata中这不是问题,因为它们会自动删除这样的观察值,所以我实际上有两个问题:

  1. python中是否有内置方法来处理由我刚才提到的两个来源引起的“奇异矩阵”错误?

  2. 如果不是,我想自己挑选那些观察结果,但是尝试时遇到问题。

对于每个子组(因为我使用很多固定效应),基本思想是计算相关性的决定因素,将那些值足够低的子组删除。

我的数据:

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

0 个答案:

没有答案