2015-04-20 2 views
1

Я пытаюсь сделать некоторые Ньюи-Запад МНК с statsmodels по моим данным, чтобы оценить мои параметры, и следующий мой код для этого:Несколько МНК ОЦЕНКЕ TypeError

from __future__ import print_function, division 
import xlrd as xl 
import numpy as np 
import scipy as sp 
import pandas as pd 
import statsmodels.formula.api as smf 
import statsmodels.api as sm 

file_loc = "/Python/dataset_3.xlsx" 
workbook = xl.open_workbook(file_loc) 
sheet = workbook.sheet_by_index(0) 
tot = sheet.nrows 
data = [[sheet.cell_value(r, c) for c in range(sheet.ncols)] for r in 

range(sheet.nrows)] 

rv1 = [] 
rv5 = [] 
rv22 = [] 
rv1fcast = [] 
T = [] 
price = [] 
time = [] 
retnor = [] 

for i in range(1, tot):   
    t = data[i][0] 
    ret = data[i][1] 
    ret5 = data[i][2] 
    ret22 = data[i][3] 
    ret1_1 = data[i][4] 
    retn = data[i][5] 
    t = xl.xldate_as_tuple(t, 0) 
    rv1.append(ret) 
    rv5.append(ret5) 
    rv22.append(ret22) 
    rv1fcast.append(ret1_1) 
    retnor.append(retn) 
    T.append(t) 

df = pd.DataFrame({'RVFCAST':rv1fcast, 'RV1':rv1, 'RV5':rv5, 'RV22':rv22,}) 
df = df[df.RV1.notnull()] 
model = smf.OLS(formula = 'df.RVFCAST ~ df.RV1 + df.RV5 + df.RV22', data = df) 

Все выглядит просто прекрасно, когда я посмотреть на массивы или мой dataframe, но он возвращает только: TypeError: INIT() занимает по меньшей мере 2 аргумента (1 дано)

Я перепробовал кучу разных методов, и я не могу видеть то, что мне не хватает.

Когда я запустить его на следующий ErrorMessage показывает:

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
/Python/harrv.py in <module>() 
    41 df = df[df.RV1.notnull()] 
    42 
---> 43 model = smf.OLS(formula = 'df.RVFCAST ~ df.RV1 + df.RV5 + df.RV22', data = df) 
    44 
    45 #mdl = model.get_robustcov_results(cov_type='HAC',maxlags=1) 

TypeError: __init__() takes at least 2 arguments (1 given) 

печать RV1 дает:

Out[318]: 
[0.015538008996147568, 
0.008881670570720125, 
0.010421778063375802,  
.....  
0.003151044550868834, 
0.0029676428110974166, 
0.005236329928710288, 
0.004838460533164701, 
''] 

А другой с.в. дает similair числа с плавающей. Df только собирает их так, как это делает pd.dataframe, который согласно документации поддерживается (http://statsmodels.sourceforge.net/devel/example_formulas.html).

+0

Это помогло бы, если бы вы написать фактическое сообщение об ошибке в том числе трассировки стека. Из вашего текущего описания неясно, какой вызов выйдет из строя. –

+0

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

+0

Использование 'df.' для аргумента формулы явно неверно. (Сравните с http://statsmodels.sourceforge.net/devel/example_formulas.html). Но я признаю, что я не вижу корреляции между сообщением об ошибке и вашими аргументами. Это поможет, если вы можете сделать пример самостоятельно. Например. добавьте операторы 'import' и данные примера. –

ответ

2

Проблема в том, что функция формулы в statsmodels.formula.api имеет нижний регистр. Верхний регистр OLS такой же, как и в основных файлах statsmodels.api. В дальнейшем прописные буквы будут удалены из пространства имен formula.api, чтобы избежать такой путаницы.

Это означает, что вы должны использовать более низкие олы случае, как в

model = smf.ols(formula = 'df.RVFCAST ~ df.RV1 + df.RV5 + df.RV22', data = df)

нотой формула функции нижнего регистра только псевдонимами к from_formula методам моделей.

smf.ols ярлык для sm.OLS.from_formula

+0

Это сработало! Но когда я пытаюсь распечатать сводку модели, она возвращает ошибку о том, что ось должна быть указана, когда формы a и веса различаются. У вас есть представление об этом? –

+0

У меня нет догадки об этом без трассировки или полного примера. Вы можете задать новый вопрос или задать в группе pystatsmodels google. Одна вещь: отбросьте 'df.' внутри строки формулы. Мы (разработчики statsmodels) никогда не рассматривали этот шаблон, и я не уверен, что он работает правильно. Вполне вероятно, что это испортит 'patsy' создание матрицы дизайна или обработку после оценки. – user333700

+0

Я отправил второй вопрос с более подробной информацией: http://stackoverflow.com/questions/29799161/summary-not-working-for-ols-estimation –

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