繁体   English   中英

使数据帧或等级调整为R平方 - R.

[英]Make dataframe or rank adjusted R-squared - R

这个问题基本上是我之前问过的一个问题: 如何只打印(调整)回归模型的R平方?

我想建立一个线性回归模型来预测150个潜在预测因子的浓度。 我想执行手动逐步前进程序。 数据集看起来或多或少像这样:

df = data.frame(
Site = c("A", "B", "C", "D"),
Concentration = c(2983, 9848, 2894, 8384),
Var1 = c(12, 23, 34, 45),
Var2 = c(23, 34, 45, 56))

我使用以下代码为每个可能的预测器制作单变量模型,并检查调整后的R平方。

for (j in names(df)){
model <- lm(Concentration ~ df[[j]], data = df)
print(j)
print(summary(model)$adj.r.squared)

[1] "site"
  r.squared adj.r.squared
1 0.02132635    -0.9573473

然而,检查150个变量的调整后的R平方需要做很多工作。

是否可以使用所有调整后的R平方值和每个相应的变量名来生成数据帧?

或者对调整后的R平方值进行排名,因此最高值是第一个(和相应的变量名称一起打印)?

我很想知道这样的事情是否可行。 这对我有很大的帮助。

提前致谢!

您可以将结果保存到矩阵中,然后打印此矩阵。 首先,您创建一个新矩阵

adj.r.mat   <- matrix(, nrow = length(names(df)), 
                        ncol = 2)
               colnames(adj.r.mat) <- c("Name Var", "Adj.R")

然后在此矩阵中保存您感兴趣的值

for (j in 1:length(names(df))){
model <- lm(Concentration ~ df[[j]], data = df)
adj.r.mat[j,1] <- names(df)[j]
adj.r.mat[j,2] <- summary(model)$adj.r.squared
}

最后你打印它

print(adj.r.mat)

如果您不想要2个第一个变量,则可以在3处开始循环。

for (j in 3:length(names(df))){
model <- lm(Concentration ~ df[[j]], data = df)
adj.r.mat[j,1] <- names(df)[j]
adj.r.mat[j,2] <- summary(model)$adj.r.squared
}

然后在打印矩阵时排除第2行

print(adj.r.mat[-c(1,2),])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM