У меня 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
Поскольку
df1
иdf2
имеют одинаковые имена, вы можете сделать это следующим образом:Чтобы получить сводную статистику модели, вы можете использовать
broom::tidy
:о, чувак, так просто !, я был так близко, еще несколько дней, и я бы там оказался, ха-ха. Большое спасибо, это именно то, что я пытался сделать. Извините, я недостаточно крут, чтобы проголосовать за вас. — person Simón Pérez; 22.04.2021