如何在 R 中创建一个循环,将回归摘要导出到 Excel 中的新工作表?

问题描述

我是 R 的新手,我的第一个实习任务是交给我。

我必须获取附加数据并进行 18 个月(以周为单位)的回归,从 2007 年到现在,以每个月为起点进行回归。 (例如,第一个是 Jan-2007 -> Jun2008,然后是 Feb2007 -> Jul2008 等)

我附上了我的数据 enter image description here 的图像,并且我一直在使用 R 来尝试自动化该过程,因为在 excel 中手动执行它会花费太长时间。 我在网上冲浪,很好地将摘要导出到 excel。 我的问题是我想创建一个循环,以便我可以在当前日期之前多次执行这些回归,并为每个回归创建一个新工作表。

有没有办法做到这一点?我很抱歉我的无知,但我对 R 不太熟悉,但我想做好我的第一个任务。 感谢您的投入,谢谢。

代码

lmx <- function(res,file="test.csv",ndigit=3,writecsv=T) {
  if (length(grep("summary",class(res)))==0) res <- summary(res)
  co <- res$coefficients
  nvar <- nrow(co)
  ncoll <- ncol(co)
  f <- res$fstatistic
  formatter <- function(x) format(round(x,ndigit),nsmall=ndigit)
  nstats <- 4
  G <- matrix("",nrow=(nvar+nstats),ncol=(ncoll+1))
  G[1,1] <- toString(res$call)
  G[(nstats+1):(nvar+nstats),1] <- rownames(co)
  G[nstats,2:(ncoll+1)] <- colnames(co)
  
  G[(nstats+1):(nvar+nstats),2:(ncoll+1)] <- formatter(co)
  G[1,2] <- paste("F(",f[2],",f[3],")")
  G[2,2] <- formatter(f[1])
  G[1,3] <- "Prob > P"
  G[2,3] <- formatter(1-pf(f[1],f[3]))
  G[1,4] <- "R-Squared"
  G[2,4] <- formatter(res$r.squared)
  G[1,5] <- "Adj-R2"
  G[2,5] <- formatter(res$adj.r.squared)
  print(G)
  write.csv(G,file=file,row.names=F)
}
Regression_Data <- cbind(rownames(Regression_Data),Regression_Data)
rownames(Regression_Data) <- NULL
colnames(Regression_Data) <- c('num','z','y','x1','x2','x3','x4','x5')
i=1

Reg <-lm(y~x1+x2+x3+x4+x5,data=subset(Regression_Data[i:(i+72),]) )

lmx(summary(Reg),file="my-results.csv")
i= i+4
summary(Reg)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)