R 如何在不键入每个变量名的情况下对一系列变量进行回归
我想用数据集中的一组自变量来运行回归。有很多预测因素,所以我不想把它们都写出来。是否有一个符号可以跨越多个列,这样我就不必键入每一列 我的尝试是这样做的(我的预测值是第20列到第43列):R 如何在不键入每个变量名的情况下对一系列变量进行回归,r,R,我想用数据集中的一组自变量来运行回归。有很多预测因素,所以我不想把它们都写出来。是否有一个符号可以跨越多个列,这样我就不必键入每一列 我的尝试是这样做的(我的预测值是第20列到第43列): 显然,这不起作用,因为HHdata[,20:43]是一个数据矩阵,而我确实需要它将数据视为HHdata[,20]+HHdata[,21]等。首先通过粘贴列名生成公式 f <- as.formula(paste('garisktot ~', paste(colnames(HHdata)[20:43], c
显然,这不起作用,因为
HHdata[,20:43]
是一个数据矩阵,而我确实需要它将数据视为HHdata[,20]+HHdata[,21]
等。首先通过粘贴列名生成公式
f <- as.formula(paste('garisktot ~', paste(colnames(HHdata)[20:43], collapse='+')))
modelAllHexSubscales <- lm(f, HHdata)
f这里是另一种选择:
# if garisktot is in columns 20:43
modelAllHexSubscales <- lm(garisktot ~ ., data=HHdata[,20:43])
# if it isn't
modelData <- data.frame(HHdata["garisktot"],HHdata[,20:43])
modelAllHexSubscales <- lm(garisktot ~ ., data=modelData)
#如果garisktot在第20:43列中
modelAllHexSubscales您是否尝试过直接使用它,如
> y
[1] 10 19 30 42 51 59 72 78
> X
[,1] [,2]
[1,] 1 1.0
[2,] 2 3.0
[3,] 3 5.5
[4,] 4 7.0
[5,] 5 9.0
[6,] 6 11.0
[7,] 7 13.0
[8,] 8 16.0
> summary(lm(y ~ X))
Call:
lm(formula = y ~ X)
Residuals:
1 2 3 4 5 6 7 8
-0.1396 -1.2774 0.9094 1.4472 0.3094 -1.8283 1.0340 -0.4547
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.647 2.004 -1.321 0.24366
X1 15.436 3.177 4.859 0.00464 **
X2 -2.649 1.535 -1.726 0.14490
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.363 on 5 degrees of freedom
Multiple R-squared: 0.9978, Adjusted R-squared: 0.9969
F-statistic: 1124 on 2 and 5 DF, p-value: 2.32e-07
@乔舒亚-很好!我假设第一个[]
中的FALSE可以防止生成的对象折叠成向量?@Chase:yes,这是保留列名所必需的。如果只想从data.frame
中提取列,则不需要coma:HHdata[20:43]
或HHdata[“garisktot”]
(您不需要drop=FALSE
)一个线性版本的ModelAllHexSubscale可能很有趣:我昨天刚刚了解到,如果包含转换,将公式构建为字符串,然后转换为公式的技巧也会起作用。例如,在上面的示例中,将colnames(HHdata)[20:43]
替换为sapply(colnames(HHdata)[20:43],函数(cc){gsub(“X”,cc,“I(X^2)”,fixed=TRUE)}
。除非使用“I()”
,否则会产生误导性的统计输出。了解如何使用poly
poly
,反过来,如果缺少值,则不起作用,除非使用raw=TRUE
——但对我来说,结果是这样的(或者你所说的输出是什么意思?)。
> y
[1] 10 19 30 42 51 59 72 78
> X
[,1] [,2]
[1,] 1 1.0
[2,] 2 3.0
[3,] 3 5.5
[4,] 4 7.0
[5,] 5 9.0
[6,] 6 11.0
[7,] 7 13.0
[8,] 8 16.0
> summary(lm(y ~ X))
Call:
lm(formula = y ~ X)
Residuals:
1 2 3 4 5 6 7 8
-0.1396 -1.2774 0.9094 1.4472 0.3094 -1.8283 1.0340 -0.4547
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.647 2.004 -1.321 0.24366
X1 15.436 3.177 4.859 0.00464 **
X2 -2.649 1.535 -1.726 0.14490
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.363 on 5 degrees of freedom
Multiple R-squared: 0.9978, Adjusted R-squared: 0.9969
F-statistic: 1124 on 2 and 5 DF, p-value: 2.32e-07