[英]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.