RAM圖形式介紹
根據理論分析繪制RAM圖诵冒,是結構方程模型建模的起點,也是表達建模結果的最有效形式。
- RAM圖基本規(guī)定
1.變量用大寫英文或希臘字母表示允懂,其外圍圍以方框的是顯變量,其外圍圍以橢圓的是隱變量衩匣。殘差以小寫希臘字母表示蕾总,外圍亦應圍以橢圓(但為方便起見粥航,經常不用)
2.路徑用帶箭頭的線表示:
直的單方向箭頭:表示因果關系,箭頭所指為果生百;
雙向箭頭弧線:表示相關關系递雀;
從自身到自身的雙向箭頭線:表示變量的方差。
3.在每一條路徑上以小寫的英文或希臘字母表示待估計的結構系數或方差蚀浆,以數字表示事先確定的固定參數缀程;
4.在圖中,凡為因果路徑所指者市俊,為內生變量杨凑,凡無如此箭頭所指者為外生變量。
本文原文地址http://dbtemp.blogspot.com/2011/08/structural-equation-modeling-in-openmx.html
假設我們采集了兩項語言測試的數據:words(W)和 syntax (S)摆昧,以及兩個非語言測試的數據:blocks(B)和 pics(P)愉烙,共80個人叠纹。
我們想要檢驗這些語言的測試是不是能夠反應底層的語言能力verbal factor (V),以及非語言測試是否能夠反應底層非語言的nonverbal factor(N),并且兩個因素是完全獨立的能真。這里需要注意的是,這里的樣本量太小了辫愉,不足以檢驗這個假設顽决,僅僅作為示例。
這個模型用路徑圖展示出來就非常清晰移動了汉规,如下圖所示礼殊。
下圖是一個經典的結構方程模型,觀測變量用方框表示针史,潛變量
用橢圓(圓)表示晶伦。單向箭頭表示回歸系數,雙向箭頭表示方差或協(xié)方差啄枕。
結構方程模型旨在解釋變量之間的關系婚陪,而不僅僅是變量的均值。我們用來檢驗模型的所有信息都來自于我們觀測的變量之間的協(xié)方差矩陣频祝。(此處應有l(wèi)ink: null)結構方程模型讓我們可以計算期望協(xié)方差矩陣泌参,然后與觀測到的矩陣進行比較。值得注意的常空,協(xié)方差矩陣的對角元素即為變量的方差(即沽一,變量自身的協(xié)方差為其方差)。
如上圖所示的路徑圖可以轉換為一系列的結構方程漓糙,這些方程結合觀測到的協(xié)方差矩陣可以用來估計路徑的系數铣缠。任意兩個變量之間協(xié)方差的期望都可以通過路徑跟蹤法則進行估計(path-tracing rules,詳細請看這里),這個協(xié)方差的期望可以告訴我們哪幾條路徑應當乘起來并加到協(xié)方差計算公式中蝗蛙。
簡言之蝇庭,步驟為:
1.沿著路徑箭頭先向后追蹤,然后向前捡硅,或者僅僅從一個變量沿著箭頭方向向前而不向后追蹤(當箭頭變成向后時停止)遗契;
2.每條路徑鏈上的每個變量只通過一次;
3.每條路徑鏈上最多只通過一條雙向箭頭路徑病曾。
我們的模型則非常簡單明了了牍蜂。
例如:
- W和S之間的協(xié)方差即為ab,我們沿著路徑a反向追蹤泰涂,然后通過V再沿著b正向追蹤鲫竞,然后將兩個系數相乘。
- W和B的協(xié)方差是0逼蒙,因為這兩個變量之間沒有通路从绘。
- W的方差為a2 + e,其中e是模型不能解釋的部分變異,也就是殘差 (為何是a2是牢?)
作為練習僵井,可以完成下表:
W | S | B | P | |
---|---|---|---|---|
W | a2+e | ab | 0 | 0 |
S | ab | b2+f | 0 | 0 |
B | 0 | 0 | c2+g | cd |
P | 0 | 0 | cd | d2+h |
RAM圖路徑方法可以通過矩陣代數計算模型中協(xié)方差的期望。通過制定路徑圖驳棱,可以得到三個矩陣:S批什,A和F。
- A對應的是不對稱的路徑社搅,即單箭頭路徑驻债;
- S對應的是對稱路徑(雙箭頭的路徑),且矩陣是對稱的形葬;
- F對應的是觀測變量(如下)
設定合呐,所有觀測變量為mobs, 所有的潛變量為mlat笙以,則所有變量表示為mtot
則有 mtot = mobs + mlat
則對于圖中的模型淌实,
A =
V | N | W | S | B | P | |
---|---|---|---|---|---|---|
V | 0 | 0 | 0 | 0 | 0 | 0 |
N | 0 | 0 | 0 | 0 | 0 | 0 |
W | a | 0 | 0 | 0 | 0 | 0 |
S | b | 0 | 0 | 0 | 0 | 0 |
B | 0 | c | 0 | 0 | 0 | 0 |
P | 0 | d | 0 | 0 | 0 | 0 |
S =
V | N | W | S | B | P | |
---|---|---|---|---|---|---|
V | 1 | 0 | 0 | 0 | 0 | 0 |
V | 0 | 1 | 0 | 0 | 0 | 0 |
W | 0 | 0 | e | 0 | 0 | 0 |
S | 0 | 0 | 0 | f | 0 | 0 |
B | 0 | 0 | 0 | 0 | g | 0 |
P | 0 | 0 | 0 | 0 | 0 | h |
值得注意的是,S矩陣中猖腕,第一行第一列(1,1)元素和第二行第二列(2,2)元素代表了潛變量V和N的變異拆祈,并且被固定為1。實際上谈息,我們會把潛變量標準化缘屹,從而使得模型中需要估計的變量較少。
F矩陣的大小為mobs x mtot的大小侠仇,因此對于行列均為同一個變量時,矩陣元素為1;
F =
V | N | W | S | B | P | |
---|---|---|---|---|---|---|
W | 0 | 0 | 1 | 0 | 0 | 0 |
S | 0 | 0 | 0 | 1 | 0 | 0 |
B | 0 | 0 | 0 | 0 | 1 | 0 |
P | 0 | 0 | 0 | 0 | 0 | 1 |
至此我們定義了這些矩陣逻炊,則協(xié)方差矩陣的期望就可以通過下面的矩陣公式進行計算
F * (I-A)-1 * S * ((I-A) -1)' * F' (其中-1代表矩陣求逆,'代表轉置)
其中互亮,I為與A同大小的單位矩陣。
為了方便閱讀余素,這里再放一個路徑圖:
現(xiàn)在豹休,我們假設上圖中洗漱的真實值為:
|path|a|b|c|d|e|f|g|h|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|value|5|6|3|7|2|3|1|4|
則通過上述過程,我們應當可以得到協(xié)方差矩陣的期望值桨吊。即下表:
W | S | B | P | |
---|---|---|---|---|
W | ||||
S | ||||
B | ||||
P |
現(xiàn)在威根,我們用OpenMx實現(xiàn)。
生成A视乐,S和F矩陣洛搀。
1.首先生成空的6 x 6矩陣A。
myA=matrix(c(0),nrow=6,ncol=6)
2.然后修改矩陣myA
myA= edit(myA)
這是會彈出對話框佑淀,可以修改矩陣中的元素的值留美。
另一種方法是通過元素的位置下標來改變元素的值,如:
myA[3,1] = 5
最終A應當為:
同理伸刃,可以生成并修改S矩陣谎砾,
3. 生成S矩陣和單位I矩陣
由于S矩陣只在對角線上有值,因此我們首先生成一個對角單位陣捧颅。
myS = diag(1,6) #括號內第一個值(1)為對角元素的值景图,第二個值(6)為矩陣的大小(方陣)
由于RAM路徑公式中有單位陣碉哑,因此這里症歇,在修改S矩陣之前,我們先順便生成一個矩陣
myI = myS
3. 修改S矩陣
同上谭梗;
最終S矩陣應為
F矩陣為:
接下來計算協(xié)方差的期望
F * (I-A)-1 * S * ((I-A) -1)' * F'
myF%*%solve(myI-myA)%*%myS%*%t(solve(myI-myA))%*%t(myF)