2013-02-18 1 views
3

Мне интересно, могу ли я применить модель pandas.ols к кадру данных из нескольких переменных ответа с одной независимой переменной за один раз.Использование pandas.ols по нескольким зависимым переменным сразу

Итак, представьте, у меня есть следующие:

In [109]: y=pandas.DataFrame(np.random.randn(10,4)) 
In [110]: x=pandas.DataFrame(np.random.randn(10,1)) 

Я хотел бы сделать что-то вроде этого:

In [111]: model=pandas.ols(y=y, x=x) 

В основном в результате четырех модельных выходов или по крайней мере, доступ к коэффициентам четверка. Я предпочел бы избегать циклического перехода через переменные ответа, если это возможно.

+0

Нужно ли выполнять только OLS без особых стандартных ошибок? – BKay

ответ

1

Я думаю, что это должно быть сделано.

#First generate the data 
x=pd.DataFrame(np.random.randn(10,1)) 
y=pd.DataFrame(np.random.randn(10,4)) 

#Since we are doing things manually we'll need to add the constant term to the x matrix 
x[1] = ones(10) 

#This matrix precomputes (X'X)^-1X which we will premultiply the y matrix by to get results 
tmpmat = np.dot(np.linalg.pinv(np.dot(x.T ,x)),x.T) 

#Solve for the betas 
betamatrix = np.dot(tmpmat,y) 

#Compare with the pandas output one at a time. 
model=pd.ols(y=y[0], x=x, intercept=False) 
model=pd.ols(y=y[1], x=x, intercept=False) 
0

Проделали это много раз и не нашли альтернативы циклу. Следующий код сохранит результаты четырех регрессий в dict. Если вас интересуют только некоторые из коэффициентов, вы можете их захватить при прохождении регрессий.

model = {} 
for i in y: 
    model[i] = pd.ols(y=y[i], x=x) 

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

  • Нет связанных вопросов^_^