我在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
答案 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")