簡體   English   中英

根據R中的多元回歸中的變量從lm()中提取R2的列表

[英]Extracting a list of R2 from within lm() based on variable in multiple regression in R

我已經使用lm()對R中的數據集進行了多元回歸分析,並且能夠使用下面的函數提取一年中每一天的系數。 我還想提取一年中每一天的R2,但這似乎不能以相同的方式起作用。

這幾乎與以下問題相同: 為所有與lmList擬合的模型打印R平方,但是當我嘗試這樣做時,我得到“錯誤:$運算符對原子向量無效”。 如果可能,我還希望將其包含在同一函數中。 如何以這種方式為每個doy提取R2?

#Create MR function for extracting coefficients
getCoef <- function(df) {
  coefs <- lm(y ~ T + P + L + T * L + P * L, data = df)$coef
  names(coefs) <- c("intercept", "T", "P", "L", "T_L", "P_L")
  coefs
}

#Extract coefficients for each doy
coefs.MR_uM <- ddply(MR_uM, ~ doy, getCoef)```

點是r.squared存儲在summary(lm(...))而不是lm(...) 這是提取R2的函數的另一個版本:

library(plyr)
df <- iris
#Create MR function for extracting coefficients and R2
getCoef <- function(df) {
        model <- lm(Sepal.Length ~ Sepal.Width + Petal.Length + Petal.Width, data = df)
        coefs <- model$coef
        names(coefs) <- c("intercept", "Sepal.Width", "Petal.Length", "Petal.Width")
        R2 <- summary(model)$r.squared
        names(R2) <- c("R2")
        c(coefs, R2)
}
#Extract coefficients and R2 for each Species
coefs.MR_uM <- ddply(df, ~ Species, getCoef)
coefs.MR_uM # output
     Species intercept Sepal.Width Petal.Length Petal.Width        R2
1     setosa  2.351890   0.6548350    0.2375602   0.2521257 0.5751375
2 versicolor  1.895540   0.3868576    0.9083370  -0.6792238 0.6050314
3  virginica  0.699883   0.3303370    0.9455356  -0.1697527 0.7652193

根據Parfait的建議,您不需要plyr::ddply() ,可以使用do.call(rbind, by(df, df$Species, getCoef))

希望這可以幫助 !

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM