【问题标题】:How to treat negative values in lm(x~y) function in R?如何处理 R 中 lm(x~y) 函数中的负值?
【发布时间】:2021-01-09 11:06:08
【问题描述】:

运行我的脚本时,我收到以下错误消息:Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 0 (non-NA) cases 我猜这是由于一些负值? 该脚本正在循环通过 csv 文件列表,对于其中的一小部分,代码正在运行。但是对于他们所有人,我都会收到错误消息。我检查了数据,有一些(大约占整个数据的 2%)负 NDVI 值始终为 -99999。我有一些土壤水分值为 0。

我找到了这个解决方案na.action=na.exclude在lm函数中添加:

model <- lm(NDVI ~ T + Prec + soilM, data = BeforeConf)
model <- lm(NDVI ~ T + Prec + soilM, data = BeforeConf, na.action=na.exclude)

但同样的错误仍然发生。除了从数据中删除负值之外,您还有其他解决方案吗?最好是忽略整体而不排除线性回归 (lm) 中的这些值或忽略整个 csv 文件。如果里面有负值。

【问题讨论】:

  • 错误信息说你有0 (non-NA) cases。检查TPrecsoilM 是否在BeforeConf 中有值。我猜-99999NDVI 表明它应该是NA
  • 您需要再检查一下您的数据。这与负值无关(但如果它们指示 NA 值,这些 应该 实际上会转换为 NA 值)。错误消息清楚地表明您的数据有问题。您应该检查str(BeforeConf)summary(BeforeConf)。尝试生成 DV 与每个预测变量的图。我敢打赌,这些情节中至少有一个也会失败。
  • @GKi 我不确定 -99999 是否被视为 NA。但是0 (non-NA) cases 表示没有 NA 值对吗?
  • @Mathias 不,相反。这意味着只有 NA 案例。
  • @Roland 检查数据的问题是,我使用的是小型 csv 文件,而不是整个数据集。有些文件没有 -99999 数据。所以这些工作。但我可以将完整的数据集加载到 R 中并使用str(BeforeConf)summary(BeforeConf) 进行检查。但我在 excel 中检查了 Prec、T、NDVI 和 soilM,某些 NDVI 只有这些 -99999 值。我应该更换它们吗?用 0 还是平均值?但这会影响结果。

标签: r na lm


【解决方案1】:

R 中的缺失值应编码为NA。你可以使用replace

replace(dat, dat == -99999, NA)
#       X1    X2    X3
# 1   1.37  1.30 -0.31
# 2     NA  2.29 -1.78
# 3   0.36 -1.39 -0.17
# 4   0.63 -0.28  1.21
# 5   0.40    NA  1.90
# 6  -0.11  0.64 -0.43
# 7   1.51 -0.28 -0.26
# 8  -0.09 -2.66 -1.76
# 9   2.02 -2.44    NA
# 10 -0.06  1.32 -0.64

在不更改数据的情况下直接在公式中实际起作用的内容。

lm(X1 ~ X2 + X3, replace(dat, dat == -99999, NA))$coefficients
# (Intercept)          X2          X3 
#  0.61499466  0.06062925  0.25979370 

如果缺少一个以上的代码,您可以这样做:

replace(dat, array(unlist(dat) %in% c(-99999, -88888), dim(dat)), NA)

数据:

set.seed(42)
dat <- data.frame(matrix(round(rnorm(30), 2), 10, 3))
dat[2, 1] <- -99999
dat[5, 2] <- -99999
dat[9, 3] <- -99999

【讨论】:

    猜你喜欢
    • 2018-04-17
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 2017-07-09
    相关资源
    最近更新 更多