使用 Lavaan 语法构建函数的问题
Posted
技术标签:
【中文标题】使用 Lavaan 语法构建函数的问题【英文标题】:Issue building a function using Lavaan syntax 【发布时间】:2020-11-13 06:02:51 【问题描述】:我正在尝试为我使用 lavaan 编写一个非常简单的函数,以便从一个非常简单的模型中获得效果。代码如下:
library(lavaan)
states <- as.data.frame(state.x77)
Effect<-function(dataset, X1, Y)
Model<-'
X1 ~~ X1; Y ~~Y;
Y ~ X1;'
fit<-lavaan(Model, dataset)
return(summary(fit))
当我调用 Effect(states, Murder, Income) 或 Effect(states, "Murder", "Income") 时,会显示以下消息:
“熔岩中的错误(模型,数据集): lavaan 错误:数据集中缺少观察到的变量:Y X1"
当我写以下内容时一切都很好:
Model<-'
Murder ~~ Murder; Income ~~ Income;
Income ~ Murder;'
fit<-lavaan(Model, states)
summary(fit)
我的猜测是我的 Effect 函数中的 lavaan() 可能确实使用了数据集“状态”,但它并没有将 X1 和 Y 等同于谋杀和收入。有人知道我该如何解决这个问题吗?
非常感谢,
【问题讨论】:
你能提供一个 state.x77 数据框的样例吗?如果没有这些数据,您的代码将无法重现。谢谢! 【参考方案1】:问题是,变量Y
和X1
确实不是state.x77
数据的一部分。最直接的方法是让 Effect 函数使用 X1
和 Y
作为字符参数粘贴模型语法;例如
data(state, package = "datasets")
states <- as.data.frame(state.x77)
Effect<-function(dataset, X1, Y)
Model<-
paste0(X1, "~~", X1, ";\n",
Y, "~~", Y, ";\n",
Y, "~~", X1, ";")
fit<-lavaan::lavaan(Model, dataset)
return(lavaan::summary(fit))
现在Effect(states, X1 = "Murder", Y = "Income")
应该会提供所需的结果。
【讨论】:
以上是关于使用 Lavaan 语法构建函数的问题的主要内容,如果未能解决你的问题,请参考以下文章
无效的语法错误:使用 Python 和 Spark 构建决策树、流失预测