ifa: Store latent mean & cov in regular MxMatrix
[openmx:openmx.git] / models / failing / nonlinearDefinitionTest.R
1 #preamble of some kind\r
2 \r
3 library(OpenMx)\r
4 \r
5 #sample size\r
6 n <- 500\r
7 \r
8 set.seed(10)\r
9 \r
10 # generate data\r
11 x <- rnorm(n, 3, 2)\r
12 z <- rep(1:4, each=n/4)\r
13 y <- (.8^z) * x + rnorm(n)\r
14 \r
15 data <- data.frame(x,y,z)\r
16 \r
17 model <- mxModel("Non Linear Definition",\r
18   mxData(data, "raw"),\r
19   mxMatrix("Diag", 2, 2, T, 1, name="S"),\r
20   mxMatrix("Full", 2, 2, \r
21     free=c(F, F, F, F), \r
22     values=c(1, 0, 0, 1),  \r
23     labels=c(NA, "bexp[1,1]", NA, NA),\r
24     name="IA"),\r
25   mxMatrix("Full", 1, 1, T, 0.7, "beta1", name="B"),\r
26   mxMatrix("Full", 1, 1, F, 0, "data.z", name="D"),\r
27   mxMatrix("Full", 1, 2, T, 0, c("mu_x", "beta0"), name="M"),\r
28   mxAlgebra(B ^ D, name="bexp"),\r
29   mxAlgebra(M %*% t(IA), name="mu"),\r
30   mxAlgebra(IA %*% S %*% t(IA), name="sigma"),\r
31   mxFIMLObjective("sigma", "mu", dimnames=c("x", "y"))\r
32 )\r
33 \r
34 results <- mxRun(model)\r
35 \r
36 summary(results)\r
37 \r
38 check <- nls(y ~ b0 + (b1 ^ z) * x, start=list(b0=0, b1=0.7))\r
39 \r
40 #beta0\r
41 omxCheckCloseEnough(results@output$estimate[5], \r
42   summary(check)$parameters[1], 0.01)\r
43 \r
44 #beta1\r
45 omxCheckCloseEnough(results@output$estimate[3], \r
46   summary(check)$parameters[2], 0.01)\r