【发布时间】:2020-01-21 23:05:11
【问题描述】:
我正在尝试使用 data.table、lapply 和函数调用来针对同一个变量运行多个回归。我想得到一个简单的表格作为输出,显示每个变量和每个变量的决定系数。
我正在使用 Rstudio 1.2.1335,data.table 1.12.2 我使用的数据集是“http://users.stat.ufl.edu/~rrandles/sta4210/Rclassnotes/data/textdatasets/KutnerData/Appendix%20C%20Data%20Sets/APPENC02.txt”
cnames<-c("ID","County","State","Area","Pop","Young","Old","Phys","Beds","Crime","HighSchool","BA","Poverty","Unemploy","PerCapitaIncome","TotalIncome","Region")
df62<-fread("APPENC02.txt", col.names=cnames)
df62[,c("ID", "County","State","Region"):=NULL]
variability<-function(y){
model<-eval(substitute(lm(Phys~y, data=df62)))
anova<-anova(model)
SSR<- anova$`Sum Sq`[1]
SSE<- anova$`Sum Sq`[2]
SSTO<-SSR+SSE
R2<-SSR/SSTO
return(R2)
}
df62[ , lapply(.SD, variability)]
如果最后一行是:
df62[ , lapply(.SD, Variability), by=Phys]
当我省略 'by' 子句时出现错误消息:“(function(x, i, 精确) if (is.matrix(i)) as.matrix(x)[[i]] else .subset2(x, : object '我'没有找到”
如果我按变量“Phys”分组,我会得到正确的结果,但我会不必要地重复每个结果。
【问题讨论】:
-
您能否说明使用
eval(substitute())有什么好处? -
所以澄清一下,你想做 13 种不同的回归,其中 Phys 是因变量,而所有其他数值变量都是独立的?
-
是 - 13 种不同的 Phys 回归是因变量。
-
eval(substitute()) 便于在函数中使用变量名。我的想法来自adv-r.had.co.nz/Computing-on-the-language.html
标签: r data.table lapply