R数据分析:如何给结构方程画路径图,tidySEM包详解

之前一直是用semPlot这个包给来进行结构方程模型的路径绘制,自从用了tidySEM这个包后就发现之前那个包不香了,今天就给大家分享一下tidySEM。
这个包的很大特点就是所有的画图原始都是存在数据框中的,这样以来我们就可以像编辑excel一样改变图中元素的位置,非常的个性化。

例子说明

  • 画图之前我们需要有一个画图的对象fit,也就是你的拟合成功的SEM模型

  • 第二步是要将这个对象的图中的可以编辑的节点通过get_nodes(fit)得到,或者通过get_edges(fit)得到可以编辑的边

  • 然后用get_layout()设定你想要的个性化布局

  • 第四步就是用graph_sem出图了

先跑个CFA试试手?

library(lavaan)
HS.model <- ' visual =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9 '
fit <- cfa(HS.model, data=HolzingerSwineford1939)
上面的代码运行后就可以得到一个完整的验证性因子分析的结果对象fit,我们可以先画出这个对象的默认路径图,代码如下:
graph_sem(model = fit)
运行后即可得到图:
这个图其实挺不错的啦,不过我还是想自己编辑一下图的布局,怎么做呢?
我先使用get_layout()把现在的布局提取出来,提出来后是一个矩阵,这个矩阵和图上面的元素是对应的,空白处就对应的是“NA”,提取布局的代码如下:
get_layout(fit)
结果如下,可以看到图中各个元素都对应在一个3*8的矩阵中,元素的位置就是我们画出图的位置:空白部分就全是NA:
我们改动图布局的原理就是改这个矩阵,比如我现在就想三个因子放在同一个水平,我就可以规定如下的矩阵:
lay <- get_layout( NA, "textual", NA, NA, "speed", NA, NA, "visual", NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA,
"x1", "x2", "x3","x4", "x5", "x6", "x7", "x8", "x9",rows = 3 )
这个矩阵的意思就是3个潜变量全部放在第一行,空一行之后放9个显变量,我们出图试试看是不是这个效果:
graph_sem(fit, layout = lay)
看到没,完全没有问题,大家也可以自己调一调试一试哈。
所以说我们就是通过编辑这个矩阵,就可以随心所欲地改变整个图的布局,原理就是如此。

自定义节点和边

这一部分给大家写写如何个性化节点和边,首先我们可以很容易地通过get_nodes(fit)和get_edges(fit)得到原始的节点和边的布局:
get_nodes(fit)
结果就显示我们是有3个椭圆的潜变量和9个方形的显变量,以及每个元素的标签。
get_edges(fit)
运行后得到所有的边的结果:
因为图中的边还是比较多的所以运行get_edges(fit)的结果非常长,我们可以看到输出中有边从哪儿开始from到哪儿去to,什么类型的箭头arrow,边的标签label等等。
利用好这些信息我们就可以改变边的颜色或者线条类型,最常见的就是将不显著的变成虚线,将显著的路径加红加粗等
我们知道画图都是画的节点和边的标签label,所以我们通过将节点的label改变就可以自定义图中节点或者边标签了,我们试试:
比如我希望我的图中所有对象的标签是变量名+我的公众号名字,我就可以写出如下代码:
prepare_graph(fit) %>%
edit_graph({ label = paste(p[,3]," Codewar") }) %>%
plot()
运行后就得到下面的效果,所有的元素都加上了Codewar:
再比如我想让所有的节点变个颜色,蓝色,我可以写出如下代码:
prepare_graph(fit) %>%
edit_graph({ label_color = "blue" },element='nodes') %>%
plot()
上面的操作只是玩玩,并没有什么卵用,接下来写点实际用得上的
首先先了解下所有可以改变的路径线的视觉效果,包括:
  • linetype: The type of line, e.g., continuous (linetype = 1 or dashed linetype = 2)
  • colour or color: The color of the line (e.g., colour = "red" or colour = "blue")
  • size: The size of the line (e.g., size = 1 or size = 2)
  • alpha: The transparency of the line (e.g., alpha = 1 or alpha = .2)
就是图中线的类型,颜色,粗心,透明度都是可以改的。
再了解下所有可以改变的形状的视觉效果:
  • linetype: The type of line surrounding the node, e.g., continuous (linetype = 1 or dashed linetype = 2)
  • colour or color: The color of the line surrounding the node (e.g., colour = "red" or colour = "blue")
  • fill: The interior color of the node (e.g., colour = "red" or colour = "blue")
  • size: The size of the line (e.g., size = 1 or size = 2)
  • alpha: The transparency of the node (e.g., alpha = 1 or alpha = .2)
就是说节点的边的类型,颜色,填充,粗心,透明也都是可以改的。
知道了上面的东西我们就可以根据路径的显著性进行路径线条或者变量形状特征的改变了,比如上面的验证性因子分析模型,我就想把某一条路径颜色改成红色,路径线条改成虚线,透明度改成0.5,我就可以写出如下代码:
edges(graph_data) %>%
mutate(colour = "black") %>%
mutate(colour = replace(colour, from == "visual" & to == "x2", "red")) %>%
mutate(linetype = 1) %>%
mutate(linetype = replace(linetype, from == "visual" & to == "x2", 2)) %>%
mutate(alpha = 1) %>%
mutate(alpha = replace(alpha, from == "visual" & to == "x2", .5)) -> edges(graph_data)
plot(graph_data)
运行效果是这样的,就是我把从"visual" to"x2"这个载荷弄成了透明度比较高的红色虚线了:
还有,我还可以根据路径系数的正负性将路径颜色改变,比如我想要所有的正向路径成绿色,负向路径成红色,我可以写出如下代码:
prepare_graph(fit) %>%
color_pos_edges("green") %>%
color_neg_edges("red") %>%
color_var("black") %>%
alpha_var(.2) %>%
plot()
因为我这个模型比较特殊,全部是正向路径,所以没有红色显示,但是做法就是这样哈。

