运行回归

时间:2018-06-04 00:08:39

标签: r dataframe

背景:我的数据集有52行12列(假设列名为A - L),我的数据集名称为foo

我被告知运行回归,其中foo$L是因变量,除foo$K外,所有其他变量都是独立的。

我这样做的方式是

fit <- lm(foo$L ~ foo$a + ... +foo$J) 

然后调用

summary(fit)

我的方式是运行回归并找到拦截和系数的好方法吗?

2 个答案:

答案 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