具有Statsmodel值的多元OLS回归错误:零大小数组到没有标识的缩减操作最大值

2024-09-30 02:28:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我在对一个包含大约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程序员,所以如果你能用外行的话来分解这个问题(并提出解决方案),我将不胜感激。在

提前谢谢你。在


Tags: 数据方法目标scikitnanlearnkpiols
1条回答
网友
1楼 · 发布于 2024-09-30 02:28:15

使用公式时,默认的丢失处理是删除至少包含一个nan的任何行。如果每一行都包含一个nan,那么就没有观察结果了。我想这就是回溯结束的意思。在

如果你有足够的总体数据,那么你可以尝试用MICE进行插补和估算,而MICE将迭代地为每个变量插补缺失的值。在

相关问题 更多 >

    热门问题