背景:我的数据集有52行12列(假设列名为A
- L
),我的数据集名称为foo
我被告知运行回归,其中foo$L
是因变量,除foo$K
外,所有其他变量都是独立的。
我这样做的方式是
fit <- lm(foo$L ~ foo$a + ... +foo$J)
然后调用
summary(fit)
我的方式是运行回归并找到拦截和系数的好方法吗?
答案 0 :(得分:3)
将data
参数用于lm
,这样您就不必为每个预测变量使用foo$
语法。使用dependent ~ .
作为公式,使所有其他变量预测因变量。然后,您可以使用- K
排除K
:
data_mat = matrix(rnorm(52 * 12), nrow = 52)
df = as.data.frame(data_mat)
colnames(df) = LETTERS[1:12]
lm(L ~ . - K, data = df)
答案 1 :(得分:0)
您可以先删除列K
,然后执行fit <- lm(L ~ ., data = foo)
。这会将L
列视为因变量,将所有其他列视为自变量。您不必在公式中指定每个列名称。
以下是使用mtcars
的示例,将多元回归模型拟合到mpg
以及除carb
之外的所有其他变量。
mtcars2 <- mtcars[, !names(mtcars) %in% "carb"]
fit <- lm(mpg ~ ., data = mtcars2)
summary(fit)
# Call:
# lm(formula = mpg ~ ., data = mtcars2)
#
# Residuals:
# Min 1Q Median 3Q Max
# -3.3038 -1.6964 -0.1796 1.1802 4.7245
#
# Coefficients:
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) 12.83084 18.18671 0.706 0.48790
# cyl -0.16881 0.99544 -0.170 0.86689
# disp 0.01623 0.01290 1.259 0.22137
# hp -0.02424 0.01811 -1.339 0.19428
# drat 0.70590 1.56553 0.451 0.65647
# wt -4.03214 1.33252 -3.026 0.00621 **
# qsec 0.86829 0.68874 1.261 0.22063
# vs 0.36470 2.05009 0.178 0.86043
# am 2.55093 2.00826 1.270 0.21728
# gear 0.50294 1.32287 0.380 0.70745
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
# Residual standard error: 2.593 on 22 degrees of freedom
# Multiple R-squared: 0.8687, Adjusted R-squared: 0.8149
# F-statistic: 16.17 on 9 and 22 DF, p-value: 9.244e-08