2014-01-31 2 views
3
  1. У меня есть Dataframe df с n колонками. Индекс - это DatetimeIndex. Учитывая ссылочный столбец ref_col, я хочу вычислить одномерные линейные регрессии оставшихся столбцов на этот ссылочный столбец n-1. Ниже не достичь этого, а вычисляет один n-1 -мерном регрессии:Паровые регрессии в Пандах

    pd.ols(y=df[ref_col], x=df.drop(ref_col, axis=1)) 
    
  2. Предположим теперь я хочу, чтобы вычислить все возможные попарные регрессии для того, чтобы произвести nxn матрицу бет с единичной диагональю.

Можно сделать оба вышеописанных относительно легко используя контуры. Есть ли «векторный» способ?

ответ

1

Вы можете получить список парных регрессий к опорному колонку, как это:

models=[pd.ols(y=df[ref_col],x=df[col]) for col in df if col<>ref_col] 

Чтобы получить матрицу моделей по всем возможным ссылаться на столбцы, следующий шаг будет

models_matrix=[[pd.ols(y=df[ref_col],x=df[col]) for col in df if col<>ref_col] for ref_col in df] 

Наконец, матрица бета может быть достигнута следующим образом

betas=[[pd.ols(y=df[ref_col],x=df[col]).beta.x for col in df if col<>ref_col] for ref_col in df] 
Смежные вопросы