О запуске нескольких простых регрессий одновременно - PullRequest
0 голосов
/ 08 мая 2019

Хотите запустить четыре линейные модели одновременно

У меня есть данные, содержащие четыре зависимых и 4 независимых переменных.Я создал список зависимых переменных, а также создал список независимых переменных.Я хочу запустить 4 линейные модели одновременно, например

lm(y1~x1)
lm(y2~x2)
lm(y3~x3)
lm(y4~x4)

Хотя я могу сделать это по одной, но я хочу запустить сразу.Пожалуйста, помогите

1 Ответ

0 голосов
/ 08 мая 2019

Как насчет этого,

Сначала введите некоторые данные в кадры.

x.values<-data.frame(
             x_1 = rnorm(10),
             x_2 = rnorm(10),
             x_3 = rnorm(10)
             )

y.values<-data.frame(y_1 = rnorm(10),
                 y_2 = rnorm(10),
                 y_3 = rnorm(10)
)

Затем создайте формулу с регулярным выражением

lmformulas <- list(as.formula(paste(grep("y_[1]", names(y.values), value = TRUE), paste(grep("x_[1]", names(x.values), value = TRUE), collapse = " + "), sep = " ~ ")),
               as.formula(paste(grep("y_[2]", names(y.values), value = TRUE), paste(grep("x_[2]", names(x.values), value = TRUE), collapse = " + "), sep = " ~ ")),
               as.formula(paste(grep("y_[3]", names(y.values), value = TRUE), paste(grep("x_[3]", names(x.values), value = TRUE), collapse = " + "), sep = " ~ "))
               )

[[1]] у_1 ~ х_1

[[2]] у_2 ~ х_2

[[3]] у_3 ~ х_3`

Finnaly, вы можете получить желаемый результат "сразу"

lm_result <- lapply(lmformulas, function(x) {
lm(x, data = cbind(y.values,x.values))
}
)

[[1]]

Вызов: lm (формула = x, данные = cbind (y.values, x.values))

Коэффициенты: (Перехват) x_1
-0,6081 0,1041

[[2]] * * тысячу двадцать-пять

Вызов: lm (формула = x, данные = cbind (y.values, x.values))

Коэффициенты: (Перехват) x_2
-0,452157 -0,001287

[[3]]

Вызов: lm (формула = x, данные = cbind (y.values, x.values))

Коэффициенты: (Перехват) x_3
-0,1945 -0,1830

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...