在R回归中获取预测变量名称

9

我有一段R代码,正在运行大约100个回归模型,获取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 循环以打印预测变量的名称。

3个回答

13

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

#  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
这应该是被接受的答案。它排除了拦截器并获取虚拟预测变量的父分类变量。 - John F

5
您只需要使用名称,即:
names(RRSub.LR$coefficients)

并且

length(names(RRSub.LR$coefficients))

注意,这将包括截距项(如果您有任何的话),但是如果您愿意,很容易将其删除。


0

如果你想把它作为一个公式字符串,可以这样做:

alias(mod)$Model
Y ~ Variable1 + Variable2 + Variable3 + ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接