В последнее время я делаю жирные регрессии , поэтому я перешел с R на python, все работает нормально, но я сталкиваюсь с 'Singular Matrix' (из-за мультиколлинеарности или идеальной предсказуемости) ошибки много.Это не проблема в R или Stata, поскольку они автоматически отбрасывают такие наблюдения, поэтому у меня на самом деле есть два вопроса:
есть ли в python встроенный способ работы с SingularОшибка матрицы, вызванная двумя источниками, которые я только что упомянул?
, если нет, то я хочу выбрать эти наблюдения самостоятельно, но у меня возникла проблема при попытке.
Основная идея для каждой подгруппы (так как я использую фиксированный эффект лотов) вычисляет детерминанты корреляций, отбрасывает те подгруппы, значения которых достаточно низкие.
Мои данные:
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