我想获取线性回归系数和R平方表。 在第一列中:我有时间列,在其他列中有我要分别与第一列回归的序列。
modele <- function(data, x) {
modele.ex <- formula(paste(colnames(data)[1],colnames(data)[2:length(data)],sep="~"))
modele.ex
tab <- coefficients(lm(modele.ex,data=data))
return(data.frame(tab))
}
tab_res <- apply(data, 2, modele)
答案 0 :(得分:1)
更正了您的函数以返回多元线性回归:
modele <- function(data, x)lm(formula(paste(colnames(data)[1],paste(colnames(data)[2:length(data)], collapse="+"),sep="~")), data)
mod <- modele(iris)
data.frame(t(coef(mod)), summary(mod)$r.sq)
# X.Intercept. Sepal.Width Petal.Length Petal.Width Speciesversicolor Speciesvirginica summary.mod..r.sq
# 1 2.171266 0.4958889 0.8292439 -0.3151552 -0.723562 -1.023498 0.8673123
要对每个因变量进行回归,最好先将因变量写为向量,然后编写两个小函数以获取模型和coef + r.sq:
dependent.variable <- colnames(iris[2:length(data)])
modele2 <- function(data, x)lm(formula(paste(colnames(data)[1], x, sep="~")), data)
output <- function(mod) data.frame(t(coef(mod)), summary(mod)$r.sq)
library(plyr)
all.mods <-lapply(dependent.variable, function(x)modele2(iris, x))
ldply(all.mods, output)
# X.Intercept. Sepal.Width summary.mod..r.sq Petal.Length Petal.Width Speciesversicolor Speciesvirginica
# 1 6.526223 -0.2233611 0.01382265 NA NA NA NA
# 2 4.306603 NA 0.75995465 0.4089223 NA NA NA
# 3 4.777629 NA 0.66902769 NA 0.8885803 NA NA
# 4 5.006000 NA 0.61870573 NA NA 0.93 1.582