我有一个运行大约100个回归模型的R代码,抓取R ^ 2值并将它们打印到csv文件,如下所示:
filename<-"Reg_Results.csv";
cat("Setting,Origin Region,Destination Region,R^2\n",file=filename,append=FALSE);
for(setting in seq(from=1,to=3,by=1)) {
for(i in seq(from=1,to=7,by=1)) {
for(j in seq(from=1,to=7,by=1)) {
RRSub<-subset(RR,ORegion==ORegions[i]&DRegion==DRegions[j]);
if(nrow(RRSub)>1){
if(setting==1)
RRSub.LR <- lm(formula=Rev.per.Unit~RRs+Own+Miles+Category+STCC2.Description,data=RRSub);
if(setting==2)
RRSub.LR <- lm(formula=Rev.per.Unit~RRs+Own+Miles+Category+STCC5.Description,data=RRSub);
if(setting==3)
RRSub.LR <- lm(formula=Rev.per.Unit~RRs+Own+Miles+Category+STCC5.Description+OCity+DCity,data=RRSub);
cat(setting,file=filename,append=TRUE);
cat(",",file=filename,append=TRUE);
cat(ORegions[i],file=filename,append=TRUE);
cat(",",file=filename,append=TRUE);
cat(DRegions[j],file=filename,append=TRUE);
cat(",",file=filename,append=TRUE);
cat(summary(RRSub.LR)$r.squared,file=filename,append=TRUE);
cat("\n",file=filename,append=TRUE);
}
}
}
}
我的目标是打印预测变量的名称(因为它们在每个回归模型中由于定性预测因子而不同),并且它们的系数在相同的.csv文件中。
我的问题是:
任何R函数调用获取预测变量的名称(不是系数值,我知道如何获取它们)?
有什么方法可以获得模型中使用了多少个预测变量?我将使用此值来编写for循环以打印预测变量名称。
答案 0 :(得分:2)
您可以像这样提取预测词:
# Dummy model with made-up data
mod <- lm( y ~ x + z , data = df )
# Return character vector with predictor terms
attr(mod$terms , "term.labels")
# [1] "x" "z"
这也适用于更复杂的模型
mod <- lm( y ~ x + z + I(x^2) + x:z , data = df )
attr(mod$terms , "term.labels")
# [1] "x" "z" "I(x^2)" "x:z"
答案 1 :(得分:1)
你只需要使用名字,即
names(RRSub.LR$coefficients)
和
length(names(RRSub.LR$coefficients))
请注意,这将包括拦截术语(如果你有的话),但如果你愿意,可以轻松删除它。
答案 2 :(得分:0)
如果您希望将其作为formula
字符串,则可以执行以下操作:
alias(mod)$Model
Y ~ Variable1 + Variable2 + Variable3 + ...