【问题标题】:Errors caused by the inclusion of NA values in linear regression线性回归中包含 NA 值导致的错误
【发布时间】:2022-01-01 01:17:35
【问题描述】:

我想做线性回归,但在其中一种情况下这些是不适用的。如您所见,我的数据中有两个条件,S:单身和 M:已婚。 x2 和 x3 是固定效应,y 是因变量。 x3 不适用于单一条件,因此数据均为 NA。我不想删除 x3,因为它是已婚条件的重要变量。我收到此错误:

contrasts<-(*tmp*, value = contr.funs[1 + isOF[nn]]) 中的错误:
对比只能应用于具有 2 个或更多水平的因素。

我尝试将 NA 替换为“0”,但我不确定这是否是正确的做法。谁能给我一些建议? lm代码应该怎么写?

data <- data.frame(x1 = c("S", "S", "S", "M", "M", "M"), 
                   x2 = c(7, 7, 7, 1, 1, 2),
                   x3 = c(NA, NA, NA, 1, 1, 2),
                   y = c(4, 3, 2, 5, 5, 1))

lm(y~x1*x2*x3, data)

有人可以帮帮我吗? (这也是我第一次发帖,不知道是不是发对了。)

【问题讨论】:

  • 您的问题可能更适合 DSSE:datascience.stackexchange.com 或交叉验证:stats.stackexchange.com。关于答案的简短说明:我会将 NA 转换为 0 并检查显着性水平。由于x3 不适用于该条件,因此将其设为 0 也是有意义的。
  • 模型无法修复,因为您要求的是所有变量之间的交互。您必须适合简化模型,例如y ~ x1 + x2 + x3
  • 关键字是“插补”。用零替换缺失值并不比用任意值替换它们更有意义。有时用平均值代替它们,但并不总是正确的做法。删除包含NAs 的行有时是正确的做法,您可以通过在数据框上调用na.omit()来做到这一点。

标签: r linear-regression na


【解决方案1】:

我试图将它用于(技术)工作,但它不像其他人已经说过的那么有用

data_df <- data.frame(x1 = c("S", "S", "S", "M", "M", "M"), 
                   x2 = c(7, 7, 7, 1, 1, 2),
                   x3 = c(NA, NA, NA, 1, 1, 2),
                   y = c(4, 3, 2, 5, 5, 1))

data_df$x1 <- as.integer(as.factor(data_df$x1))
data_df <- na.omit(data_df)

lm(y ~ x1*x2*x3, data_df)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-02
    • 2020-10-06
    • 2010-12-20
    • 2013-04-30
    • 2017-10-13
    • 2020-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多