Как сделать линейную регрессию, используя имена столбцов в качестве зависимых переменных - PullRequest
0 голосов
/ 13 марта 2020

Предположим, у меня есть следующий набор данных

d <- data.frame(1:31, 31:1)
names(d) <- c("cats", "dogs")

И я хочу сделать линейную регрессию со столбцами в качестве зависимых переменных и значениями как независимыми - если у меня было 2 столбца, 1 столбец с именем "Животные" "содержит 31 строку со значением" Cat "и 31 строку со значением" Dog "и 1 столбец с именем" values ​​"из 62 строк, содержащих значения 1: 31-31: 1 Я думаю, что я мог бы использовать

lm(Animals ~ values, data=df)

но есть ли способ сделать это, просто используя имена столбцов в качестве первой части выражения?

Любая помощь очень ценится

Ответы [ 2 ]

3 голосов
/ 13 марта 2020

Мы можем преобразовать в длинный формат и затем сделать lm

library(tidyr)
library(dplyr)
d %>%
   pivot_longer(everything(), names_to = 'Animals', values_to = 'values') %>%
   {lm(values~ Animals, data = .)}
2 голосов
/ 13 марта 2020

Если у вас есть только два столбца, тогда t-критерий точно такой же, как линейная регрессия (эффекты, значения p и т. Д. c будут идентичны):

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...