2014-03-06 55 views
6

我試圖運行使用statsmodels和熊貓數據框的多重OLS迴歸。對於不同的行,在不同的列中有缺失的值,並且我不斷收到錯誤消息: ValueError:數組不能包含infs或NaNs 我看到了這個SO問題,它與此類似,但並不完全回答我的問題:statsmodel.api.Logit: valueerror array must not contain infs or nans使用statsmodels忽略多個OLS迴歸中的缺失值

我想要做的是運行迴歸並忽略所有行中缺少我在此迴歸中使用的變量的變量。現在我有:

import pandas as pd 
import numpy as np 
import statsmodels.formula.api as sm 

df = pd.read_csv('cl_030314.csv') 

results = sm.ols(formula = "da ~ cfo + rm_proxy + cpi + year", data=df).fit() 

我想要的東西就像失蹤=「下降」。 任何建議將不勝感激。非常感謝。

+0

'〜'做什麼? – Roman

回答

14

你回答了你自己的問題。只是通過

missing = 'drop' 

到OLS

import statsmodels.formula.api as smf 
... 
results = smf.ols(formula = "da ~ cfo + rm_proxy + cpi + year", 
       data=df, missing='drop').fit() 

如果不工作,那麼這是一個bug,請在GitHub上一個MWE報告。

供參考,請注意上面的導入。並非所有的公式都可用於formula.api命名空間,因此您應該將它與statsmodels.api分開。或者只是使用

import statsmodels.api as sm 
sm.formula.ols(...) 
+0

非常感謝您的幫助。如果有其他人遇到此問題,還需要使用以下命令刪除任何可能的inifinities:pd.set_option('use_inf_as_null',True) – user2649353

+0

沒問題。請考慮將答案標記爲已接受。 – jseabold