R語言結(jié)構(gòu)方程模型SEM、路徑分析房價(jià)和犯罪率數(shù)據(jù)、預(yù)測智力影響因素可視化2案例|附代
原文鏈接:http://tecdat.cn/?p=25044
原文出處:拓端數(shù)據(jù)部落公眾號
最近我們被客戶要求撰寫關(guān)于結(jié)構(gòu)方程模型的研究報(bào)告,包括一些圖形和統(tǒng)計(jì)輸出。
1 簡介
在本文,我們將考慮觀察/顯示所有變量的模型,以及具有潛在變量的模型。第一種有時(shí)稱為“路徑分析”,而后者有時(shí)稱為“測量模型”。
2 進(jìn)行簡單的多元回歸
SEM 在很大程度上是回歸的多元擴(kuò)展,我們可以在其中一次檢查許多預(yù)測變量和結(jié)果。SEM 還提供了檢查潛在結(jié)構(gòu)(即未觀察到某些變量的地方)的創(chuàng)新。更具體地說,“結(jié)構(gòu)方程”的概念是指我們有不止一個(gè)方程表示協(xié)方差結(jié)構(gòu)模型,其中我們(通常)有多個(gè)標(biāo)準(zhǔn)變量和多個(gè)預(yù)測變量。
讓我們從簡單的演示開始,即 SEM 中的路徑模型可以概括簡單的單預(yù)測變量-單結(jié)果回歸。我們將檢查人口普查中的房價(jià)數(shù)據(jù),以回顧相關(guān)和回歸中的重要概念。這是一個(gè)很好的回歸數(shù)據(jù)集,因?yàn)橛性S多相互依賴的變量:犯罪,污染物,財(cái)產(chǎn)的年齡,等等。
這是上面的單預(yù)測回歸,作為路徑模型運(yùn)行?:
#示例數(shù)據(jù)集,包括按人口普查區(qū)劃分的房屋價(jià)格Bsnml <- otnou %>% dplyr::select( ?cmv, #住宅的中位數(shù)價(jià)值,以千計(jì) ?crm, #城鎮(zhèn)人均犯罪率 ?nx, #一氧化氮濃度 ?lsa, #地位較低的人的比例 ?rd #靠近放射狀的高速公路 ?) %>% mutatesummary

為了比較,輸出?lm()
?summary(lm

回歸系數(shù)是相同的(好?。?。有一點(diǎn)需要注意的是,我們在輸出中沒有截距。這突出了一個(gè)重要的區(qū)別,基本的SEM經(jīng)常關(guān)注數(shù)據(jù)的協(xié)方差結(jié)構(gòu)。我們也可以包括均值,但通常只有當(dāng)它與我們的科學(xué)問題有關(guān)時(shí)才會(huì)包括。例如,男性和女性在抑郁癥潛在因素的平均水平上是否有差異?
2.1 平均結(jié)構(gòu)
在這種情況下,我們可以要求在模型中包含平均值(截距)??mean=TRUE
:
summary(lvt)

2.2 模型參數(shù)詳情
"參數(shù) "表提供了模型中哪些參數(shù)是必須被估計(jì),以及用戶在模型語法中要求哪些參數(shù)的重要摘要。
Table(mv)

在這里,'user' 指的是我們在語法中明確請求的參數(shù),'free' 列的非零值表示模型自由估計(jì)的參數(shù)。
請注意,我們也可以得到標(biāo)準(zhǔn)化的估計(jì)值?。這是 SEM 中更復(fù)雜的主題,因?yàn)槲覀兛梢詢H針對潛在變量(std.lv
)或觀察變量和潛在變量(std.all
)進(jìn)行標(biāo)準(zhǔn)化。后者通常是 SEM 論文中作為標(biāo)準(zhǔn)化估計(jì)報(bào)告的內(nèi)容。
2.3 標(biāo)準(zhǔn)化估計(jì)
stdln(v, type)

3 住房數(shù)據(jù)的路徑分析
讓我們看一些更有趣的東西。如果我們認(rèn)為一氧化氮 (?nox
) 水平也可以預(yù)測房價(jià)和犯罪率,那會(huì)怎樣?我們可以將其添加為標(biāo)準(zhǔn)多元回歸中的預(yù)測變量。
此外,我們假設(shè)房屋靠近大型高速公路(rad
)預(yù)測一氧化氮的濃度,從而預(yù)測較低的房價(jià)?
模型語法可以指定為:
sem(ln2, data=toSll)
模型看起來像這樣
Paths

這是文本輸出:
summary

需要注意的幾點(diǎn):
請注意警告:“一些觀察到的差異(至少)是其他差異的 1000 倍?!?
我們的假設(shè)似乎都得到了支持。
模型卡方非常顯著,表明全局模型擬合不佳。
3.1 調(diào)整
當(dāng)模型中變量的方差顯著不同(數(shù)量級)時(shí),參數(shù)估計(jì)可能會(huì)遇到困難。鑒于上述警告,讓我們來看看。
Table(lv2)

看起來nox的比例要比其他預(yù)測因素小得多,可能是因?yàn)樗膯挝皇乔f分之一!我們可以通過乘以常數(shù)來重新調(diào)整變量的比例。在這種情況下,我們可以通過乘以一個(gè)常數(shù)來重新劃分變量的尺度。這對模型的擬合或解釋沒有影響--我們只需要回憶一下新單位代表什么。另外,如果重要的話,你可以隨時(shí)從參數(shù)估計(jì)中除掉常數(shù)來恢復(fù)原來的單位。
Bonl <- BoSal %>% mutatesummary(lv2)

