Python 使用statsmodels忽略多元OLS回归中的缺失值

Python 使用statsmodels忽略多元OLS回归中的缺失值,python,regression,statsmodels,Python,Regression,Statsmodels,我正在尝试使用statsmodels和pandas数据框架运行多元OLS回归。不同行的不同列中缺少值,我一直收到错误消息: ValueError:数组不能包含INF或NAN 我看到了这个如此相似的问题,但并没有完全回答我的问题: 我想做的是运行回归并忽略我在这个回归中使用的变量缺少变量的所有行。现在我有: import pandas as pd import numpy as np import statsmodels.formula.api as sm df = pd.read_csv('c

我正在尝试使用statsmodels和pandas数据框架运行多元OLS回归。不同行的不同列中缺少值,我一直收到错误消息: ValueError:数组不能包含INF或NAN 我看到了这个如此相似的问题,但并没有完全回答我的问题:

我想做的是运行回归并忽略我在这个回归中使用的变量缺少变量的所有行。现在我有:

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()
我想要一些东西,比如missing=“drop”。
如有任何建议,将不胜感激。非常感谢。

您回答了自己的问题。过关

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(...)
该函数工作得很好,但如果您想对预测值和真实值进行一些计算,例如,如果您想使用函数
均方误差
,则可能还不够。在这种情况下,最好是彻底摆脱NaN

df = pd.read_csv('cl_030314.csv')
df_cleaned = df.dropna()
results = sm.ols(formula = "da ~ cfo + rm_proxy + cpi + year", data=df_cleaned).fit()

非常感谢你的帮助。如果其他人遇到这种情况,您还需要使用:pd.set\u option('use\u inf\u as\u null',True)删除任何可能的限制