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