我在对一个包含大约7500个数据点的数据集执行多元回归时遇到了一个问题,在某些列和行中缺少数据(NaN)。每行中至少有一个NaN值。有些行只包含NaN值。在
我使用OLS-Statsmodel进行回归分析。我试图不使用Scikit Learn来执行OLS回归,因为(我可能错了,但是)我必须在数据集中填充缺失的数据,这会在一定程度上扭曲数据集。在
我的数据集如下所示: KPI
这是我所做的(目标变量是KP6,预测变量是剩余变量):
est2 = ols(formula = KPI.KPI6.name + ' ~ ' + ' + '.join(KPI.drop('KPI6', axis = 1).columns.tolist()), data = KPI).fit()
它返回一个ValueError:zero size array to reduction operation maximum,它没有标识。在
^{pr2}$我怀疑错误是由于包含一些NaN的目标变量(即KPI6)引起的,所以我尝试像这样删除KPI6=NaN的所有行,但问题仍然存在:
KPI.dropna(subset = ['KPI6'])
我还尝试删除只包含NaN值的所有行,但问题仍然存在:
KPI.dropna(how = 'all')
我把以上两个步骤结合起来,问题仍然存在。消除这种误差的唯一方法是用某种东西(例如0、平均值、中位数等)对缺失的数据进行插补。不过,我希望尽量避免这种方法,因为我想对原始数据执行OLS回归。在
当我试图只选择几个变量作为预测变量时,OLS回归也起作用,但这又不是我要做的。我想把KPI6之外的所有其他变量都作为预测变量。在
有什么解决办法吗?一个星期以来,我一直很紧张。感谢任何帮助。我不是一个专业的Python程序员,所以如果你能用外行的话来分解这个问题(并提出解决方案),我将不胜感激。在
提前谢谢你。在
使用公式时,默认的丢失处理是删除至少包含一个nan的任何行。如果每一行都包含一个nan,那么就没有观察结果了。我想这就是回溯结束的意思。在
如果你有足够的总体数据,那么你可以尝试用MICE进行插补和估算,而MICE将迭代地为每个变量插补缺失的值。在
相关问题 更多 >
编程相关推荐