簡體   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