Как запустить модель с переменными из разных фреймов данных несколько раз с lapply в R

У меня 2 фрейма данных

#dummy df for examples: set.seed(1) df1 <- data.frame(t = (1:16), A = sample(20, 16), B = sample(30, 16), C = sample(30, 16)) df2 <- data.frame(t = (1:16), A = sample(20, 16), B = sample(30, 16), C = sample(30, 16))

Я хочу сделать это для каждого столбца в обоих фреймах данных (кроме столбца t):

model <- lm(df2$A ~ df1$A, data = NULL)

Я пробовал что-то вроде этого:

model <- function(yvar, xvar){ lm(df1$as.name(yvar) ~ df2$as.name(xvar), data = NULL) } lapply(names(data), model)

но это явно не работает. Что я делаю неправильно?

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

результат, который мне нужен, я думаю, он должен выглядеть примерно так:

# [[1]] # Call: # lm(df1$as.name(yvar) ~ df2$as.name(xvar), data = NULL) # # Residuals: # Min 1Q Median 3Q Max # -0.8809 -0.2318 0.1657 0.3787 0.5533 # # Coefficients: # Estimate Std. Error t value Pr(>|t|) # (Intercept) -0.013981 0.169805 -0.082 0.936 # predmodex[, 2] 1.000143 0.002357 424.351 <2e-16 *** # — # Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # # Residual standard error: 0.4584 on 14 degrees of freedom # Multiple R-squared: 0.9999, Adjusted R-squared: 0.9999 # F-statistic: 1.801e+05 on 1 and 14 DF, p-value: < 2.2e-16 # # [[2]] # Call: # lm(df1$as.name(yvar) ~ df2$as.name(xvar), data = NULL) # # Residuals: # Min 1Q Median 3Q Max # -0.8809 -0.2318 0.1657 0.3787 0.5533 # # Coefficients: # Estimate Std. Error t value Pr(>|t|) # (Intercept) -0.013981 0.169805 -0.082 0.936 # predmodex[, 2] 1.000143 0.002357 424.351 <2e-16 *** # — # Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # # Residual standard error: 0.4584 on 14 degrees of freedom # Multiple R-squared: 0.9999, Adjusted R-squared: 0.9999 # F-statistic: 1.801e+05 on 1 and 14 DF, p-value: < 2.2e-16 # # [[3]] # Call: # lm(df1$as.name(yvar) ~ df2$as.name(xvar), data = NULL) # # Residuals: # Min 1Q Median 3Q Max # -0.8809 -0.2318 0.1657 0.3787 0.5533 # # Coefficients: # Estimate Std. Error t value Pr(>|t|) # (Intercept) -0.013981 0.169805 -0.082 0.936 # predmodex[, 2] 1.000143 0.002357 424.351 <2e-16 *** # — # Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # # Residual standard error: 0.4584 on 14 degrees of freedom # Multiple R-squared: 0.9999, Adjusted R-squared: 0.9999 # F-statistic: 1.801e+05 on 1 and 14 DF, p-value: < 2.2e-16

Отвечает ли это на ваш вопрос? Подбор нескольких регрессионных моделей путем изменения только одной независимой переменной внутри mutate ()   —  person Simón Pérez    schedule 22.04.2021

@jared_mamrot Думаю, я мог бы адаптировать часть этого поста к тому, что я хотел. Но я думаю, что цель этого поста отличалась от моей, поэтому я скажу, что он не отвечает на мой вопрос. Также я хотел сделать это с lapply. Как вы можете видеть из ответа @Ronak Shah, то, что я хотел, было довольно простым. Спасибо за предложение.   —  person Simón Pérez    schedule 22.04.2021

Великолепно — спасибо за разъяснения   —  person Simón Pérez    schedule 23.04.2021

Источник: ledsshop.ru

Стиль жизни - Здоровье!