3.2 模型擬合指數(shù)
您可以在模型摘要輸出中使用更詳細(xì)的全局?jǐn)M合指數(shù)。
summary(fit.me=TRUE)

您還可以使用以下方法獲取適合的度量(包括其他統(tǒng)計(jì)信息)

?

這些看起來很差:CFI < .95(甚至遠(yuǎn)低于 0.9),而 RMSEA 遠(yuǎn)高于我們認(rèn)為“還可以”的 0.08 水平。
3.3 模型診斷
這表明需要更詳細(xì)地檢查擬合。首先,我們可以查看模型隱含和觀察到的協(xié)方差矩陣之間的不匹配。
從概念上講,結(jié)構(gòu)方程建模 (SEM) 的目標(biāo)是測試變量間協(xié)方差的理論動(dòng)機(jī)模型是否提供了數(shù)據(jù)的良好近似。
更具體地說,我們試圖測試一個(gè)解析模型(由測量和/或結(jié)構(gòu)成分組成)對觀察到的協(xié)方差矩陣的再現(xiàn)程度。從形式上看,我們正在尋求建立一個(gè)模型,其模型隱含的協(xié)方差矩陣接近于樣本(觀測)協(xié)方差矩陣。
SXX≈Σ (θ ^)
我們可以從中獲得這些信息,?進(jìn)一步診斷模型不匹配。
首先,模型隱含的協(xié)方差矩陣:
fitted

我們也許可以用相關(guān)(標(biāo)準(zhǔn)化)單位更容易地解釋這一點(diǎn)。也就是說,變量之間的模型隱含相關(guān)性是什么?可以訪問許多模型詳細(xì)信息,包括:

這與觀察到的相關(guān)性相比如何?

特別是,獲得雙變量關(guān)聯(lián)的不匹配。在這里,我們要求相關(guān)單位中的殘差,這比處理未標(biāo)準(zhǔn)化的協(xié)方差更直觀。請注意,這是上面觀察到的模型隱含矩陣的減法。大的正值表明模型低估了相關(guān)性;大的負(fù)值表明相關(guān)性的過度預(yù)測。通常值 |r>.1|值得仔細(xì)考慮。

因此,該模型顯著低估了?nox
?和?crim
之間的?關(guān)聯(lián)?。
我們也可以將問題可視化:
plot_matix

3.4 修改指數(shù)
讓我們看一下修改索引,看看我們是否可以通過釋放一個(gè)或多個(gè)路徑來修復(fù)不匹配,特別是nox
? 和?log_crim
之間的?關(guān)系?。

在這里,我們看到如果我們允許?log_crim
?預(yù)測?,模型擬合會(huì)大大提高nox
。這是否具有理論上的意義是另一回事(而且可能更重要)。出于演示目的,讓我們接受需要自由估計(jì)這條路徑。
#我們可以使用添加參數(shù)來添加一個(gè)路徑,同時(shí)保持所有其他模型元素不變ma3 <- updatesummary

?

