内容简介:路径分析是多元回归的扩展。 它帮助分析更复杂的模型。想象一下,你要建立一个模型从汽车不同属性来预测汽车行驶里程。 你会怎么做?最简单的方法是采用一个对行驶里程影响最大的参数或属性(选择哪一个属性可以成为一个无休止的争论的问题)建立回归模型来预测里程。 但你认为这是正确的方法吗?不,因为
路径分析是多元回归的扩展。 它帮助分析更复杂的模型。
想象一下,你要建立一个模型从汽车不同属性来预测汽车行驶里程。 你会怎么做?
最简单的方法是采用一个对行驶里程影响最大的参数或属性(选择哪一个属性可以成为一个无休止的争论的问题)建立回归模型来预测里程。 但你认为这是正确的方法吗?不,因为 汽车的行驶里程取决于多种因素而不仅仅是单一因素 。 所以,让我们更进一步,扩展我们的模型,使其更加强大,并包括汽车的其他属性。
在第二种方法中,我们 将识别汽车的各种属性 ,如马力,容量,发动机类型,发动机型号,汽缸等。所有这些将形成我们模型的 预测变量 (也称为自变量),行驶里程将是 响应变量 (也称为因变量)。
第一个和第二个模型之间有什么区别?
在第二个模型中,我们有多个因素或变量对最终输出变量有贡献。直观地说,这个模型的准确性应该更高。对吗?
第一个模型称为 简单线性回归 ;而第二个模型称为 多元线性回归模型 。在这种情况下,假设有多个独立变量都会影响输出变量。但是,如果其中一个自变量是其他自变量的因变量呢?例如,里程数是马力,容量,发动机类型,发动机型号和汽缸的因变量;但是,如果马力是容量,发动机类型和气缸的因变量呢?
在这种情况下,模型变得复杂,路径分析在这种情况下很方便。 路径分析是多元回归的扩展 。它允许分析更复杂的模型。它有助于检查存在多个中间因变量的情况,以及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)找到其它与数据相关的干货。 我们努力坚持做原创,聚合和分享优质的省时的数据知识! 我们都是数据人,数据是有价值的,坚定不移地实现从数据到商业价值的转换!
以上所述就是小编给大家介绍的《用R介绍路径分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Python 数据分析与挖掘的学习路径
- Ruby on Rails 路径穿越与任意文件读取漏洞分析 -【CVE-2018-3760】
- Ruby on Rails路径穿越与任意文件读取漏洞分析(CVE-2019-5418)
- Ruby on Rails 路径穿越与任意文件读取漏洞分析 - 【CVE-2019-5418】
- 深入解析Java绝对路径与相对路径
- C#/.NET 如何确认一个路径是否是合法的文件路径
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。