6

我尝试使用 R 进行回归。我有以下代码在导入 CSV 文件时没有问题

    dat <- read.csv('http://pastebin.com/raw.php?i=EWsLjKNN',sep=";")
dat # OK Works fine
Regdata <- lm(Y~.,na.action=na.omit, data=dat)
summary(Regdata)

但是,当我尝试回归时,它不起作用。我收到一条错误消息:

Erreur dans lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
  aucun cas ne contient autre chose que des valeurs manquantes (NA)

我所有的 CSV 文件都是数字,如果“单元格”为空,我有“NA”值。有些列不是空的,而其他一些行有时是空的,带有 NA 值......

所以,我不明白为什么我会收到一条错误消息,即使是:

na.action=na.omit

PS:CSV 数据可在: http: //pastebin.com/EWsLjKNN

4

2 回答 2

6

您收到此错误消息是因为您的所有数据框行都包含至少一个缺失值。例如,可以使用以下代码对其进行检查:

 apply(data,1,function(x) sum(is.na(x)))
 [1] 128 126  82  78  73  65  58  34  31  30  28  30  20  21  12  20  17  16  12  42  50 128

因此,当您运行回归机智lm()na.action=na.omit删除所有数据框行并且没有适合回归的数据时。

但这不是主要问题。如果您提供的数据包含您拥有的所有信息,那么您正在尝试应用包含 165 个自变量(X 变量)的回归,而只有 22 个观察值。自变量的数量必须小于观察的数量。

于 2012-12-19T18:42:59.120 回答
-2

我相信我可以为此添加一点清晰度,因为我亲身经历了这一点,这就是我在这里的原因——除了我的问题是 gls(广义最小二乘模型)与标准线性模型。一些类似的逻辑“可能”适用于此处或类似情况。

到目前为止,我不反驳任何人所说的任何话。人们对观察的看法以及 R 对这些事物的看法可能会有些混淆。

假设您有 160 多个自变量。假设您有一个给定的来源,所有数据都来自该来源。您从文件、数据库等中导入它。假设您有相同数量的响应变量或满足 R 用于回归分析目的的东西。

R 会告诉你你有 2 个观察值。现在,如果您从另一个来源以相同的方式获得了类似的数据,那么如果您在 RStudio 中查看您的全局环境,您将有 3 个观察结果。

我之所以提到这一点是因为数学意义上的“观察”一词(因为它在这里使用)是完全可以接受的。就 R 而言,它以多种方式看待观察。

这是我遇到类似问题的一个重要原因——它告诉我我缺少值,na.omit this,na.action that 等等。当我查看 OrchardSpray 演示时,我回顾了自己的方法,我想到了。

关键是我们如何感知数据中的“观察”是一回事。R 有另一个术语,它吐出错误消息的方式可能会引起额外的混乱。

明白了吗?

于 2015-04-20T06:37:55.450 回答