更改线性回归的 X 和 Y 变量

Posted

技术标签:

【中文标题】更改线性回归的 X 和 Y 变量【英文标题】:Changing X and Y variable for linear regression 【发布时间】:2021-10-03 06:14:19 【问题描述】:

我目前正在查看我的数据中是否存在年度趋势。我正在做 R 和年份、H 和年份以及 R 和 H 之间的线性回归。

但是,当我对 R 与年份进行线性回归时,我得到一个 NA F 和 P 值。当年份是 y 时,代码可以工作,但我想知道为什么线性模型只能以一种方式工作,并且如果 year as y 在这种情况下对数据分析有效? 提前谢谢你。

数据:

year R H
2000 160 140
2001 178 153
2002 149 138
2003 161 149
2004 180 173
2005 150 142
2006 158 130
2007 149 190
2008 167 200
2009 172 204

代码:

#this has lots of NA outputs
linearmodel<-lm(data$R ~ data$year)
linearmodel
summary(linearmodel)

#this gives output statistics
linearmodel<-lm(data$year ~ data$R)
linearmodel
summary(linearmodel)

再次感谢您。

【问题讨论】:

如果我使用相同的数据从头开始构建数据框,它不会给我带来问题,也许问题出在您正在处理的数据框中。您确定引用年份的值是数字而不是字符串吗? str(data) 的输出是什么?如果年份是一个因素,则不可能以年份作为因变量运行 lm 感谢您尝试复制。 str 的输出是每一行都是数字,但是 year 有这个... $ year: chr [1:10],我将数据帧转换为一个新的 csv 文件,现在没有错误。我认为问题出在数据框上,因为它已被重新排列和格式化多次。再次感谢两位! 【参考方案1】:

我无法重现此内容。两个公式在输出中都不包含 NA 值。这两个模型的summary() 也是如此。

data_68544559 <- data.frame(
  year = 2000:2009,
  R = c(160, 178, 149, 161, 180, 150, 158, 149, 167, 172)
)

lm(R ~ year, data_68544559)
#> 
#> Call:
#> lm(formula = R ~ year, data = data_68544559)
#> 
#> Coefficients:
#> (Intercept)         year  
#>   259.58788     -0.04848
lm(year ~ R, data_68544559)
#> 
#> Call:
#> lm(formula = year ~ R, data = data_68544559)
#> 
#> Coefficients:
#> (Intercept)            R  
#>   2.005e+03   -3.316e-03

将时间列的格式更改为POSIXct 也不会给出NA,但summary() 会出错,因为无法计算残差。

summary(lm(ISOdate(year, 1, 1) ~ R, data_68544559))
#> Error in Ops.difftime((f - mean(f)), 2) : 
#>   '^' not defined for "difftime" objects

【讨论】:

嗨 Gregor,感谢您检查我的数据集。我将数据框转换为新的 csv 文件,现在没有错误。我认为问题出在数据框上,因为它已被重新排列和格式化多次。感谢您检查我的代码/数据。

以上是关于更改线性回归的 X 和 Y 变量的主要内容,如果未能解决你的问题,请参考以下文章

对y取对数后回归模型如何解释

2—线性逻辑回归

怎样用SPSS做一元线性回归?具体怎么检验相关性

机器学习笔记一元线性回归原理公式及代码实现

多元回归分析类型

一元线性回归模型和一元线性回归方程之间的区别