【问题标题】:Use a loop to run many regressions at once使用循环一次运行多个回归
【发布时间】:2015-02-10 14:25:23
【问题描述】:

我有一个包含 147 列的数据集,每列有 7 行。我想使用每一列进行单独的回归分析。

fit = nls(DD$X1, ~ (1/(1+k*xValues)),start=list(k=k))

解释:

DD 是数据集:它是一个数据框)级别是“X1”、“X2”等。

xValues = c(1,2,7,14,30,180,720)

k 是我要确定的参数)

但我想循环执行,例如接下来要花 2 美元,... 一直到 147 美元。 一路上我想存储适合的值。

我是 r 的新手:有人可以建议如何做到这一点吗?非常感谢。

【问题讨论】:

  • 要么编写一个循环,每次通过 list 变量 fit[[j]]<-nls(DD[[j]]....) 分配结果,要么使用 ?sapply 做同样的事情。如果您无法编写for 循环,请阅读所有 CRAN 镜像中的R-intro PDF 文档。
  • 您也可以为此使用data.tablelibrary(data.table) ; Res <- setDT(DD)[, list(lapply(.SD, function(x) nls(x ~ (1/(1+k*xValues)), start=list(k=k))))] 之类的东西将存储您的结果,为了查看它们,请执行 Res[, lapply(V1, print)]

标签: r loops


【解决方案1】:

我在这里使用 BodyFat 数据集。您必须替换数据集文件名,并为响应和解释变量分配适当的列。

formu <-function(a,lis)
{
 k=""
 k= paste(a,'~',sep="")
 h=do.call("paste", c(lis, sep = "+"))
 formula1= paste(k,h,sep="")
 return(formula1) 
}

results=list()
dat = read.table("BodyFatPercentage.txt",header=TRUE)
g=names(dat)
target=names(dat)[2:2]
print(target)
expla=names(dat)[3:16]
for(i in 1:length(expla))
{
 formula1=formu(target,list(expla[i]))
 model1=lm(formula1,dat)
 print(model1)
 results[i] = model1
}
print results

【讨论】:

    猜你喜欢
    • 2021-02-18
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-31
    • 2017-09-13
    • 1970-01-01
    相关资源
    最近更新 更多