【问题标题】:How can I fix this invalid type error using lm()?如何使用 lm() 修复此无效类型错误?
【发布时间】:2020-09-27 22:56:28
【问题描述】:
Error in model.frame.default(formula = data$conservationstatus ~ data$latitude,  : 
  invalid type (NULL) for variable 'data$conservationstatus

我有一个数据集(在读取 CSV 文件后称为数据),它包含 Conservation Status 和 Latitude 列。我正在尝试使用

对这两个执行线性回归
lm(data$ConservationStatus ~ data$Latitude, data = data)

但是,我不断收到上述错误。好像是因为我的专栏里有两个词。我已经尝试过 data$Conservation Status、data$'Conservation Status'、data$Conservation.Status,但似乎没有任何效果:(

【问题讨论】:

  • 我怀疑您正在使用 tidyverse read_csv() 函数导入数据(base R 的 read.csv() 会将变量名更改为 Conservation.Status。这可能是个好主意在运行 lm 之前,学习使用 rename() 函数将变量名称转换为 R 友好(无空格)值 ...

标签: r error-handling dataset linear-regression lm


【解决方案1】:

您可能拼错了变量名,请检查 colnames(data) 以了解其拼写方式。

例如,

lm(mtcars$MPG ~ mtcars$disp)
# Error in model.frame.default(formula = mtcars$MPG ~ mtcars$disp, drop.unused.levels = TRUE) : 
#   invalid type (NULL) for variable 'mtcars$MPG'

lm(mtcars$mpg ~ mtcars$disp)
# Call:
# lm(formula = mtcars$mpg ~ mtcars$disp)
# Coefficients:
# (Intercept)  mtcars$disp  
#    29.59985     -0.04122  

注意mpg 是小写的,而不是我第一次尝试的大写。

colnames(mtcars)
#  [1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear" "carb"

我同意 @akrun 的建议,改用 lm(mpg ~ disp, data=data),因为(对我而言)命名法似乎更具可读性,但在这种情况下它会引发不同的错误,正如您所发现的那样。

【讨论】:

    【解决方案2】:

    我们可以不使用data$ 指定公式。如果列名有空格,请使用反引号将列名括起来

    model <- lm(`Conservation Status` ~ Latitude, data = data)
    

    可以用一个简单的例子复现

    data(iris)
    lm(iris$epal.Length ~ iris$Species, iris)
    

    model.frame.default 中的错误(公式 = iris$epal.Length ~ iris$Species, : 变量“iris$epal.Length”的类型无效(NULL)

    并使用正确的语法

    lm(Sepal.Length ~ Species, iris)
    
    #Call:
    #lm(formula = Sepal.Length ~ Species, data = iris)
    
    #Coefficients:
    #      (Intercept)  Speciesversicolor   Speciesvirginica  
    #            5.006              0.930              1.582  
    

    【讨论】:

      猜你喜欢
      • 2018-07-27
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 2020-10-04
      • 1970-01-01
      • 2020-05-15
      相关资源
      最近更新 更多