小结

(0)

相关推荐

  • ggdag:DAG和因果图

    近几年来,因果推断同时受到多个学科的重视,是最火热的研究方向之一.因果图(或称路径图)是研究因果关系的一个有效的辅助性工具.借助因果图可以分析因果关系,将复杂问题图形化.本文介绍一个用来绘制因果图的R ...

  • ggraph V1.0.0 发布了-R语言网络可视化的崛起

    发布地址:https://ggraph.data-imaginist.com/index.html 在8月22日,ggraph默默发布V1.0.0. 关系数据的图形语法 ggraph是ggplot2的 ...

  • NMDS分析

    " No one knows everything, and you don't have to."   --free傻孩子 "R数据分析"专题·第15篇   ...

  • 实用技术 | 如何用R绘制地图中的未定国界(含停火线)

    由于目前市面上出版的中国地图仍以1989年的国界线为准,因此即便之后中国与周边国家陆续签订了边界协定,完成了边界划定工作,但是有些边界划定并未在现行出版的地图上进行反映或更新,所以我们迄今会看到国内出 ...

  • R语言基于ARMA-GARCH-VaR模型拟合和预测实证研究分析案例

    原文链接:http://tecdat.cn/?p=3186 本文显示了如何基于潜在的ARMA-GARCH过程(当然也涉及更广泛意义上的QRM)来拟合和预测风险价值(VaR). 1 从ARMA-GARC ...

  • R语言用多元ARMA,GARCH ,EWMA, ETS,随机波动率SV模型对金融时间序列数据建模

    原文链接:http://tecdat.cn/?p=20015 本文将说明单变量和多变量金融时间序列的不同模型,特别是条件均值和条件协方差矩阵.波动率的模型. 均值模型 本节探讨条件均值模型. iid模 ...

  • 《企业碳中和路径图》发布 详解减碳技术“中国智慧”

    文章导读 近日,全球首份由联合国机构发布的全面指导企业实现碳中和的报告<企业碳中和路径图>由联合国驻华代表处正式发布.报告深度分析了能源使用侧排放最为密集的6大基础设施行业:交通运输.农业 ...

  • R数据分析:交互作用的简单斜率图做法及解释

    之前的文章给大家写了两个连续变量的交互作用,今天给大家写写比较常见,也是比较简单的: 一个连续变量和一个分类变量的交互. 具体的例子为:我们在研究GPA的影响因素时,我们想看一看学习态度和性别的交互作 ...

  • 宋画秋窗读书图的临摹详解

    传承技艺    勿忘初心 书画古迹 | 精品国画 | 传统经典 |现代艺术 作品名称:<临宋秋窗读书图> 作品尺寸:39x37cm 作品材质:绢本设色 年代:2020年3月 作者:李晓明 ...

  • 动图+视频,详解常见手术切口缝合技术

     昨天 来源:骨科在线orthonline 详解常见手术切口缝合技术. 缝合技巧与手法 根据缝针大小和缝合要求选择合适的持针器,于持针器前1/3处夹针体后1/3弧处持针器夹持缝针在缝合过程中缝针不晃动 ...

  • 多少人不会养鱼死在这张图上,详解鱼缸中的硝化过程!

    金鱼的王者 383篇原创内容 公众号 本文主要将与主题相关的一些专业理论简述一下,鱼缸的硝化(过滤)系统几个关键方面做一下阐述.养鱼先养水,养水就是养硝化系统,而硝化系统下面一张图全部表示. 鱼类杀手 ...

  • 图解来啦!多图 视频,详解常见手术切口缝合技术

    小编特意上搜索收集了很多资料,在本期为大家呈上切口缝合的示意图解,以方便读者更好掌握常见手术切口缝合技术. 缝合技巧与手法 根据缝针大小和缝合要求选择合适的持针器,于持针器前1/3处夹针体后1/3弧处 ...

  • 英语课文怎么背?思维导图法步骤详解,从此背诵不再难!

    怎样背诵才最科学.最有效?今天小编就和大家聊一聊英语课文背诵的最强武器--思维导图.老师们可以帮助学生用这一工具锻炼记忆能力和语言能力! 很多学生觉得画思维导图很麻烦,其实用思维导图背课文有很多优势: ...

  • 多图 视频,详解常见手术切口缝合技术

    好医师导语 多图+视频,详解常见手术切口缝合技术 缝合技巧与手法 根据缝针大小和缝合要求选择合适的持针器,于持针器前1/3处夹针体后1/3弧处持针器夹持缝针在缝合过程中缝针不晃动.松动及转向,不要将持 ...

  • 10张图为你详解孩子学习中的10大坏习惯!

    习惯是经过反复练习而形成的较为稳定的行为特征,好的习惯可以带来好的结果,而坏的习惯只能带来不好的结果. 在许多时候,孩子的学习成绩不理想,就是由于有一些坏的习惯在作怪!这些图画出孩子学习中的10大坏习 ...