Front-end changes to eliminate RAM --> FIML transformation
[openmx:openmx.git] / demo / SimpleRegression_MatrixRaw.R
1 #
2 #   Copyright 2007-2010 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: SimpleRegression_MatrixRaw.R  
19 #  Author: Ryne Estabrook
20 #    Date: 08 01 2009 
21 #
22 # Simple Regression model to estimate effect of independent on dependent variables
23 # Matrix style model input - Raw data input
24 #
25 # Revision History
26 #   Hermine Maes -- 10 08 2009 updated & reformatted
27 # -----------------------------------------------------------------------
28
29 require(OpenMx)
30
31 #Prepare Data
32 # -----------------------------------------------------------------------
33 data(myRegDataRaw)
34
35 SimpleDataRaw <- myRegDataRaw[,c("x","y")]
36
37 #Create an MxModel object
38 # -----------------------------------------------------------------------
39 uniRegModel <- mxModel("Simple Regression Matrix Specification", 
40     mxData(
41         observed=SimpleDataRaw,
42         type="raw"
43     ),
44     mxMatrix(
45         type="Full", 
46         nrow=2, 
47         ncol=2,
48         free=c(F, F,
49                T, F),
50         values=c(0, 0,
51                  1, 0),
52         labels=c(NA,     NA,
53                 "beta1", NA),
54         byrow=TRUE,
55         name="A"
56     ),
57     mxMatrix(
58         type="Symm", 
59         nrow=2, 
60         ncol=2, 
61         values=c(1, 0,
62                  0, 1),
63         free=c(T, F,
64                F, T),
65         labels=c("varx", NA,
66                   NA,    "residual"),
67         byrow=TRUE,
68         name="S"
69     ),
70     mxMatrix(
71         type="Iden",  
72         nrow=2, 
73         ncol=2,
74         name="F"
75     ),
76     mxMatrix(
77         type="Full", 
78         nrow=1, 
79         ncol=2,
80         free=c(T, T),
81         values=c(0, 0),
82         labels=c("meanx", "beta0"),
83         name="M"),
84     mxRAMObjective("A", "S", "F", "M",
85                 dimnames=c("x","y"))
86 )
87       
88 uniRegFit<-mxRun(uniRegModel)
89
90 summary(uniRegFit)
91 uniRegFit@output
92
93 #Compare OpenMx results to Mx results 
94 # -----------------------------------------------------------------------
95 omxCheckCloseEnough(uniRegFit@output$estimate[["beta0"]], 2.5478, 0.001)
96 omxCheckCloseEnough(uniRegFit@output$estimate[["beta1"]], 0.4831, 0.001)
97 omxCheckCloseEnough(uniRegFit@output$estimate[["residual"]], 0.6652, 0.001)
98 omxCheckCloseEnough(uniRegFit@output$estimate[["meanx"]], 0.0542, 0.001)
99 omxCheckCloseEnough(uniRegFit@output$estimate[["varx"]], 1.1053, 0.001)