這在擬合方面看起來好多了。?犯罪與我們之前錯(cuò)過的氮氧化物水平之間存在強(qiáng)烈的正相關(guān)關(guān)系。從概念上講,這表明犯罪與房價(jià)之間的關(guān)系部分是由犯罪對污染物水平的影響所調(diào)節(jié)的。相比之下,靠近高速公路對房價(jià)的影響似乎完全由污染物水平調(diào)節(jié)(正如這條路徑?jīng)]有大的修正指數(shù)所示)。
4 檢驗(yàn)調(diào)解
如果支持上述模型并且我們對測試中介特別感興趣,我們通常希望 1)專門檢驗(yàn)間接效應(yīng),以及 2)使用一種方法對提供可信?p值的中介效應(yīng)進(jìn)行顯著性檢驗(yàn)。正如前段時(shí)間所指出的(例如,MacKinnon 等人,2007 年),在 SEM 框架中對中介的適當(dāng)檢驗(yàn)是基于??構(gòu)成中介的成分路徑的乘積。?在這里,我們在兩個(gè)中介鏈中只有兩條路徑:
radlog_crim→nox→cmedv→nox→cmedvrad→nox→cmedvlog_crim→nox→cmedv
為了具體測試這些,我們需要在 模型中定義新參數(shù),這些參數(shù)是各個(gè)路徑的產(chǎn)物。這可以使用?=:
?運(yùn)算符('定義為')來完成。請注意,這確實(shí)會(huì)改變模型中自由參數(shù)的數(shù)量,因?yàn)檫@些只是現(xiàn)有參數(shù)的乘積。為了看哪個(gè)估計(jì)要相乘,我們必須通過將變量預(yù)乘以任意標(biāo)簽來使用“參數(shù)標(biāo)簽”。在這里,我將“a1”和“a2”用于 X -> M 路徑,將“b1”用于 M -> Y 路徑。
i_1 := a1*b1i_2 := a2*b1'summary(mv4)
這看起來很有希望,但正如我上面提到的,這種用于測試中介的“delta 方法”眾所周知是有問題的,因?yàn)殚g接路徑乘積項(xiàng)的抽樣分布不正常。Bootstrapping 是解決這種問題的一種常見解決方法,它不會(huì)對感興趣系數(shù)的分布(即兩個(gè)中介路徑的采樣分布)做出強(qiáng)有力的假設(shè)。我們可以使用參數(shù)來實(shí)現(xiàn)這一點(diǎn)?se = "bootstrap"
。默認(rèn)情況下,這將使用 1000 個(gè)非參數(shù)引導(dǎo)樣本重新估計(jì)參數(shù)估計(jì)的標(biāo)準(zhǔn)誤差。您可以使用bootstrap
?參數(shù)更改引導(dǎo)樣本的數(shù)量?
summary
?
正如我們所懷疑的,這兩種間接途徑都很重要,表明了調(diào)節(jié)的證據(jù)。
5 帶有潛在變量的 SEM
當(dāng)我們對測試有潛變量的模型感興趣時(shí),怎么辦?通常,這將是一個(gè) "反映性潛變量 "模型,我們認(rèn)為一個(gè)假定的潛變量是由幾個(gè)(通常是3個(gè)以上)顯性指標(biāo)來衡量的。這樣的變量通常被稱為 "因子 "或 "潛在特質(zhì)"。在SEM世界中,確認(rèn)性因子分析是最常見的反映性潛變量模型。
這樣的模型中使用=~操作符('測量的')來指定。
讓我們以 衡量智力為例,其中有 9 個(gè)項(xiàng)目可以衡量智力的不同方面:視覺、文本和速度。觀察到的變量是?x1-x9
。
這是一個(gè)“經(jīng)典”數(shù)據(jù)集,用于許多關(guān)于結(jié)構(gòu)方程建模 (SEM) 的論文和書籍,包括一些商業(yè) SEM 軟件包的手冊。數(shù)據(jù)包括來自兩所不同學(xué)校的七年級和八年級兒童的心理能力測試成績。在我們的數(shù)據(jù)集版本中,僅包含原始 26 個(gè)測試中的 9 個(gè)。通常針對這 9 個(gè)變量提出的 CFA 模型由三個(gè)潛在變量(或因子)組成,每個(gè)潛在變量具有三個(gè)指標(biāo):
由 3 個(gè)變量測量的?視覺?因子?
x1
:?x2
?和?x3
由 3 個(gè)變量測量的?文本?因子?
x4
:?x5
?和?x6
由 3 個(gè)變量測量的?速度?因子?
x7
:?x8
?和?x9
一個(gè) 3 因素 CFA 示例
5.1 指定因子模型
指定此模型的相應(yīng) 語法如下:
? ? visual =~ x1 + x2 + x3 ? ?textual =~ x4 + x5 + x6 ? ? ?speed =~ x7 + x8 + x9
在此示例中,模型語法僅包含三個(gè)“潛在變量定義”。
5.2 典型 CFA 輸出
默認(rèn)情況下,第一個(gè)指標(biāo)具有 1 的固定負(fù)載以縮放基礎(chǔ)因子(“單位負(fù)載標(biāo)識”)。讓我們來看看:
summary
?
?
?
5.3 CFA 的修正指數(shù)
modification
修正指數(shù)表明?x9
?可能會(huì)加載?visual
?因子,或者?x7
?可能?x9
?具有唯一的殘差相關(guān)性。這又是一個(gè)理論上的問題,但我們可以測試修改后的模型以進(jìn)行演示。我們使用?~~
?運(yùn)算符來指定模型中的(殘差)方差或協(xié)方差項(xiàng)。
summary(fit2, fit.meas)
仍然不是很好。我們可以重新檢查修改指數(shù)
modificatio
現(xiàn)在是時(shí)候咨詢你關(guān)于潛在結(jié)構(gòu)應(yīng)該是什么的預(yù)測或理論了。這是一個(gè)模型構(gòu)建和模型比較問題,很大程度上超出了本教程的范圍。然而,我們至少可以測試這些模型之間的全局?jǐn)M合差異。這些是嵌套模型(因?yàn)?x7 ~~ x9
?在更簡單的模型中殘差協(xié)方差為 0),這允許我們使用似然比檢驗(yàn)(也稱為模型卡方差):
anova

