Corrections so that test suite will pass
[openmx:openmx.git] / models / passing / univSatM.R
1 require(OpenMx)
2
3 #Simulate Data
4 set.seed(100)
5 x <- rnorm (1000, 0, 1)
6 testData <- as.matrix(x)
7 selVars <- c("X")
8 dimnames(testData) <- list(NULL, selVars)
9 summary(testData)
10 mean(testData)
11 var(testData)
12
13 #example 1: Saturated Model with Cov Matrices and Paths input
14 univSatModel1 <- mxModel("univSat1",
15     manifestVars= selVars,
16     mxPath(
17         from=c("X"), 
18         arrows=2, 
19         free=T, 
20         values=1, 
21         lbound=.01, 
22         labels="vX"
23     ),
24     mxData(
25         observed=var(testData), 
26         type="cov", 
27         numObs=1000 
28     ),
29     type="RAM"
30     )
31 univSatFit1 <- mxRun(univSatModel1)
32 EC1 <- mxEvaluate(S, univSatFit1)
33 LL1 <- mxEvaluate(objective, univSatFit1)
34 SL1 <- univSatFit1@output$misc$SaturatedLikelihood
35 Chi1 <- LL1-SL1
36
37 #example 1m: Saturated Model with Cov Matrices & Means and Paths input
38 univSatModel1m <- mxModel("univSat1m",
39     manifestVars= selVars,
40     mxPath(
41         from=c("X"), 
42         arrows=2, 
43         free=T, 
44         values=1, 
45         lbound=.01, 
46         labels="vX"
47     ),
48     mxPath(
49         from="one", 
50         to="X", 
51         arrows=1, 
52         free=T, 
53         values=0, 
54         labels="mX"
55     ),
56     mxData(
57         observed=var(testData), 
58         type="cov", 
59         numObs=1000, 
60         means=mean(testData)
61     ),
62     type="RAM"
63     )
64 univSatFit1m <- mxRun(univSatModel1m)
65 EM1m <- mxEvaluate(M, univSatFit1m)
66 EC1m <- mxEvaluate(S, univSatFit1m)
67 LL1m <- mxEvaluate(objective,univSatFit1m);
68 SL1m <- univSatFit1m@output$misc$SaturatedLikelihood
69 Chi1m <- LL1m-SL1m
70
71 #example 2: Saturated Model with Raw Data and Path input
72 univSatModel2 <- mxModel("univSat2",
73     manifestVars= selVars,
74     mxPath(
75         from=c("X"), 
76         arrows=2, 
77         free=T, 
78         values=1, 
79         lbound=.01, 
80         labels="vX"
81     ),
82     mxData(
83         observed=testData, 
84         type="raw", 
85     ),
86     type="RAM"
87     )
88 univSatFit2 <- mxRun(univSatModel2)
89 EM2 <- mxEvaluate(M, univSatFit2)
90 EC2 <- mxEvaluate(S, univSatFit2)
91 LL2 <- mxEvaluate(objective,univSatFit2);
92
93 #example 2s: Saturated Model with Raw Data and Path input built upon Cov/Means version
94 univSatModel2s <- mxModel(univSatModel1,
95     mxData(
96         observed=testData, 
97         type="raw"
98     ),
99     type="RAM"
100     )
101 univSatFit2s <- mxRun(univSatModel2s)
102 EM2s <- mxEvaluate(M, univSatFit2s)
103 EC2s <- mxEvaluate(S, univSatFit2s)
104 LL2s <- mxEvaluate(objective,univSatFit2s);
105
106
107 #example 3: Saturated Model with Cov Matrices and Matrices input
108 univSatModel3 <- mxModel("univSat3",
109     mxMatrix(
110         type="Symm", 
111         nrow=1, 
112         ncol=1, 
113         free=T, 
114         values=1, 
115         dimnames=list(selVars,selVars), 
116         name="expCov"
117     ),
118     mxData(
119         observed=var(testData), 
120         type="cov", 
121         numObs=1000 
122     ),
123     mxMLObjective(
124         covariance="expCov"
125     )
126     )
127 univSatFit3 <- mxRun(univSatModel3)
128 EC3 <- mxEvaluate(expCov, univSatFit3)
129 LL3 <- mxEvaluate(objective, univSatFit3)
130 SL3 <- univSatFit3@output$misc$SaturatedLikelihood
131 Chi3 <- LL3-SL3
132
133 #example 3m: Saturated Model with Cov Matrices & Means and Matrices input
134 univSatModel3m <- mxModel("univSat3m",
135     mxMatrix(
136         type="Symm", 
137         nrow=1, 
138         ncol=1, 
139         free=T, 
140         values=1, 
141         dimnames=list(selVars,selVars), 
142         name="expCov"
143     ),
144     mxMatrix(
145         type="Full", 
146         nrow=1, 
147         ncol=1, 
148         free=T, 
149         values=0, 
150         dimnames=list(NULL,selVars), 
151         name="expMean"
152     ),
153     mxData(
154         observed=var(testData), 
155         type="cov", 
156         numObs=1000,
157         means=mean(testData) 
158     ),
159     mxMLObjective(
160         covariance="expCov", 
161         means="expMean"
162     )
163     )
164 univSatFit3m <- mxRun(univSatModel3m)
165 EM3m <- mxEvaluate(expMean, univSatFit3m)
166 EC3m <- mxEvaluate(expCov, univSatFit3m)
167 LL3m <- mxEvaluate(objective, univSatFit3m);
168 SL3m <- univSatFit3m@output$misc$SaturatedLikelihood
169 Chi3m <- LL3m-SL3m
170
171 #examples 4: Saturated Model with Raw Data and Matrices input
172 univSatModel4 <- mxModel("univSat4",
173     mxMatrix(
174         type="Symm", 
175         nrow=1, 
176         ncol=1, 
177         free=T, 
178         values=1, 
179         dimnames=list(selVars,selVars), 
180         name="expCov"
181     ),
182     mxMatrix(
183         type="Full", 
184         nrow=1, 
185         ncol=1, 
186         free=T, 
187         values=0, 
188         dimnames=list(NULL,selVars), 
189         name="expMean"
190     ),
191     mxData(
192         observed=testData, 
193         type="raw", 
194     ),
195     mxFIMLObjective(
196         covariance="expCov", 
197         means="expMean"
198     )
199     )
200 univSatFit4 <- mxRun(univSatModel4)
201 EM4 <- mxEvaluate(expMean, univSatFit4)
202 EC4 <- mxEvaluate(expCov, univSatFit4)
203 LL4 <- mxEvaluate(objective, univSatFit4);
204
205
206 #Mx answers hard-coded
207 #example Mx..1: Saturated Model with Cov Matrices
208 Mx.EC1 <-  1.062112
209 Mx.LL1 <- -1.474434e-17
210
211 #example Mx..1m: Saturated Model with Cov Matrices & Means
212 Mx.EM1m <- 0.01680509
213 Mx.EC1m <- 1.062112
214 Mx.LL1m <- -1.108815e-13
215
216 Mx.EM2 <- 0.01680516
217 Mx.EC2 <- 1.061050
218 Mx.LL2 <- 2897.135
219
220
221 #OpenMx summary
222 cov <- rbind(cbind(EC1,EC1m,EC2),cbind(EC3,EC3m,EC4))
223 mean <- rbind(cbind(EM1m, EM2),cbind(EM3m,EM4))
224 like <- rbind(cbind(LL1,LL1m,LL2),cbind(LL3,LL3m,LL4))
225 cov; mean; like
226
227 #old Mx summary
228 Mx.cov <- cbind(Mx.EC1,Mx.EC1m,Mx.EC2)
229 Mx.mean <- cbind(Mx.EM1m,Mx.EM2)
230 Mx.like <- cbind(Mx.LL1,Mx.LL1m,Mx.LL2)
231 Mx.cov; Mx.mean; Mx.like
232
233
234 #Compare OpenMx results to Mx results (LL: likelihood; EC: expected covariance, EM: expected means)
235 #1:CovPat
236 omxCheckCloseEnough(Chi1,Mx.LL1,.001)
237 omxCheckCloseEnough(EC1,Mx.EC1,.001)
238 #1m:CovMPat 
239 omxCheckCloseEnough(Chi1m,Mx.LL1m,.001)
240 omxCheckCloseEnough(EC1m,Mx.EC1m,.001)
241 omxCheckCloseEnough(EM1m,Mx.EM1m,.001)
242 #2:RawPat 
243 omxCheckCloseEnough(LL2,Mx.LL2,.001)
244 omxCheckCloseEnough(EC2,Mx.EC2,.001)
245 omxCheckCloseEnough(EM2,Mx.EM2,.001)
246 #2:RawSPat
247 omxCheckCloseEnough(LL2s,Mx.LL2,.001)
248 omxCheckCloseEnough(EC2s,Mx.EC2,.001)
249 omxCheckCloseEnough(EM2s,Mx.EM2,.001)
250 #3:CovMat
251 omxCheckCloseEnough(Chi3,Mx.LL1,.001)
252 omxCheckCloseEnough(EC3,Mx.EC1,.001)
253 #3m:CovMPat 
254 omxCheckCloseEnough(Chi3m,Mx.LL1m,.001)
255 omxCheckCloseEnough(EC3m,Mx.EC1m,.001)
256 omxCheckCloseEnough(EM3m,Mx.EM1m,.001)
257 #4:RawMat
258 omxCheckCloseEnough(LL4,Mx.LL2,.001)
259 omxCheckCloseEnough(EC4,Mx.EC2,.001)
260 omxCheckCloseEnough(EM4,Mx.EM2,.001)
261