2 # Copyright 2007-2010 The OpenMx Project
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
8 # http://www.apache.org/licenses/LICENSE-2.0
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
21 x <- rnorm (1000, 0, 1)
22 testData <- as.matrix(x)
24 dimnames(testData) <- list(NULL, selVars)
29 #example 1: Saturated Model with Cov Matrices and Paths input
30 univSatModel1 <- mxModel("univSat1",
31 manifestVars= selVars,
41 observed=var(testData),
47 univSatFit1 <- mxRun(univSatModel1)
48 EC1 <- mxEval(S, univSatFit1)
49 LL1 <- mxEval(objective, univSatFit1)
50 SL1 <- univSatFit1@output$SaturatedLikelihood
53 #example 1m: Saturated Model with Cov Matrices & Means and Paths input
54 univSatModel1m <- mxModel("univSat1m",
55 manifestVars= selVars,
73 observed=var(testData),
80 univSatFit1m <- mxRun(univSatModel1m)
81 EM1m <- mxEval(M, univSatFit1m)
82 EC1m <- mxEval(S, univSatFit1m)
83 LL1m <- mxEval(objective,univSatFit1m);
84 SL1m <- univSatFit1m@output$SaturatedLikelihood
87 #example 2: Saturated Model with Raw Data and Path input
88 univSatModel2 <- mxModel("univSat2",
89 manifestVars= selVars,
104 univSatFit2 <- mxRun(univSatModel2)
105 EM2 <- mxEval(M, univSatFit2)
106 EC2 <- mxEval(S, univSatFit2)
107 LL2 <- mxEval(objective,univSatFit2);
109 #example 2s: Saturated Model with Raw Data and Path input built upon Cov/Means version
110 univSatModel2s <- mxModel(univSatModel1,
117 univSatFit2s <- mxRun(univSatModel2s)
118 EM2s <- mxEval(M, univSatFit2s)
119 EC2s <- mxEval(S, univSatFit2s)
120 LL2s <- mxEval(objective,univSatFit2s);
123 #example 3: Saturated Model with Cov Matrices and Matrices input
124 univSatModel3 <- mxModel("univSat3",
131 dimnames=list(selVars,selVars),
135 observed=var(testData),
143 univSatFit3 <- mxRun(univSatModel3)
144 EC3 <- mxEval(expCov, univSatFit3)
145 LL3 <- mxEval(objective, univSatFit3)
146 SL3 <- univSatFit3@output$SaturatedLikelihood
149 #example 3m: Saturated Model with Cov Matrices & Means and Matrices input
150 univSatModel3m <- mxModel("univSat3m",
157 dimnames=list(selVars,selVars),
166 dimnames=list(NULL,selVars),
170 observed=var(testData),
180 univSatFit3m <- mxRun(univSatModel3m)
181 EM3m <- mxEval(expMean, univSatFit3m)
182 EC3m <- mxEval(expCov, univSatFit3m)
183 LL3m <- mxEval(objective, univSatFit3m);
184 SL3m <- univSatFit3m@output$SaturatedLikelihood
187 #examples 4: Saturated Model with Raw Data and Matrices input
188 univSatModel4 <- mxModel("univSat4",
195 dimnames=list(selVars,selVars),
204 dimnames=list(NULL,selVars),
216 univSatFit4 <- mxRun(univSatModel4)
217 EM4 <- mxEval(expMean, univSatFit4)
218 EC4 <- mxEval(expCov, univSatFit4)
219 LL4 <- mxEval(objective, univSatFit4);
222 #Mx answers hard-coded
223 #example Mx..1: Saturated Model with Cov Matrices
225 Mx.LL1 <- -1.474434e-17
227 #example Mx..1m: Saturated Model with Cov Matrices & Means
228 Mx.EM1m <- 0.01680509
230 Mx.LL1m <- -1.108815e-13
238 cov <- rbind(cbind(EC1,EC1m,EC2),cbind(EC3,EC3m,EC4))
239 mean <- rbind(cbind(EM1m, EM2),cbind(EM3m,EM4))
240 like <- rbind(cbind(LL1,LL1m,LL2),cbind(LL3,LL3m,LL4))
244 Mx.cov <- cbind(Mx.EC1,Mx.EC1m,Mx.EC2)
245 Mx.mean <- cbind(Mx.EM1m,Mx.EM2)
246 Mx.like <- cbind(Mx.LL1,Mx.LL1m,Mx.LL2)
247 Mx.cov; Mx.mean; Mx.like
250 #Compare OpenMx results to Mx results (LL: likelihood; EC: expected covariance, EM: expected means)
252 omxCheckCloseEnough(Chi1,Mx.LL1,.001)
253 omxCheckCloseEnough(EC1,Mx.EC1,.001)
255 omxCheckCloseEnough(Chi1m,Mx.LL1m,.001)
256 omxCheckCloseEnough(EC1m,Mx.EC1m,.001)
257 omxCheckCloseEnough(EM1m,Mx.EM1m,.001)
259 omxCheckCloseEnough(LL2,Mx.LL2,.001)
260 omxCheckCloseEnough(EC2,Mx.EC2,.001)
261 omxCheckCloseEnough(EM2,Mx.EM2,.001)
263 omxCheckCloseEnough(LL2s,Mx.LL2,.001)
264 omxCheckCloseEnough(EC2s,Mx.EC2,.001)
265 omxCheckCloseEnough(EM2s,Mx.EM2,.001)
267 omxCheckCloseEnough(Chi3,Mx.LL1,.001)
268 omxCheckCloseEnough(EC3,Mx.EC1,.001)
270 omxCheckCloseEnough(Chi3m,Mx.LL1m,.001)
271 omxCheckCloseEnough(EC3m,Mx.EC1m,.001)
272 omxCheckCloseEnough(EM3m,Mx.EM1m,.001)
274 omxCheckCloseEnough(LL4,Mx.LL2,.001)
275 omxCheckCloseEnough(EC4,Mx.EC2,.001)
276 omxCheckCloseEnough(EM4,Mx.EM2,.001)