用R介紹路徑分析
路徑分析是多元迴歸的擴充套件。 它幫助分析更復雜的模型。
想象一下,你要建立一個模型從汽車不同屬性來預測汽車行駛里程。 你會怎麼做?
最簡單的方法是採用一個對行駛里程影響最大的引數或屬性(選擇哪一個屬性可以成為一個無休止的爭論的問題)建立迴歸模型來預測里程。 但你認為這是正確的方法嗎?不,因為 汽車的行駛里程取決於多種因素而不僅僅是單一因素 。 所以,讓我們更進一步,擴充套件我們的模型,使其更加強大,幷包括汽車的其他屬性。
在第二種方法中,我們 將識別汽車的各種屬性 ,如馬力,容量,發動機型別,發動機型號,汽缸等。所有這些將形成我們模型的 預測變數 (也稱為自變數),行駛里程將是 響應變數 (也稱為因變數)。
第一個和第二個模型之間有什麼區別?
在第二個模型中,我們有多個因素或變數對最終輸出變數有貢獻。直觀地說,這個模型的準確性應該更高。對嗎?
第一個模型稱為 簡單線性迴歸 ;而第二個模型稱為 多元線性迴歸模型 。在這種情況下,假設有多個獨立變數都會影響輸出變數。但是,如果其中一個自變數是其他自變數的因變數呢?例如,里程數是馬力,容量,發動機型別,發動機型號和汽缸的因變數;但是,如果馬力是容量,發動機型別和氣缸的因變數呢?
在這種情況下,模型變得複雜,路徑分析在這種情況下很方便。 路徑分析是多元迴歸的擴充套件 。它允許分析更復雜的模型。它有助於檢查存在多箇中間因變數的情況,以及Z依賴於變數Y的情況,而變數Y依賴於變數X.它可以比較不同的模型以確定哪個最適合資料。
路徑分析早先也被稱為“因果建模”;然而,在遭到強烈批評後,人們不再使用該術語,因為不可能使用統計技術建立因果關係。因果關係只能通過實驗設計來確定。路徑分析可以用來反駁一個表明變數之間存在因果關係的模型;但是,它不能用來證明變數之間存在因果關係。
讓我們理解路徑分析中使用的術語。我們這裡的變數不是獨立的或依賴的;相反,我們稱之為外生或內生變數。外生變數(迴歸世界中的獨立變數)是從它們開始但沒有指向它們的箭頭的變數。內生變數至少有一個指向它們的變數。這種命名的原因是導致或影響外生變數的因素存在於系統之外,而導致內生變數的因素存在於系統內。在上圖中,X是外生變數;而Y,Z是內生變數。典型的路徑圖如下所示。
在上圖中,A,B,C,D和E是外生變數;而I,O是內生變數。 'd'是擾動項,類似於迴歸中的殘差。
現在,讓我們來看看在使用路徑分析之前我們需要考慮的假設。因為,路徑分析是多元迴歸的擴充套件,多元迴歸的大多數假設也適用於路徑分析。
- 所有變數之間應該有線性關係。
- 內生變數應該是連續的。如果是序資料,最小類別數應為5。
- 變數之間不應該存在相互作用。在任何互動的情況下,可以新增單獨的術語或變數,其反映兩個變數之間的相互作用。
- 擾動項是不相關的,或者擾動項之間的協方差是零。
現在,讓我們向前邁出一步,瞭解R中路徑分析的實現。我們將首先嚐試一個toy example,然後採用R中的標準資料集。
install.packages("lavaan") install.packages("OpenMx") install.packages("semPlot") install.packages("GGally") install.packages("corrplot") library(lavaan) library(semPlot) library(OpenMx) library(GGally) library(corrplot)
現在,讓我們建立自己的資料集並嘗試路徑分析。 請注意,進行此練習的理由是培養直覺以理解路徑分析。
set.seed(11) a <-0.5 b <-5 c <-7 d <-2.5 x1 <-rnorm(20, mean = 0, sd = 1) x2 <-rnorm(20, mean = 0, sd = 1) x3 <-runif(20, min = 2, max = 5) Y <-a*x1 + b*x2 Z <-c*x3 + d*Y data1 <-cbind(x1, x2, x3, Y, Z) head(data1, n = 10)
現在,我們已經建立了這個資料集。 讓我們看看這些變數的相關矩陣。 這將告訴我們所有變數彼此之間的相關程度。
上圖顯示Y與X2密切相關; 而Z與X2和Y強烈相關.X1對Y的影響不如X2強。
model1 = 'Z ~ x1 + x2 + x3 + Y Y ~ x1 + x2' fit1 = cfa(model1, data = data1) summary(fit1, fit.measures = TRUE, standardized = TRUE, rsquare = TRUE) semPaths(fit1, 'std', layout = 'circle')
上圖顯示Z強烈依賴於Y並且弱依賴於X3和X1。 Y強烈依賴於X2並且弱依賴於X1。 這與我們之前在本文中構建的直覺相同。 這是路徑分析的優點,這就是如何使用分析。
線之間的值是路徑係數。 路徑係數是標準化的迴歸係數,類似於多元迴歸的β係數。 這些路徑係數應具有統計顯著性,可以從摘要輸出中進行檢查(我們將在下一個示例中看到這一點)。
讓我們轉到第二個例子。 在這個例子中,我們將使用R中可用的標準資料集'mtcars'。
data2 = mtcars head(data2, n = 10) model2 = 'mpg ~ hp + gear + cyl + disp + carb + am + wt hp ~ cyl + disp + carb' fit2 = cfa(model2, data = data2) summary(fit2)
在上面的總結輸出中,我們可以看到wt是mpg的重要變數,為5%; 而dsp和crb是hp的重要變數。 'hp'本身不是mpg的重要變數。 我們將使用semPlot包的路徑圖檢查此模型。
semPaths(fit2, 'std', 'est', curveAdjacent = TRUE, style = "lisrel")
上圖顯示mpg強烈依賴於wt;而hp強烈依賴於dsp和crb。 hp和mpg之間存在弱關係。從上述輸出得出相同的推論。
semPaths函式可以多種方式建立上面的圖表。您可以瀏覽semPaths的文件並探索不同的選項。
在進行路徑分析時,您應該記住幾個注意事項。路徑分析對模型中遺漏或新增變數非常敏感。在模型中遺漏相關變數或新增額外變數可能會對結果產生重大影響。此外,路徑分析是一種測試模型而不是構建模型的技術。如果您在構建模型中使用路徑分析,那麼您可能會以不同模型的無限組合結束,並且可能無法選擇正確的模型。因此,路徑分析可用於測試特定模型或比較多個模型以選擇最佳模型。
還有許多其他方法可以使用路徑分析。我們很想聽聽您在不同環境中使用路徑分析的經驗。請在下面的評論部分分享您的示例和經驗。
本文由Perceptive Analytics提供。 Prudhvi Potluri,Chaitanya Sagar和Saneesh Veetil對本文做出了貢獻。
Perceptive Analytics為電子商務,零售,醫療保健和製藥行業提供資料分析,商業智慧和報告服務。其客戶名單包括美國和印度的財富500強和紐約證券交易所上市公司。
原文連結: https://www.kdnuggets.com/2018/09/introducing-path-analysis-using-r.html
版權宣告:作者保留權利,嚴禁修改,轉載請註明原文連結。
資料人網是資料人學習、交流和分享的平臺http://shujuren.org 。專注於從資料中學習到有用知識。 平臺的理念:人人投稿,知識共享;人人分析,洞見驅動;智慧聚合,普惠人人。 您在資料人網平臺,可以1)學習資料知識;2)建立資料部落格;3)認識資料朋友;4)尋找資料工作;5)找到其它與資料相關的乾貨。 我們努力堅持做原創,聚合和分享優質的省時的資料知識! 我們都是資料人,資料是有價值的,堅定不移地實現從資料到商業價值的轉換!