[英]Displaying of factor levels and labels in R
使用MICE后顯示正確的因子變量分組時出現問題。 我相信這是R的事情,但是為了確定起見,我將它包括在小鼠中。
因此,我運行了鼠標算法,這是我所謂的在鼠標算法中對其進行格式化的方式。 請注意,我希望無葯時為0,有葯時為1,因此在運行之前我將其強制為0和1級的因子
mydat$drug=factor(mydat$drug,levels=c(0,1),labels=c(0,1))
然后,我運行鼠標,並對葯物以及要估算的其他變量進行邏輯回歸(這是默認設置)。
我可以通過以下方式提取其中一種估算的結果:
drug=complete(imp,1)$drug
我們可以查看
> head(drug)
[1] 0 0 1 0 1 1
attr(,"contrasts")
2
0 0
1 1
Levels: 0 1
因此數據肯定為0,1。
但是,當我對它進行某些操作(例如cbind)時,它會變為1和2
> head(cbind(drug))
drug
[1,] 1
[2,] 1
[3,] 2
[4,] 1
[5,] 2
[6,] 2
即使我將其強制為數字
> head(as.numeric(drug))
[1] 1 1 2 1 2 2
我想說這與對比有關,但是當我刪除對比時
attr(drug,"contrasts")=NULL
當其他人調用並打印時,它仍然顯示為1和2。
我可以使用I()使其正確打印
> head(I(drug))
[1] 0 0 1 0 1 1
Levels: 0 1
因此,我認為這是一個R問題,但我不知道如何解決。 使用I()是正確的解決方案,還是只是在這里起作用的解決方法? 使輸出顯示為1和2的幕后實際上發生了什么?
謝謝
因素從第一層內部由1表示。
您有兩個選擇:
1)調整基於1的級別索引:
as.numeric(drug) - 1
2)取因子的標簽並轉換為數字:
as.numeric(as.character(drug))
有人會指出您會朝着執行相同操作的更快選項的方向發展:
as.numeric(levels(drug))[drug]
我還將考慮首先使用logical
值而不是factor
。
mydat$drug = as.logical(mydat$drug)
0和1是您的級別的名稱。 對應名稱的基本整數為1和2可以看到與str
,
str(drug)
# Factor w/ 2 levels "0","1": 2 2 2 2 2 2 1 1 2 2
將因子強制轉換為數字時,將刪除名稱並獲得整數表示形式。
這就是R對因子進行編碼的方式。 這些因素的基本數字表示形式始終以1開頭。如以下示例所示:
as.numeric(factor(c(0,1)))
as.numeric(factor(c(A,B)))
不確定MICE的工作原理,但是如果要使用系數而不是簡單的0/1數字變量來使用Logistic回歸,則始終可以使用以下內容來破解結果:
as.numeric(as.character(factor(c(0,1))))
或您的特定情況
drug <- as.numeric(as.character(drug))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.