Я хотел бы сделать регрессию l oop lm (y ~ x) с набором данных с одним y
и несколькими x
, и запустить регрессию для каждого x
, а затем также сохранить результаты (оценка, p-значения) в data.frame()
, поэтому мне не нужно копировать их вручную (тем более, что мои реальные данные намного больше). Я думаю, что это не должно быть слишком сложно, но я изо всех сил стараюсь заставить его работать и ценю вашу помощь: Вот мой пример набора данных:
sample_data <- data.frame(
fit = c(0.8971963, 1.4205607, 1.4953271, 0.8971963, 1.1588785, 0.1869159, 1.1588785, 1.142857143, 0.523809524),
Xbeta = c(2.8907744, -0.7680777, -0.7278847, -0.06293916, -0.04047017, 2.3755812, 1.3043990, -0.5698354, -0.5698354),
Xgamma = c( 0.1180758, -0.6275700, 0.3731964, -0.2353454,-0.5761923, -0.5186803, 0.43041835, 3.9111749, -0.5030638),
Xalpha = c(0.2643091, 1.6663923, 0.4041057, -0.2100472, -0.2100472, 7.4874195, -0.2385278, 0.3183102, -0.2385278),
Xdelta = c(0.1498646, -0.6325119, -0.5947564, -0.2530748, 3.8413339, 0.6839322, 0.7401834, 3.8966404, 1.2028175)
)
#yname <- ("fit")
#xnames <- c("Xbeta ","Xgamma", "Xalpha", "Xdelta")
Простая регрессия с первой независимой переменной Xbeta
будет выглядеть так lm(fit~Xbeta, data= sample_data)
, и я хотел бы запустить регрессию для каждой переменной, начинающейся с «X», а затем сохранить результат (оценку, значение p).
Я нашел код, который позволяет я выбираю переменные, начинающиеся с "X", а затем использую их для модели, но код выдает мне ошибку начиная с mutate()
(обозначено #
).
library(tidyverse)
library(tsibble)
sample_data %>%
gather(stock, return, starts_with("X")) %>%
group_nest(stock)
# %>%
# mutate(model = map(data,
# ~lm(formula = "fit~ return",
# data = .x))
# ),
# resid = map(model, residuals)
# ) %>%
# unnest(c(data,resid)) %>%
# summarise(sd_residual = sd(resid))
Для последующего сохранения результаты регрессии я также нашел следующую оценку с использованием пакета R "broom": r для l oop для регрессии lm (y ~ x)
sample_data%>%
group_by(y,x)%>% # get combinations of y and x to regress
do(tidy(lm(fRS_relative~xvalue, data=.)))
Но я всегда получить ошибку для group_by()
и do()
Я очень благодарен за вашу помощь!