Automated conversion of the demo directory
[openmx:openmx.git] / demo / SimpleRegression_MatrixRaw.R
1 #
2 #   Copyright 2007-2012 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: 2009.08.01 
21 #
22 # ModelType: Regression
23 # DataType: Continuous
24 # Field: None
25 #
26 # Purpose:
27 #      Simple Regression model to estimate effect of 
28 #      independent on dependent variables
29 #      Matrix style model input - Raw data input
30 #
31 # RevisionHistory:
32 #      Hermine Maes -- 10 08 2009 updated & reformatted
33 #      Ross Gore -- 06 06 2011  added Model, Data & Field metadata
34 # -----------------------------------------------------------------------------
35
36 require(OpenMx)
37 # Load Library
38 # -----------------------------------------------------------------------------
39
40 data(myRegDataRaw)
41 SimpleDataRaw <- myRegDataRaw[,c("x","y")]
42 # Prepare Data
43 # -----------------------------------------------------------------------------
44
45 uniRegModel <- mxModel("Simple Regression Matrix Specification", 
46     mxData(
47         observed=SimpleDataRaw,
48         type="raw"
49     ),
50     mxMatrix(
51         type="Full", 
52         nrow=2, 
53         ncol=2,
54         free=c(F, F,
55                T, F),
56         values=c(0, 0,
57                  1, 0),
58         labels=c(NA,     NA,
59                 "beta1", NA),
60         byrow=TRUE,
61         name="A"
62     ),
63     mxMatrix(
64         type="Symm", 
65         nrow=2, 
66         ncol=2, 
67         values=c(1, 0,
68                  0, 1),
69         free=c(T, F,
70                F, T),
71         labels=c("varx", NA,
72                   NA,    "residual"),
73         byrow=TRUE,
74         name="S"
75     ),
76     mxMatrix(
77         type="Iden",  
78         nrow=2, 
79         ncol=2,
80         name="F"
81     ),
82     mxMatrix(
83         type="Full", 
84         nrow=1, 
85         ncol=2,
86         free=c(T, T),
87         values=c(0, 0),
88         labels=c("meanx", "beta0"),
89         name="M"),
90     mxFitFunctionML(),mxExpectationRAM("A", "S", "F", "M",
91                 dimnames=c("x","y"))
92 )
93 # Create an MxModel object
94 # -----------------------------------------------------------------------------
95      
96 uniRegFit<-mxRun(uniRegModel)
97 # Fit the model with mxRun
98 # -----------------------------------------------------------------------------
99
100 summary(uniRegFit)
101 # Print a summary of the results
102 # -----------------------------------------------------------------------------
103
104 uniRegFit@output
105 # Print the outputs populated by mxRun
106 # -----------------------------------------------------------------------------
107
108 omxCheckCloseEnough(uniRegFit@output$estimate[["beta0"]], 2.5478, 0.001)
109 omxCheckCloseEnough(uniRegFit@output$estimate[["beta1"]], 0.4831, 0.001)
110 omxCheckCloseEnough(uniRegFit@output$estimate[["residual"]], 0.6652, 0.001)
111 omxCheckCloseEnough(uniRegFit@output$estimate[["meanx"]], 0.0542, 0.001)
112 omxCheckCloseEnough(uniRegFit@output$estimate[["varx"]], 1.1053, 0.001)
113 # Compare OpenMx results to Mx results 
114 # -----------------------------------------------------------------------------