繁体   English   中英

如何使用列名作为因变量进行线性回归

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM