當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R model.matrix 構建設計矩陣


R語言 model.matrix 位於 stats 包(package)。

說明

model.matrix 創建一個設計(或模型)矩陣,例如,通過將因子擴展到一組虛擬變量(取決於對比)並類似地擴展交互。

用法

model.matrix(object, ...)

## Default S3 method:
model.matrix(object, data = environment(object),
             contrasts.arg = NULL, xlev = NULL, ...)
## S3 method for class 'lm'
model.matrix(object, ...)

參數

object

適當類的對象。對於默認方法,模型 formulaterms 對象。

data

使用 model.frame 創建的 DataFrame 。如果是另一種對象,則首先調用model.frame

contrasts.arg

一個列表,其條目是用作 contrasts 替換函數的替換值的值(數字矩陣、function 或命名函數的字符串),其名稱是 data 中包含 factor 的列的名稱s。

xlev

如果 data 導致 model.frame 被調用,則用作 model.frame 的參數。

...

傳入或傳出其他方法的進一步參數。

細節

model.matrix 根據 terms(object) 中給出的說明創建一個設計矩陣,使用 data 中的數據,該矩陣必須提供與調用 model.frame(object) 創建的變量同名,或者更準確地說,通過評估 attr(terms(object), "variables") 。如果data是一個 DataFrame ,可能還有其他列,列的順序並不重要。任何字符變量都被強製為因子。強製轉換後,公式右側使用的所有變量都必須是邏輯、整數、數字或因子。

如果contrasts.arg為一個因子指定它會覆蓋該變量的默認因子編碼以及任何"contrasts"屬性設置為C或者contrasts。而無效contrasts.args 總是被忽略,從那時起他們就被警告R版本3.6.0。

在交互作用項中,水平變化最快的變量是第一個出現在公式中(而不是項中)的變量,因此在 ~ a + b + b:a 中,交互作用將使 a 變化最快。

按照慣例,如果響應變量也出現在公式的右側,則該變量將被刪除(並帶有警告),但涉及該項的交互作用將被保留。

具有指定公式和數據的 regression-like 模型的設計矩陣。

有一個屬性 "assign" ,它是一個整數向量,矩陣中的每一列都有一個條目,給出了產生該列的公式中的項。值 0 對應於截距(如果有),正值對應於與 object 對應的 terms 結構的 term.labels 屬性給出的順序中的項。

如果模型中存在任何因子,則會有一個屬性 "contrasts" ,這是一個命名列表,其中每個因子都有一個條目。這指定了將在通過對比對因子進行編碼的術語中使用的對比(在某些術語中可以使用虛擬編碼),作為命名函數的字符向量或數字矩陣。

例子

ff <- log(Volume) ~ log(Height) + log(Girth)
utils::str(m <- model.frame(ff, trees))
mat <- model.matrix(ff, m)

dd <- data.frame(a = gl(3,4), b = gl(4,1,12)) # balanced 2-way
options("contrasts") # typically 'treatment' (for unordered factors)
model.matrix(~ a + b, dd)
model.matrix(~ a + b, dd, contrasts.arg = list(a = "contr.sum"))
model.matrix(~ a + b, dd, contrasts.arg = list(a = "contr.sum", b = contr.poly))
m.orth <- model.matrix(~a+b, dd, contrasts.arg = list(a = "contr.helmert"))
crossprod(m.orth) # m.orth is  ALMOST  orthogonal
# invalid contrasts.. ignored with a warning:
stopifnot(identical(
   model.matrix(~ a + b, dd),
   model.matrix(~ a + b, dd, contrasts.arg = "contr.FOO")))

參考

Chambers, J. M. (1992) Data for models. Chapter 3 of Statistical Models in S eds J. M. Chambers and T. J. Hastie, Wadsworth & Brooks/Cole.

也可以看看

model.frame , model.extract , terms

sparse.model.matrix 來自包 Matrix ,用於創建稀疏模型矩陣,這在大維度上可能更有效。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Construct Design Matrices。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。