更改线性回归的 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 变量的主要内容,如果未能解决你的问题,请参考以下文章