회귀 모델을 실행하는 동안 데이터 테이블의 힘을 사용하는 방법을 찾기 위해 고군분투하고 있습니다.
다음은 단순화 된 작업 사례입니다.
# given a data table containing desired variables
MyVarb <- data.table(Y=rnorm(100),
V1=rnorm(100),
V2=rnorm(100))
# given a new data table containing a series of formulas/equations in a column
DT <- data.table(eq=c("Y ~ V1", "Y ~ V2", "Y ~ V1 + V2"))
# I store the linear regression models in a second column
DT[, "models" := lapply(eq, function(i) lm(i, data=MyVarb))]
# Now, I can access the coefficients of a model (e.g. the 3rd one) like:
DT[3, models][[1]]$coefficients
(Intercept) V1 V2
-0.01583034 0.08284029 0.01630247
그러나 다른 방법이 있는지 궁금합니다. 이것은 원하는대로 작동하지 않습니다.
DT[, "trial" := lm(eq, data=MyVarb)]
# ***sorry for my bad understanding of data tables and objects***
호기심이 많고 수천 개의 모델을 실행하고 싶고 더 많은 변수가 있으므로 lapply
데이터 테이블 내부를 사용하는 데 시간이 많이 걸립니다 DT
(PC에서 몇 시간 후 8Gb RAM이 부족합니다 ...) . 더 빨리 코딩하는 방법이 있습니까?
당신의 친절한 도움에 감사드립니다.
계수, p- 값 및 AIC 만 필요하면 불필요한 비트의 lm 객체를 저장하는 메모리를 사용하지 않고 작동합니다.
MyVarb <- data.table(Y=rnorm(100),
V1=rnorm(100),
V2=rnorm(100))
eq=c("Y ~ V1", "Y ~ V2", "Y ~ V1 + V2")
DT<-rbindlist(lapply(eq, function(mod) {
reg<-lm(mod, data=MyVarb)
dt<-data.table(summary(reg)$coefficients)
dt[,coef:=row.names(summary(reg)$coefficients)]
dt[,aic:=AIC(reg)]
dt[,model:=mod]
}))
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다