7

我有一个运行大约 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 文件中的系数。

我的问题是:

  1. 任何 R 函数调用来获取预测变量的名称(不是系数值,我知道如何获取它们)?

  2. 有什么方法可以得到模型中使用了多少预测变量?我将使用这个值来编写一个 for 循环来打印预测器名称。

4

3 回答 3

9

您可以像这样提取预测项:

#  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"
于 2013-05-23T22:13:04.257 回答
4

您只需要使用名称,即

names(RRSub.LR$coefficients)

length(names(RRSub.LR$coefficients))

请注意,这将包括拦截术语(如果您有的话),但如果您愿意,可以很容易地删除它。

于 2013-05-23T22:12:35.080 回答
0

如果你想要它作为一个formula字符串,你可以这样做:

alias(mod)$Model
Y ~ Variable1 + Variable2 + Variable3 + ...
于 2020-02-11T22:10:23.263 回答