該?anova
?函數(shù)將使用 LRT 方法測試整體擬合差異。LRT 的自由度是自由參數(shù)數(shù)量的差異(此處為 1)。
5.4 詳細(xì)看模型
我們可以查看自由參數(shù)在矩陣規(guī)范中的位置。自由參數(shù)被編號(按順序),零表示可能的參數(shù),固定為零(即不估計(jì))。
inspect

?

我們還可以看到矩陣形式的參數(shù)估計(jì):
inspect( "est")


5.5 結(jié)構(gòu)模型呢?
上面的 CFA 只包含一個(gè)測量模型——一個(gè)具有因子之間相關(guān)性的三因子模型。如果我們還想看看學(xué)校的年級在多大程度上可以預(yù)測智力因素(視覺、文本、速度)的水平,該怎么辦?
summary( fit.measures=TRUE)




semPath

正如人們所預(yù)料的那樣,高年級的孩子在潛在智力因素上得分更高。
最后,如果我們想在結(jié)構(gòu)模型中使用一般與特定(殘差)方差怎么辦?為了讓它們在相同的參數(shù)矩陣中適當(dāng)?shù)匕l(fā)揮作用,我們?yōu)楦信d趣的項(xiàng)目殘差創(chuàng)建了一個(gè)單指標(biāo)潛在變量。
x1d =~ 1*x1 #定義干擾因子,將1.0加載到指標(biāo)上(如RAM的符號)。x1 ~~ 0*x1 #指標(biāo)的零殘差(所有加載到干擾因素上)。#根據(jù)標(biāo)準(zhǔn)模型,干擾因素與因子不相關(guān)x1d ~~ 0*視覺x1d ~~ 0*文本x1d ~~ 0*速度#我們現(xiàn)在可以看看X1的具體方差和視覺因素是否能唯一地預(yù)測人的年齡summary(fitne)

?

?


這里沒有骰子,但你明白了。
6 分類數(shù)據(jù)
支持使用閾值結(jié)構(gòu)來正式處理內(nèi)生的分類數(shù)據(jù)。這源于這樣的觀點(diǎn):一個(gè)項(xiàng)目的基本分布是連續(xù)的(高斯),但我們的離散化(如二元或多態(tài))在特定的點(diǎn)上降低了這個(gè)維度。

我們有4個(gè)級別的變量(1、2、3、4),但只有三個(gè)閾值--每個(gè)閾值指定兩個(gè)相鄰級別(錨)之間的邊界。如果我們有動(dòng)力來說明這個(gè)結(jié)構(gòu),這些閾值可以被指定為模型中的自由參數(shù)。這實(shí)質(zhì)上是在估計(jì)ττ參數(shù)沿著連續(xù)體的落點(diǎn);它們不需要均勻分布
如果我們對一個(gè)項(xiàng)目有5個(gè)以上的錨,我們也許可以把它當(dāng)作連續(xù)的,而不會(huì)出現(xiàn)重大的錯(cuò)誤。請注意,這就是我們在最初的CFA中所做的事情--我們將x1-x9視為正態(tài)/連續(xù)分布。事實(shí)證明,它們是(即不是高度離散的)。
hist(Holz$x1)

