【问题标题】:Problem with apply after having created a function创建函数后应用问题
【发布时间】:2019-08-17 16:05:17
【问题描述】:

我想在表格中检索线性回归的系数和 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)

【问题讨论】:

  • 那么你的问题是什么?我们没有您的data,看不到输出(也没有任何错误/警告,如果存在),也不知道您希望看到什么。你能编辑你的问题吗?明确的样本数据通常最好使用dput(head(x))data.frame(...)。谢谢!

标签: r for-loop apply


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-05
    • 2019-03-04
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    相关资源
    最近更新 更多