簡體   English   中英

在 R 回歸中獲取預測變量名稱

[英]getting predictor names in R regression

我有一個運行大約 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 循環來打印預測器名稱。

您可以像這樣提取預測項:

#  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"

你只需要使用名稱,即

names(RRSub.LR$coefficients)

length(names(RRSub.LR$coefficients))

請注意,這將包括攔截項(如果有的話),但如果您願意,很容易刪除它。

如果你想要它作為一個formula字符串,你可以這樣做:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM