我是R的新手。我正在尝试复制SAS proc calis,使用代码计算SEM联立方程式:
proc calis te data= data ucov AUGMENT outest = estimate outstat=mdl_stat_final2 MAXITER = 10000 tech= QUANEW method=ML print privec;
lineqs sales = a v1 + b v2 + c v3 + d v4 + e v5+ e1,
v2 = f v3 + g v4 + e2,
v4 = i v3 + j v5 + e3;
STD e1 = Var_e1,
e2 = Var_e2,
e3 = Var_e3;
ods output
TotalEffects = total
IndirectEffects = indirect
TValues = tval
;
run;
为此,我使用了lavaan包:
require(lavaan)
eqn <- 'Sales ~ a*v1 + b*v2 + C*v3 + d*v4 + e*v5
v2 ~ f*v3 + g*v4
v4 ~ i*v3 + j*v5 '
fit.eqn <- sem(eqn,data= data)
我从R获得的估计值与SAS结果不同。是否需要应用其他条件才能获得与SAS相同的结果?是否还有其他软件包可用于在R中复制SAS代码?
@thelatemail:估计的主要差异是当R给出正估计时,而SAS的估计是负数,反之亦然。 R和SAS的估算如下:
Sales ~ Estimate from R Estimate from SAS
v1 (a) 2.562 1.094
v2 (b) 0.127 0.109
v3 (C) 0.016 -0.011
v4 (d) -0.242 -0.260
v5 (d) 0.428 -0.053
v2 ~
v3 (f) 0.032 0.071
v4 (g) -0.264 0.816
v5 (d) no estimate 0.852
v4 ~
v3 (i) 0.021 0.031
v5 (j) 0.756 1.044
答案 0 :(得分:1)
我觉得您的模型语法可能就是原因。你能指定你的模型结构吗?什么是lv和ov?同样在R中,〜表示对该变量进行回归。如果你在=符号的左侧有lv,你需要使用=〜而不是〜。