lavaan的lavTestWald函数中的数学函数

时间:2019-07-06 00:09:28

标签: r

我在lavaan中使用R包,并希望使用lavaan::lavTestWald在线性约束下测试模型的拟合度。该测试是循环的一部分,因此我想在众多模型中测试这些约束。

作为测试的一部分,我想将两个数量的绝对值设置为相等。有没有办法做到这一点?我知道R的abs()函数,但是还无法弄清楚如何将abs()合并到lavaan::lavTestWald中。

这是一个可复制的示例。

HS.model <- ' visual  =~ x1 + a*x2 + b*x3
              textual =~ x4 + x5 + x6
              speed   =~ x7 + x8 + x9'

fit <- cfa(HS.model, data = HolzingerSwineford1939)
lavTestWald(fit, "abs(a) == abs(b)") # I want something like this

1 个答案:

答案 0 :(得分:1)

我不知道为什么,但是您的代码未按预期运行的原因似乎与abs()有关。这对我有用:

lavTestWald(fit, "sqrt(a^2) == sqrt(b^2)")

请注意,您还可以在模型语句中定义新参数并进行测试,但是我不知道这对您的情况是否有任何影响。

HS.model <- ' visual  =~ x1 + a*x2 + b*x3
              textual =~ x4 + x5 + x6
              speed   =~ x7 + x8 + x9
# new1 := abs(a) - abs(b)
new2 := sqrt(a^2) - sqrt(b^2)
'
fit <- cfa(HS.model, data = HolzingerSwineford1939)
lavTestWald(fit, "new2 == 0")