
我一直使用 semPlot 包来绘制结构方程模型的路径。由于我用的是tidySEM包,发现之前的包不香。今天跟大家分享一下tidySEM。
这个包最大的特点就是所有的图纸原本都存储在数据框中,这样我们就可以像编辑excel一样改变图形中元素的位置,非常的个性化。
该示例显示您首先运行 CFA 进行尝试?
library(lavaan)
HS.model <- ' visual =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9 '
fit <- cfa(HS.model, data=HolzingerSwineford1939)
上述代码运行后,可以得到一个完整的验证性因子分析结果对象拟合。我们可以先画出这个对象的默认路径图。代码如下:
graph_sem(model = fit)
运行后可以得到图形:
这张图其实挺好的,但是我还是想自己编辑一下图片的布局,怎么办呢?
我首先使用 get_layout() 提取当前布局,然后它是一个矩阵。这个矩阵对应图上的元素,空白对应“NA”。提取布局的代码如下:
get_layout(fit)
结果如下,可以看到图中每个元素对应一个3*8的矩阵,元素的位置就是我们画图的位置:空白部分都是NA:
改变图形布局的原理就是改变这个矩阵。例如,如果我现在想将三个因素放在同一水平r软件中多元线性回归,我可以指定以下矩阵:
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)的结果很长。我们可以看到边缘从哪里开始到哪里去,什么类型的箭头,边缘的标签等等。
使用此信息,我们可以更改边缘的颜色或线条的类型。最常见的是将无关紧要的变成虚线,将明显的路径用红色加粗等。
我们知道绘图是绘制的节点和边的标签,所以我们可以通过改变节点的标签来自定义图中节点或边的标签。我们试试吧:
例如,如果我希望我的图表中所有对象的标签都是变量名+我的公众号,我可以编写以下代码:
prepare_graph(fit) %>%
edit_graph({ label = paste(p[,3]," Codewar") }) %>%
plot()
运行后会得到如下效果:
例如r软件中多元线性回归,如果我想将所有节点更改为一种颜色,蓝色,我可以编写以下代码:
prepare_graph(fit) %>%
edit_graph({ label_color = "blue" },element='nodes') %>%
plot()
上面的操作只是为了好玩,并没有什么用处。接下来,写一些真正有用的东西。
首先我们来了解一下所有可以改变的路径线的视觉效果,包括:
即可以改变图中线条的类型、颜色、粗心和透明度。
详细了解所有可以更改的形状的视觉效果:
也就是说,节点边缘的类型、颜色、填充、粗心、透明度也可以改变。
知道了以上内容,我们就可以根据路径的意义来改变路径的线条或者可变的形状特征。例如,在上面的验证性因子分析模型中,我想将某条路径的颜色更改为红色,将路径线更改为虚线。,透明度改为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”变成了“x2”,变成了高透明度的红色虚线:
另外,我还可以根据路径系数的正负来改变路径的颜色。例如,我希望所有正路径都为绿色,负路径为红色。我可以编写以下代码:
prepare_graph(fit) %>%
color_pos_edges("green") %>%
color_neg_edges("red") %>%
color_var("black") %>%
alpha_var(.2) %>%
plot()
因为我的模型比较特殊,都是正向路径,所以没有红色显示,不过是这样做的。
概括
今天给大家写了tidysem的基本操作。感谢您的耐心等待。我的文章写得很详细。代码在原文中。我希望每个人都能自己做。我收集的所有数据和学习资料的“数据链接”。如果对你有用,请点赞和分享。
也欢迎大家提出意见和建议。想了解什么统计方法,可以在文章下方留言。也许我看到它时会为你写一个教程。也欢迎私信。
如果您是本科生或研究生,如果您担心自己的统计作业、数据分析、模型构建等,如果您在使用 SPSS、R、Python、Mplus、Excel 时遇到任何问题,都可以联系我。因为我可以为您提供最好、最详细、最详细的患者数据分析服务。
如果您对 Z 检验、t 检验、ANOVA、MANOVA、回归、卡方检验、相关性、多水平模型、结构方程模型、中介调整、量表信度和效度等统计技术有任何疑问,请发送私信我,详细耐心指导。
如果您是学生,并且您担心统计#Assignments、#Data #Analysis、#Thesis、#Reports、#Composing、#Quizzes、Exams.. 如果您在#SPSS、#R-Programming 中遇到问题, #Excel,Mplus,然后联系我。因为我可以为您的数据分析提供最好的服务。
您是否对用于数据分析的 z 检验、t 检验、ANOVA、MANOVA、回归、Logistic 回归、卡方、相关、关联、SEM、多级模型、中介和调节等统计技术感到困惑......??
然后联系我。我会解决你的问题...
美好的过去
R数据分析:R语言中的潜在类分析LCA
R 数据分析:R 语言中的元分析
R数据分析:使用R语言进行卡方检验
R数据分析:如何使用R做验证性因子分析和绘图,示例演练
R 数据分析:适度调解
R数据分析:倾向得分匹配全实例(R实现)
R 数据分析:如何使用 R 进行多重插补,示例演练
R文本挖掘:中文文本聚类
R文本挖掘:中文词云生成,以2021年拜年为例
R数据分析:多类逻辑回归
R数据分析:列线图的实践和解释
R 文本挖掘:文本聚类分析
R 数据分析:混合效应模型示例
R文本挖掘:如何做词云图,初识worldcloud2
R数据分析:多元逻辑回归的实践
R数据分析:线性回归的实践与优化实例
R数据分析:中介和调节效应的分析和解释
R中的数据分析:竞争风险模型的实践和解释
R数据分析:潜变量增长模型的非专业解释
R数据分析:逐步回归的实践与原理,案例分析
R数据分析:交叉滞后模型的非专业解释
R数据分析:如何进行逻辑回归
R数据分析:探索性因素分析
R 中的数据分析:生存分析实践和解释(续)
R数据分析:倾向得分匹配实例操作
R数据分析:潜在轮廓分析LPA实践和解释
R中的数据分析:生存分析实践和结果解释
R数据分析:逻辑回归与泊松回归
R数据分析:如何做潜在的轮廓分析Mplus
R数据分析:处理数据中缺失值的常用方法
请登录后发表评论
注册
社交帐号登录