使用statsmodel忽略多个OLS回归中的缺失值

use*_*353 12 python regression statsmodels

我正在尝试使用statsmodels和pandas数据帧运行多个OLS回归.对于不同的行,不同的列中缺少值,并且我不断收到错误消息:ValueError:数组不能包含infs或NaNs我看到了这个问题,这是类似但不完全回答我的问题:statsmodel.api. Logit:valueerror数组不能包含infs或nans

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

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()
Run Code Online (Sandbox Code Playgroud)

我想要一些像缺失的东西="掉落".任何建议将不胜感激.非常感谢.

jse*_*old 20

你是在自问自答.刚过去

missing = 'drop'
Run Code Online (Sandbox Code Playgroud)

到ols

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

如果这不起作用那么这是一个错误,请在github上用MWE报告.

仅供参考,请注意上面的导入.并非所有在formula.api命名空间中都可用,因此您应该将它与statsmodels.api分开.或者只是使用

import statsmodels.api as sm
sm.formula.ols(...)
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢您的帮助。如果其他人遇到这种情况,您还需要使用以下方法删除任何可能的无穷大: pd.set_option('use_inf_as_null', True) (2认同)