[英]How to do linear regression using columns-names as dependent variables
假设我有以下数据集
d <- data.frame(1:31, 31:1)
names(d) <- c("cats", "dogs")
我想做一个线性回归,列作为因变量,值作为独立变量 - 如果我有 2 列,1 列名为“Animals”,包含 31 行,值为“Cat”,31 行值为“Dog”和 1 列名为“值”的 62 行包含值 1:31-31:1 我想我可以使用
lm(Animals ~ values, data=df)
但是有没有办法通过使用列名作为表达式的第一部分来做到这一点?
任何帮助深表感谢
我们可以转换为长格式,然后做一个lm
library(tidyr)
library(dplyr)
d %>%
pivot_longer(everything(), names_to = 'Animals', values_to = 'values') %>%
{lm(values~ Animals, data = .)}
如果您只有两列,那么 t 检验与线性回归完全相同(效果、p 值等将相同):
t.test(d$cats, d$dogs, var.equal=TRUE)
但是假设您确实想重塑一个更复杂的数据集,那么@akrun 的答案就很好。 如果您不想使用 tidyverse,则有一个基本的 R reshape
函数可以做同样的事情:
d2 <- reshape(data=d, varying=list(1:2),
direction="long",
times = names(d),
timevar="animals",
v.names="value")
lm( value ~ animals, data=d2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.