Как регрессировать список ковариат с желаемым предиктором и зависимой переменной и вернуть таблицу коэффициентов и p-значений с использованием lme и lmer

#r #dplyr #lapply #lm

#r #dplyr #лапли #лм

Вопрос:

У меня есть набор данных с довольно большим количеством переменных. В наборе данных у меня есть предиктор и переменная результата, которую я хочу исследовать. Я хочу найти ковариаты либо со значительным влиянием на переменную результата, либо со значительным эффектом взаимодействия между предиктором и ковариацией на переменную результата.

Поэтому было бы удобно иметь возможность регрессировать все ковариаты по очереди с желаемым предиктором для зависимой переменной и создать таблицу эффектов и эффектов взаимодействия ковариат с их соответствующими значениями p.

Я хочу сделать что-то вроде этого:

 library(dplyr)  # Generating sample data set.seed(5) df lt;- data.frame(matrix(round(abs(2*rnorm(100*100)), digits = 0), ncol=100))  # Selecting covariates covar lt;- names(df)[! names(df) %in% c("X1", "X2")]  # Running the lm function over the list of covariates. I should get the covariate coefficients from each regression, but I get an error when I try run this step.  coeff lt;- lapply(covar, function(x){  # Retrive coefficient matrix  summary(lm(X1 ~ X2   x   X2*x, df))$coefficients %gt;%  # Coerce into dataframe and filter for covariates and interaction effects  as.data.frame(.) %gt;%  filter(row.names(.) %in% grep(x, rownames(.), value =   TRUE))}) %gt;% # Finally I want to join all data frames into one  bind_rows(.)  

Мне бы не помешала помощь с синтаксисом. При попытке запустить функцию я получаю следующую ошибку:

 Error in h(simpleError(msg, call)): error in evaluating the argument 'object' in selecting a method for function 'summary': variable lengths differ (found for 'x')  

Ответ №1:

Когда вы используете x lapply ) внутри function , возможно, было бы лучше использовать paste для формулы модели, а не просто указывать ее формулу.

 lapply(covar, function(x){   modd lt;- paste0("X1 ~ X2  ", x, "  X2 *", x)  summary(lm(modd, df))$coefficients %gt;%   as.data.frame(.) %gt;%  filter(row.names(.) %in% grep(x, rownames(.), value =   TRUE))}) %gt;%  bind_rows(.)