2015-11-23 22 views
1

當R使用分類變量執行迴歸時,它實際上是虛擬編碼。也就是說,其中一個等級被忽略作爲基準或參考,並且迴歸公式包括所有其他等級的虛擬變量。但是哪一個呢,R選擇作爲參考,以及我如何影響這個選擇?R中的分類變量 - R選擇哪一個作爲參考?

具有四個電平(從UCLA's IDRE)實施例的數據:

hsb2 <- read.csv("http://www.ats.ucla.edu/stat/data/hsb2.csv") 

summary(lm(write ~ factor(race), data = hsb2)) 
# level 1 is the reference level 

hsb2.ordered <- hsb2[rev(order(hsb2$race)),] 

summary(lm(write ~ factor(race), data = hsb2.ordered)) 
# level 1 is still the reference level 

回答

4

因子水平的中的R所做的順序取決於數據的數量級上。因此,改變數據的順序不會影響因子的參考水平。

您可以用功能levels獲得級別的順序:

fac <- factor(hsb2$race) 
levels(fac) 
# [1] "1" "2" "3" "4" 

因子水平的順序是基於數據的字母順序。

您可以用relevel功能恰克參考電平:

fac2 <- relevel(fac, ref = "2") 
levels(fac2) 
# [1] "2" "1" "3" "4" 

現在,"2"水平落在基準水平。這也影響了迴歸:

lm(write ~ fac2, data = hsb2) 
# 
# Call: 
# lm(formula = write ~ fac2, data = hsb2) 
# 
# Coefficients: 
# (Intercept)  fac21  fac23  fac24 
#  58.000  -11.542  -9.800  -3.945 

功能factor允許創建因子水平的任何順序:

fac3 <- factor(fac, levels = c("3", "4", "2", "1")) 
levels(fac3) 
# [1] "3" "4" "2" "1"