2014-08-27 80 views
1

現在,我已經想通了如何使用OLS(Pandas/Statsmodel OLS predicting future values),我想,以適應更好的曲線,以我的數據... GLM應該同樣工作,我假設。GLM在statsmodel返回錯誤

import statsmodels.api as sma 
df1['intercept'] = 1 
y = df1[['intercept', 'date_delta']] 
X = df1['monthly_data'] 
smaresults_normal = sma.GLM(X,y, family=sma.families.Binomial()).fit() 

回報ValueError: The first guess on the deviance function returned a nan. This could be a boundary problem and should be reported.這是一個已知的問題,在2010年我也試過:

import statsmodels.api as sm 
import statsmodels.formula.api as smf 

glm_unsmoothed = smf.GLM('monthly_data ~ date_delta', df1, family=sm.families.Binomial()) 

glm_unsmoothed.fit() 

這引起了錯誤'builtin_function_or_method' object has no attribute 'equals'

我想繪製模型以及未來價值因爲我可以使用ols模型:

#ols model 
df1['intercept'] = 1 
X = df1[['intercept', 'date_delta']] 
y = df1['monthly_data'] 

smresults_normal = sm.OLS(y, X).fit() 
#future values 
smresults_normal.predict(df_future12[['intercept', 'future_monthly']]) 

#model in sample data 
import statsmodels.formula.api as smf 

smresults_unsmoothed = smf.ols('monthly_data ~ date_delta', df1).fit() 

df1['ols_preds_unsmoothed'] = smresults_unsmoothed.predict() 

編輯我放棄了試圖用GLM和替代使用OLS與多項式擬合公式,我認爲做得很不錯......(雖然讓未來的預測顯然是行不通一樣在我其他的OLS,總有一天我會希望寫一些代碼沒有無盡的擺弄!)!不幸的是我的聲望太低,發佈不錯的圖片! :(

+0

GLM與家人二項式,或的Logit或概率單位是二進制數據,從屬或響應變量,endog,需要在0和1,或二進制的,零和一之間。 – user333700 2014-08-27 19:29:50

+0

感謝洞察力!我試圖讓電源形式現在的工作(威斯康星有些困難)。我需要指數或拋物線(在Excel中,數據適合於二次方 - 我正在運行另一個分析進行比較)...我是否正在使用GLM朝着正確的方向前進? – pythonista 2014-08-28 14:13:28

回答

0

我想我有同樣的問題,所有你需要的是確保你的數據框不包含線,其中案件和不是案件都等於零在估計glm之前,運行:

數據=數據[(data.cases!= 0)|(!data.notcases = 0)]。

顯然ř自動執行它