Next: , Previous: Statistical models in R, Up: Statistical models in R



11.1 定義統計模型的公式

下面的統計模型的範本是一個基於 獨立的方差齊性資料的線性模型

     y_i = sum_{j=0}^p beta_j x_{ij} + e_i,     i = 1, ..., n,

其中 e_i 屬於 NID(0, sigma^2)。 用矩陣格式表示,它可以寫為

     y = X  beta + e

其中 y 是回應向量,X 是模型 矩陣(model matrix)或者設計矩陣(design matrix)。X 的列 x_0, x_1, ..., x_p是 決定變數(determining variable)。通常,x_0 列就是截距(intercept)項。

例子

在給予正式的定義前,下面的例子可能會給出 一些不錯的描述。

假定 y, x, x0, x1, x2, ... 是數值 變數,X 是一個矩陣,而A, B, C, ... 是因數。下面的例子中,左邊給出公式, 右邊給出該公式的統計模型的描述。

y ~ x
y ~ 1 + x
二者都反映了y 對 x 的簡單線性模型。第一個包含了一個隱式的截距項, 而第二個則是一個顯式的截距項。
y ~ 0 + x
y ~ -1 + x
y ~ x - 1
y 對 x 的通過原點的簡單線性模型 (也就是沒有截距項)。
log(y) ~ x1 + x2
y 的變換形式 log(y) 對 x1 和 x2 進行的多重回歸 (有一個隱式的截距項)。
y ~ poly(x,2)
y ~ 1 + x + I(x^2)
y 對 x 的二階多項式回歸。第一種是 正交多項式(orthogonal polynomial),第二種是顯 式地注明各項的冪次。
y ~ X + poly(x,2)
y 利用模型矩陣 X 和二階多項式項x 進行多重回歸。
y ~ A
y 的單一分類因數的方差分析模型。分類因數 由 A 決定。
y ~ A + x
y 的單一分類因數的方差分析模型。因數項為 A,共變項為 x。
y ~ A*B
y ~ A + B + A:B
y ~ B %in% A
y ~ A/B
基於 A 和 B的非可加兩因數方差分析模型y。 前兩個公式表示相同的交叉分類設計, 後兩個公式表示相同的嵌套分類設計。概略地說, 四個公式指明同一個模型子空間。
y ~ (A + B + C)^2
y ~ A*B*C - A:B:C
三因數實驗。該模型包括一個主要影響因數,另外兩個因數 有相互作用。這兩個公式等價。
y ~ A * x
y ~ A/x
y ~ A/(1 + x) - 1
A的每一水準擬合 y 對 x 的簡單線性回歸。 三個公式的編碼不一樣。最後一個公式會對 A 每一水準分佈估計截距項 和斜率項的。
y ~ A*B + Error(C)
一個實驗設計有兩個處理因素 A 和 B以及 因數 C 決定的誤差分層(error strata)。例如在一個 區組由因數 C 決定的裂區實驗設計(split plot experiment)。

操作符 ~ 用於定義R 的模型公式。 一個普通線性模型的公式可以表示為

     response ~ op_1 term_1 op_2 term_2 op_3 term_3 ...

其中

response
是一個作為響應變數的向量或者矩陣, 或者是一個值為向量/矩陣的運算式。
op_i
是一個操作符。它要麼是 + 要麼是 -,分別表示在一個模型中加入 或者去除某一項(預設值為前者)。
term_i
可以 基本上,公式中的項決定了模型矩陣中列要麼被加入要麼被去除。 1 表示截距項,並且 默認加入模型矩陣除非 顯式地去除這一選項。

公式操作符在效果上和用於程式 Glim 和 Genstat 中的 Wilkinson & Rogers 標記符相似。一個不可避免的改變是 操作符 . 變成了 : 因為點號在 R 裏面是合法的名字字元。

這些符號總結如下(參考 Chambers & Hastie, 1992, p.29):

Y ~ M
Y 由模型 M解釋。
M_1 + M_2
同時包括 M_1M_2項。
M_1 - M_2
包括 M_1 但排除 M_2項。
M_1 : M_2
M_1M_2 的張量積(tensor product)。 如果兩項都是 因數,那麼將產生“子類”因數1
M_1 %in% M_2
M_1:M_2 類似,但編碼方式不一樣。
M_1 * M_2
M_1 + M_2 + M_1:M_2.
M_1 / M_2
M_1 + M_2 %in% M_1.
M^n
M 的所有各項以及所有到n階為止的“交互作用”項
I(M)
隔離 MM內所有操作符當一般的運算符處理。 該項出現在模型矩陣中。

注意,在常常用來封裝函數參數的括弧中 的操作符按普通的四則運算法則解釋。 I() 是一個恒等函數(identity function),它使得 常規的算術運算符可以用在模型公式中。

還要注意模型公式僅僅指定了模型矩陣的 列項,參數則沒有顯式地指定。 在某些情況下可能不是這樣,如 非線性模型。


Footnotes

[1] 譯者注:因數交互作用項