[心得] R 的 contrasts 與 dummy variable

看板R_Language作者 (討厭有好心推文後刪文者)時間9年前 (2015/06/04 20:05), 編輯推噓4(400)
留言4則, 4人參與, 最新討論串1/1
按板友要求,本文介紹一下 R 的 contrasts() 與 dummy variable 相關話題。 要看得完全懂可能要學過一點線性代數或迴歸分析。 ====== contrasts() 和 relevel() 在 Dummy Coding 的應用 ====== 在 R 中,一旦建立一個 factor,例如 x <- as.factor(c("a","a","b","b","c","c")) 則 R 會自動賦予該 factor 一組 coding。 預設賦予的方法就是常見的 Dummy Coding,也就是一個基準組和 k-1 個差異對比, 而基準組是哪個組則按字元碼先後順序決定。 我們可以利用 contrasts() 來看看 x 這個 factor 目前的 dummy variable coding。 例如 contrasts(x) b c a 0 0 b 1 0 c 0 1 可以看到基準組是 a,第一個 dummy variable 是 b-a,第二個是 c-a。 在 Dummy Coding 的世界裡,你可以利用 relevel() 更換基準組,例如 k <- relevel(x, "b") contrasts(k) a c b 0 0 a 1 0 c 0 1 可以看到基準組換成 b,第一個 dummy variable 是 a-b,第二個是 c-b。 ====== 選用其它 coding ====== 除了 Dummy Coding,你也可以利用 contrasts() 指定你要的其它 coding。 指定的過程中,你可以自己輸入,也可以套用 R 中存在的幾種 coding。 會碰到這種情況常常是因為 你不想用 Dummy Contrast 需要用正交對比 只想用自定對比 等等。 例如 w <- x contrasts(w) <- matrix(c(1,0,-1,0,1,-1), nrow=3) q <- x contrasts(q) <- contr.sum w 和 q 的結果是完全一致的,只是 w 是自行指定,而 q 是直接用 contr.sum。 請自行 help(contr.sum) 並查看 http://www.ats.ucla.edu/stat/r/library/contrast_coding.htm ====== "contrasts" 在 R 的意思並不是 contrasts ====== 如果您學過一點迴歸分析,會知道統計學中的 contrasts 是從幾組式子來的。 但是!但是!但是! 在統計學中或 SAS 裡,contrasts 是指這幾組式子的係數, 但在 R 中的 contrasts() 看到的並不是係數,而是實際上算出應代入迴歸式的值。 請看 http://sites.stat.psu.edu/~jls/stat512/lectures/ContrastsInR.pdf 不過,因為用係數來表示 contrast 還是比較實用也容易理解。 package gmodels 中的 make.contrasts() 是解決方案, 請有需要的朋友自行了解。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.128.117.75 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1433419549.A.94B.html

06/04 21:53, , 1F
06/04 21:53, 1F

06/05 09:43, , 2F
06/05 09:43, 2F

06/05 12:10, , 3F
06/05 12:10, 3F

06/06 10:31, , 4F
06/06 10:31, 4F
文章代碼(AID): #1LS3yTbB (R_Language)
文章代碼(AID): #1LS3yTbB (R_Language)