【DA】用R介绍路径分析
笔者邀请您,先思考:
1 路径分析是什么?
2 相关关系和因果关系如何理解?
路径分析是多元回归的扩展。 它帮助分析更复杂的模型。
想象一下,你要建立一个模型从汽车不同属性来预测汽车行驶里程。 你会怎么做?
最简单的方法是采用一个对行驶里程影响最大的参数或属性(选择哪一个属性可以成为一个无休止的争论的问题)建立回归模型来预测里程。 但你认为这是正确的方法吗?不,因为汽车的行驶里程取决于多种因素而不仅仅是单一因素。 所以,让我们更进一步,扩展我们的模型,使其更加强大,并包括汽车的其他属性。
在第二种方法中,我们将识别汽车的各种属性,如马力,容量,发动机类型,发动机型号,汽缸等。所有这些将形成我们模型的预测变量(也称为自变量),行驶里程将是响应变量(也称为因变量)。
第一个和第二个模型之间有什么区别?
在第二个模型中,我们有多个因素或变量对最终输出变量有贡献。直观地说,这个模型的准确性应该更高。对吗?
第一个模型称为简单线性回归;而第二个模型称为多元线性回归模型。在这种情况下,假设有多个独立变量都会影响输出变量。但是,如果其中一个自变量是其他自变量的因变量呢?例如,里程数是马力,容量,发动机类型,发动机型号和汽缸的因变量;但是,如果马力是容量,发动机类型和气缸的因变量呢?
在这种情况下,模型变得复杂,路径分析在这种情况下很方便。路径分析是多元回归的扩展。它允许分析更复杂的模型。它有助于检查存在多个中间因变量的情况,以及Z依赖于变量Y的情况,而变量Y依赖于变量X.它可以比较不同的模型以确定哪个最适合数据。

路径分析早先也被称为“因果建模”;然而,在遭到强烈批评后,人们不再使用该术语,因为不可能使用统计技术建立因果关系。因果关系只能通过实验设计来确定。路径分析可以用来反驳一个表明变量之间存在因果关系的模型;但是,它不能用来证明变量之间存在因果关系。
让我们理解路径分析中使用的术语。我们这里的变量不是独立的或依赖的;相反,我们称之为外生或内生变量。外生变量(回归世界中的独立变量)是从它们开始但没有指向它们的箭头的变量。内生变量至少有一个指向它们的变量。这种命名的原因是导致或影响外生变量的因素存在于系统之外,而导致内生变量的因素存在于系统内。在上图中,X是外生变量;而Y,Z是内生变量。典型的路径图如下所示。

在上图中,A,B,C,D和E是外生变量;而I,O是内生变量。 ‘d’是扰动项,类似于回归中的残差。
现在,让我们来看看在使用路径分析之前我们需要考虑的假设。因为,路径分析是多元回归的扩展,多元回归的大多数假设也适用于路径分析。
-
所有变量之间应该有线性关系。
-
内生变量应该是连续的。如果是序数据,最小类别数应为5。
-
变量之间不应该存在相互作用。在任何交互的情况下,可以添加单独的术语或变量,其反映两个变量之间的相互作用。
-
扰动项是不相关的,或者扰动项之间的协方差是零。
现在,让我们向前迈出一步,了解R中路径分析的实现。我们将首先尝试一个toy example,然后采用R中的标准数据集。
1install.packages("lavaan")
2install.packages("OpenMx")
3install.packages("semPlot")
4install.packages("GGally")
5install.packages("corrplot")
6library(lavaan)
7library(semPlot)
8library(OpenMx)
9library(GGally)
10library(corrplot)
现在,让我们创建自己的数据集并尝试路径分析。 请注意,进行此练习的理由是培养直觉以理解路径分析。
1set.seed(11)
2a <- 0.5
3b <- 5
4c <- 7
5d <- 2.5
6x1 <- rnorm(20, mean = 0, sd = 1)
7x2 <- rnorm(20, mean = 0, sd = 1)
8x3 <- runif(20, min = 2, max = 5)
9Y <- a*x1 + b*x2
10Z <- c*x3 + d*Y
11data1 <- cbind(x1, x2, x3, Y, Z)
12head(data1, n = 10)
13
现在,我们已经创建了这个数据集。 让我们看看这些变量的相关矩阵。 这将告诉我们所有变量彼此之间的相关程度。

上图显示Y与X2密切相关; 而Z与X2和Y强烈相关.X1对Y的影响不如X2强。
1model1 = 'Z ~ x1 + x2 + x3 + Y
2Y ~ x1 + x2'
3fit1 = cfa(model1, data = data1)
4summary(fit1, fit.measures = TRUE, standardized = TRUE, rsquare = TRUE)
5semPaths(fit1, 'std', layout = 'circle')

上图显示Z强烈依赖于Y并且弱依赖于X3和X1。 Y强烈依赖于X2并且弱依赖于X1。 这与我们之前在本文中构建的直觉相同。 这是路径分析的优点,这就是如何使用分析。
线之间的值是路径系数。 路径系数是标准化的回归系数,类似于多元回归的β系数。 这些路径系数应具有统计显着性,可以从摘要输出中进行检查(我们将在下一个示例中看到这一点)。
让我们转到第二个例子。 在这个例子中,我们将使用R中可用的标准数据集’mtcars’。
1data2 = mtcars
2head(data2, n = 10)
3model2 = 'mpg ~ hp + gear + cyl + disp + carb + am + wt
4hp ~ cyl + disp + carb'
5fit2 = cfa(model2, data = data2)
6summary(fit2)
在上面的总结输出中,我们可以看到wt是mpg的重要变量,为5%; 而dsp和crb是hp的重要变量。 ‘hp’本身不是mpg的重要变量。 我们将使用semPlot包的路径图检查此模型。
1semPaths(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)找到其它与数据相关的干货。
我们努力坚持做原创,聚合和分享优质的省时的数据知识!
我们都是数据人,数据是有价值的,坚定不移地实现从数据到商业价值的转换!
点击阅读原文,进入数据人网。
公众号推荐:
链达君,专注于分享区块链内容。

艾鸽英语,专注于分享英语口语内容。
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!