2014-01-30 4 views
1

У меня есть Dataframe df:Линейная регрессия по панды Dataframe со значениями х, как индекс

[250 rows x 120 columns] 
        0   1   2   3   4   5 \ 
lag time [s]                
0.041667  0.038638 0.193427 0.126253 0.058737 0.122129 0.117425 
0.083333  0.104397 0.323418 0.390540 0.194786 0.247005 0.242796 
0.125000  0.168620 0.577642 0.782489 0.389399 0.381930 0.325373 
0.166667  0.241057 0.912038 1.361542 0.560007 0.346316 0.343614 
0.208333  0.246506 0.636547 1.863711 0.767916 0.487872 0.203043 
... 

Мне нужно, чтобы соответствовать y = a*x с x=df.index.values времен запаздывания для каждого столбца

Некоторые столбцы могут содержать NaN и хотел бы восстановить другой результат в pd.DataFrame({'column' : [],'slope' : [], 'stderr' : [] })

я мог бы извлечь индивидуально x, y данные и соответствовать данным используя numpy fitline(), но это выглядит для меня утомительным.

Есть ли лучший способ сделать работу, используя panda ols?

ответ

1

Вам нужно сохранить время запаздывания как индекс? Самый простой способ, вероятно, будет включать его в качестве столбца в формуле интерфейсе по dataframe и использовать statsmodels':

import statsmodels.formula.api as sm 

df2 = df.reset_index() 

modres = {} 
for colname in df2.drop('index', axis=1).columns: 
    mod = sm.ols(formula=colname+' ~ index', data=df2) 
    modres[colname] = mod.fit() 

Вы просили dataframe списков, но я думаю, что это имеет смысл, чтобы сохранить весь результат объект из каждая из регрессий, а не выбрасывает большую часть информации. Мое предложение сохраняет словарь результатов регрессии. Чтобы получить доступ к коэффициентам и стандартным ошибкам для регрессии y1 ~ x, вы должны написать modres['y1'].params и modres['y1'].bse.

Если вы исследуете объект, вы увидите, что вы можете захватить AIC, t-stats и т. Д. Из каждого объекта результатов. Вы также можете передать их во множество других функций statsmodels для прогнозирования, обратной передачи и так далее.

+0

Спасибо за быстрый ответ. – user3253105

+0

Нет проблем, просто дайте мне знать, если это не то, что вы ищете, и я могу настроить его. – horatio

+0

Сброс добавляет столбец в мой df, но меня путают с формулой ols. Мне нужно, чтобы x было временем задержки и соответствовало каждому другому столбцу, чтобы получить отдельную подгонку за столбец. Как мне определить мою модель? – user3253105

Смежные вопросы