2014-03-06 54 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