簡體   English   中英

模型中的R缺失水平

[英]R missing levels in a model.matrix

我正在嘗試將具有分類變量的數據框轉換為model.matrix,但正在丟失變量級別。

這是我的代碼:

df1 <- data.frame(id = 1:200, y =rbinom(200, 1, .5),  var1 = factor(rep(c('abc','def','ghi','jkl'),50)))
df1$var2 <- factor(rep(c('ab c','ghi','jkl','def'),50))
df1$var3 <- factor(rep(c('abc','ghi','nop','xyz'),50))

df1$var2 <- as.character(df1$var2)
df1$var2 <- gsub('\\s','',df1$var2)
df1$var2 <- factor(df1$var2)
sapply(df1, levels)

mm1 <- model.matrix(~ 0+.,df1)
head(mm1)

有什么建議么? 這是矩陣不可逆的問題嗎?

模型矩陣是完全正確的。 對於因子,模型矩陣所包含的列比不包含因子的列少:該信息已包含在(Intercept)列中。 您缺少此列,因為您在模型項中指定了+0 嘗試這個:

mm2 <- model.matrix(~., df1)
head(mm2)

現在,您將看到(Intercept)列,該列編碼“默認”信息,並且現在列名中也缺少var1的第一級。 (Intercept)代表您在“參考級別”的觀察,這是每個分類屬性的第一級別的組合。 與此參考水平的任何偏差都編碼為var*??? 列,並且由於您的模型假設這些列之間沒有任何交互,因此得到(4-1)* 3 var*??? 列加上(Intercept)列(在初始模型矩陣中已由var1abc替換)。

不幸的是,我缺乏確切的術語來描述。 有人幫我嗎?

暫無
暫無

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

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