Панды группового с операциями подгруппы, как определители? - PullRequest
0 голосов
/ 05 марта 2019

В последнее время я делаю жирные регрессии , поэтому я перешел с R на python, все работает нормально, но я сталкиваюсь с 'Singular Matrix' (из-за мультиколлинеарности или идеальной предсказуемости) ошибки много.Это не проблема в R или Stata, поскольку они автоматически отбрасывают такие наблюдения, поэтому у меня на самом деле есть два вопроса:

  1. есть ли в python встроенный способ работы с SingularОшибка матрицы, вызванная двумя источниками, которые я только что упомянул?

  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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...