基于R中多元回归中的变量从lm()中提取R2列表
我使用lm()对R中的一个数据集进行了多元回归分析,我能够使用下面的函数提取一年中每一天的系数。我还想为一年中的每一天提取R2,但这似乎不是以同样的方式工作 这与以下问题几乎相同: 但当我尝试这个方法时,我得到“Error:$operator对原子向量无效”。如果可能的话,我也希望将其包含在相同的函数中。如何以这种方式提取每个doy的R2基于R中多元回归中的变量从lm()中提取R2列表,r,regression,R,Regression,我使用lm()对R中的一个数据集进行了多元回归分析,我能够使用下面的函数提取一年中每一天的系数。我还想为一年中的每一天提取R2,但这似乎不是以同样的方式工作 这与以下问题几乎相同: 但当我尝试这个方法时,我得到“Error:$operator对原子向量无效”。如果可能的话,我也希望将其包含在相同的函数中。如何以这种方式提取每个doy的R2 #Create MR function for extracting coefficients getCoef <- function(df) {
#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)```
#创建提取系数的MR函数
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
库(plyr)
df您的R2提取尝试在哪里?您不需要包,因为by
+do.call
可以产生类似的(矩阵)结果:do.call(rbind,by(df,df$Species,getCoef))
谢谢@ANG。正是我想要的。