Updated copyright to 2013 for R/ demo/ models/passing and src/ folders, and also...
[openmx:openmx.git] / models / passing / testAllint.R
1 #
2 #   Copyright 2007-2013 The OpenMx Project
3 #
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
7
8 #        http://www.apache.org/licenses/LICENSE-2.0
9
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.
15
16
17 # -----------------------------------------------------------------------
18 # Program: testAllint.R  
19 #  Author: Mike Neale and Tim Brick
20 #    Date: 2010-02-20
21 #
22 #  Simple tests for omxAllint().
23
24 # -----------------------------------------------------------------------
25
26 require(OpenMx)
27
28 # Simple case: 1 var, 3 levels
29
30 nv <- 1
31 maxnt <- 3
32 nvminus1 <- nv - 1
33
34 testAllint1 <- mxModel("TestAllint",
35                 mxMatrix(type="Stand", nrow=nv, free=F, name="Cov"),
36                 mxMatrix(type="Full", nrow=1, ncol=nv, free=F, name="Means"),
37                 mxMatrix(type="Full", nrow=maxnt, ncol=nv, free=F, values = c(-Inf, 2.326, Inf), name="Thresh"),
38                 mxAlgebra(omxAllInt(Cov, Means, Thresh), name="testAllint"))
39
40 testAllintFit1 <- mxRun(testAllint1)
41
42 #Test 2x3
43
44 nv <- 2
45 maxnt <- 3
46 nvminus1 <- nv - 1
47
48 testAllint2 <- mxModel("TestAllint",
49                 mxMatrix(type="Stand", nrow=nv, free=F, name="Cov"),
50                 mxMatrix(type="Full", nrow=1, ncol=nv, free=F, name="Means"),
51                 mxMatrix(type="Full", free=F, values = cbind(c(-Inf, 0, Inf), c(-Inf, 1.96, Inf)), name="Thresh"),
52                 mxAlgebra(omxAllInt(Cov, Means, Thresh), name="testAllint"))
53
54 testAllintFit2 <- mxRun(testAllint2)
55
56 #Test 2x4
57
58 nv <- 2
59 maxnt <- 4
60 nvminus1 <- nv - 1
61
62 testAllint3 <- mxModel("TestAllint",
63                 mxMatrix(type="Stand", nrow=nv, free=F, name="Cov"),
64                 mxMatrix(type="Full", nrow=1, ncol=nv, free=F, name="Means"),
65                 mxMatrix(type="Full", free=F, values = cbind(c(-Inf, 0, 1, Inf), c(-Inf, 1.96, 2.326, Inf)), name="Thresh"),
66                 mxAlgebra(omxAllInt(Cov, Means, Thresh), name="testAllint"))
67
68 testAllintFit3 <- mxRun(testAllint3)
69
70 #Test 2x4,1x5 with NAs
71
72 nv <- 3
73 maxnt <- 5
74 nvminus1 <- nv - 1
75
76 testAllint4 <- mxModel("TestAllint",
77                 mxMatrix(type="Stand", nrow=nv, free=F, name="Cov"),
78                 mxMatrix(type="Full", nrow=nv, ncol=1, free=F, name="Means"),
79                 mxMatrix(type="Full", free=F, values = cbind(c(-Inf, 0, 1, Inf, NA), c(-Inf, 1.96, 2.326, Inf, NA), c(-Inf, -1, 0, 1, Inf)), name="Thresh"),
80                 mxAlgebra(omxAllInt(Cov, Means, Thresh), name="testAllint"))
81
82 testAllintFit4 <- mxRun(testAllint4)
83
84 # Test different sizes of matrix
85 nv <- 3
86 maxnt <- 5
87 nvminus1 <- nv - 1
88
89 testAllint5 <- mxModel("TestAllint",
90                 mxMatrix(type="Stand", nrow=nv, free=F, name="Cov"),
91                 mxMatrix(type="Full", nrow=1, ncol=nv, free=F, name="Means"),
92                 mxMatrix(type="Full", free=F, values = cbind(c(-Inf, 0, 1, Inf), c(-Inf, 1.96, 2.326, Inf)), name="Thresh1"),
93                 mxMatrix(type="Full", free=F, values = cbind(c(-Inf, -1, 0, 1, Inf)), name="Thresh2"), 
94                 mxAlgebra(omxAllInt(Cov, Means, Thresh1, Thresh2), name="testAllint"))
95
96 testAllintFit5 <- mxRun(testAllint5)
97
98 #Test against Mx1 solutions
99 omxCheckCloseEnough(testAllintFit1[['testAllint']]@result, as.matrix(c(.99, .01)), 0.001)
100 omxCheckCloseEnough(testAllintFit2[['testAllint']]@result, as.matrix(c(0.4875,  0.0125, 0.4875, 0.0125)), 0.001)
101 omxCheckCloseEnough(testAllintFit3[['testAllint']]@result, as.matrix(c(0.4875,  0.0075, 0.0050, 0.3328, 0.0051, 0.0034, 0.1547, 0.0024, 0.0016)), 0.001)
102 omxCheckCloseEnough(testAllintFit4[['testAllint']]@result, as.matrix(c(7.7345E-02, 1.6641E-01, 1.6641E-01, 7.7345E-02, 1.1890E-03, 2.5581E-03, 2.5581E-03, 1.1890E-03, 7.9401E-04, 1.7083E-03, 1.7083E-03, 7.9401E-04, 5.2802E-02, 1.1360E-01, 1.1360E-01, 5.2802E-02, 8.1173E-04,  1.7464E-03, 1.7464E-03, 8.1173E-04, 5.4206E-04, 1.1662E-03, 1.1662E-03, 5.4206E-04, 2.4542E-02, 5.2802E-02, 5.2802E-02, 2.4542E-02, 3.7729E-04,  8.1173E-04, 8.1173E-04, 3.7729E-04, 2.5195E-04, 5.4206E-04, 5.4206E-04, 2.5195E-04)), 0.001)
103 omxCheckCloseEnough(testAllintFit5[['testAllint']]@result, as.matrix(c(7.7345E-02, 1.6641E-01, 1.6641E-01, 7.7345E-02, 1.1890E-03, 2.5581E-03, 2.5581E-03, 1.1890E-03, 7.9401E-04, 1.7083E-03, 1.7083E-03, 7.9401E-04, 5.2802E-02, 1.1360E-01, 1.1360E-01, 5.2802E-02, 8.1173E-04,  1.7464E-03, 1.7464E-03, 8.1173E-04, 5.4206E-04, 1.1662E-03, 1.1662E-03, 5.4206E-04, 2.4542E-02, 5.2802E-02, 5.2802E-02, 2.4542E-02, 3.7729E-04,  8.1173E-04, 8.1173E-04, 3.7729E-04, 2.5195E-04, 5.4206E-04, 5.4206E-04, 2.5195E-04)), 0.001)
104
105 omxCheckCloseEnough(mxEval(omxAllInt(Cov, Means, Thresh), testAllint1), as.matrix(c(.99, .01)), 0.001)
106 omxCheckCloseEnough(mxEval(omxAllInt(Cov, Means, Thresh), testAllint2), as.matrix(c(0.4875,  0.0125, 0.4875, 0.0125)), 0.001)
107 omxCheckCloseEnough(mxEval(omxAllInt(Cov, Means, Thresh), testAllint3), as.matrix(c(0.4875,  0.0075, 0.0050, 0.3328, 0.0051, 0.0034, 0.1547, 0.0024, 0.0016)), 0.001)
108 omxCheckCloseEnough(mxEval(omxAllInt(Cov, Means, Thresh), testAllint4), as.matrix(c(7.7345E-02, 1.6641E-01, 1.6641E-01, 7.7345E-02, 1.1890E-03, 2.5581E-03, 2.5581E-03, 1.1890E-03, 7.9401E-04, 1.7083E-03, 1.7083E-03, 7.9401E-04, 5.2802E-02, 1.1360E-01, 1.1360E-01, 5.2802E-02, 8.1173E-04,  1.7464E-03, 1.7464E-03, 8.1173E-04, 5.4206E-04, 1.1662E-03, 1.1662E-03, 5.4206E-04, 2.4542E-02, 5.2802E-02, 5.2802E-02, 2.4542E-02, 3.7729E-04,  8.1173E-04, 8.1173E-04, 3.7729E-04, 2.5195E-04, 5.4206E-04, 5.4206E-04, 2.5195E-04)), 0.001)
109 omxCheckCloseEnough(mxEval(omxAllInt(Cov, Means, Thresh1, Thresh2), testAllint5), as.matrix(c(7.7345E-02, 1.6641E-01, 1.6641E-01, 7.7345E-02, 1.1890E-03, 2.5581E-03, 2.5581E-03, 1.1890E-03, 7.9401E-04, 1.7083E-03, 1.7083E-03, 7.9401E-04, 5.2802E-02, 1.1360E-01, 1.1360E-01, 5.2802E-02, 8.1173E-04,  1.7464E-03, 1.7464E-03, 8.1173E-04, 5.4206E-04, 1.1662E-03, 1.1662E-03, 5.4206E-04, 2.4542E-02, 5.2802E-02, 5.2802E-02, 2.4542E-02, 3.7729E-04,  8.1173E-04, 8.1173E-04, 3.7729E-04, 2.5195E-04, 5.4206E-04, 5.4206E-04, 2.5195E-04)), 0.001)