但是,如果我們有具有 2、3 或 4 個(gè)值的數(shù)據(jù),將變量視為連續(xù)變量通常是不合適的,并且可能導(dǎo)致有偏差、不準(zhǔn)確的結(jié)果。
通常,具有閾值結(jié)構(gòu)的模型是使用“加權(quán)最小二乘”(WLS)估計(jì)器而不是最大似然(ML;SEM 中的典型估計(jì)器)估計(jì)的。均值和協(xié)方差調(diào)整的 WLS(又名“WLSMV”)通常是可行的方法,因?yàn)樗梢员鹊湫偷?WLS 更好地處理多元分布的非正態(tài)性。
6.1 CFA分類數(shù)據(jù)演示
這是一個(gè)快速演示——如果我們的每個(gè)智力測試項(xiàng)目只有三分法怎么辦?
hist

我們用有序參數(shù)告訴R哪些項(xiàng)目是有序分類的。
summary(fiat)



?
請注意,我們現(xiàn)在對每個(gè)項(xiàng)目都有閾值估計(jì),其中較高的數(shù)值表示對一個(gè)類別和下一個(gè)類別之間的邊界有較高的估計(jì),而這個(gè)潛在的連續(xù)體據(jù)說是該項(xiàng)目的基礎(chǔ)。
7 估計(jì)
最后, 可以用許多不同的算法來估計(jì)模型中的參數(shù)。“ML”是連續(xù)數(shù)據(jù)的默認(rèn)值,“WLS”是(部分)分類數(shù)據(jù)的默認(rèn)值。
這些估計(jì)器的'穩(wěn)健'通常會(huì)在整個(gè)模型的卡方檢驗(yàn)和標(biāo)準(zhǔn)誤差的層面上對非正態(tài)性(以及潛在的其他東西,如聚類)進(jìn)行穩(wěn)健處理,因此,顯著性檢驗(yàn)。讓你的統(tǒng)計(jì)數(shù)據(jù)對非正態(tài)性具有魯棒性通常是一件好事......因此,許多人將使用 "MLR "作為他們對連續(xù)數(shù)據(jù)的首選,而 "WLSMV "則用于分類數(shù)據(jù)。
可以使用?estimator
?參數(shù)指定它。
summary(filr, fit.measures=TRUE)
?
?
我們現(xiàn)在有一列“穩(wěn)健”的全局?jǐn)M合指數(shù),并注意標(biāo)準(zhǔn)誤差是使用 Huber-White 估計(jì)器估計(jì)的(對非正態(tài)性和聚類穩(wěn)?。?。
8 缺失數(shù)據(jù)
默認(rèn)情況下,?通常會(huì)刪除缺少任何變量的樣本。但是您可能會(huì)丟失大量數(shù)據(jù),并且因?yàn)樗赡軙?huì)給數(shù)據(jù)帶來偏差。雖然遠(yuǎn)遠(yuǎn)超出了本教程,但通常最好在數(shù)據(jù)隨機(jī)缺失的假設(shè)下使用所謂的全信息最大似然 (FIML),即給定變量的缺失可能與其他變量相關(guān),但是而不是變量本身。使用 FIML,估計(jì)嘗試根據(jù)具有可用數(shù)據(jù)的案例來估計(jì)所有參數(shù)。
以下是默認(rèn)情況下發(fā)生的情況:
?
?
注意輸出:
結(jié)果不理想。
好的,下面是FIML
summary(fiiml, fit.measures=TRUE)
?

?


這更讓人放心:

同樣,關(guān)于缺失數(shù)據(jù)的理論和正式方法超出了本教程的范圍,但我希望這能讓大家了解到如何在sem中處理缺失問題。

最受歡迎的見解
1.R語言多元Logistic邏輯回歸 應(yīng)用案例
2.面板平滑轉(zhuǎn)移回歸(PSTR)分析案例實(shí)現(xiàn)
3.matlab中的偏最小二乘回歸(PLSR)和主成分回歸(PCR)
4.R語言泊松Poisson回歸模型分析案例
5.R語言混合效應(yīng)邏輯回歸Logistic模型分析肺癌
6.r語言中對LASSO回歸,Ridge嶺回歸和Elastic Net模型實(shí)現(xiàn)
7.R語言邏輯回歸、Naive Bayes貝葉斯、決策樹、隨機(jī)森林算法預(yù)測心臟病
8.python用線性回歸預(yù)測股票價(jià)格
9.R語言用邏輯回歸、決策樹和隨機(jī)森林對信貸數(shù)據(jù)集進(jìn)行分類預(yù)測