File: ModelTransformTest.R

package info (click to toggle)
r-cran-openmx 2.21.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 14,412 kB
  • sloc: cpp: 36,577; ansic: 13,811; fortran: 2,001; sh: 1,440; python: 350; perl: 21; makefile: 5
file content (93 lines) | stat: -rw-r--r-- 2,047 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#
#   Copyright 2007-2018 by the individuals mentioned in the source code history
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
# 
#        http://www.apache.org/licenses/LICENSE-2.0
# 
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.

require(OpenMx)

fix_matrix <- function(m)
{
 for (i in 1:dim(m$labels)[1])
 {
	for (j in 1:dim(m$labels)[2])
	{
				m$free[i,j] <- FALSE;	
	}
 }
 return(m);
}

# (2)
# generate random normal data  Y~N(0,1)
#
N <- 1000
Y <- rnorm(N,0,1)
data <- data.frame(Y)
names(data) <- c("Y")

# (3)
# create a dummy model which estimates the mean 
# of an observed variable with unit variance
#
model <- mxModel("One Factor", type="RAM",
      manifestVars = c("Y"),
      latentVars = c(),
      mxPath(from=c("Y"), arrows=2,
            free=F, values=1.0, label=c("lat_var")),
mxPath(
        from="one",
        to=c("Y"),
        arrows=1,
        free=TRUE,
        values=c(1),
        labels=c("mean")
    )    ,        
      mxData( data, type="raw", numObs=dim(data)[1]) 
     );

# (4)
# run model (with a single free param)
# and estimate mean
#
run <- mxRun(model);


#################
# rewrite version
#################

m <- run$A$values[1,1]

test <- mxModel("test",
	mxData(data, "raw"),
	mxMatrix("Symm", 1, 1, FALSE, 1, name="S"),
	mxMatrix("Full", 1, 1, name="A"),
	mxMatrix("Iden", 1, name="F"),
	mxMatrix("Full", 1, 1, FALSE, m, name="M"),
	mxFitFunctionML(),mxExpectationRAM("A", "S", "F", "M", dimnames=c("Y"))
	)
	
# runs fine
test2 <- mxRun(test)


# flipping parameters

test3 <- run
test3$M$free[1,1] <- F

test4 <- mxRun(test3)

# test3$output <- list()

test5 <- mxRun(test3)