将proc calis SAS转换为lavaan r包

时间:2016-01-20 05:44:15

标签: r sas

我是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

1 个答案:

答案 0 :(得分:1)

我觉得您的模型语法可能就是原因。你能指定你的模型结构吗?什么是lv和ov?同样在R中,〜表示对该变量进行回归。如果你在=符号的左侧有lv,你需要使用=〜而不是〜。