| polyICT | R Documentation |
polyICT class generatorpolyICT class generator
polyICT class generator
polyICT$new()
The polyICT class generator specifies the inputs needed to simulate
data from a polynomial growth model. Once a polyICT object is created,
you can called its methods and examine or update its fields.
Methods are functions that come packaged within your polyICT object
and include $print() for printing the inputs,
$update() for changing the inputs,
$designCheck() for visualizing the design, and
$makeData for simulating a single data set. See the section
titled Methods.
Fields are all the data stored within a polyICT object,
some of which are provided by the user when initializing a polyICT
object, and others which are derived from these inputs and cannot be changed
by the user directly. These are detailed in the section titled Fields.
Fields can be accessed using the $ operator. For example, if your
polyICT object is called myPolyICT, use myPolyICT$inputMat.
newUsed to initialize a polyICT object as illustrated
in the Examples below. The following
parameters can be passed to $new():
groups Named numeric vector. The default is
c(group1=10, group2=10). The values are the number of participants
per group and the names are the group names.
phases Named list. The default is created using the helper function
makePhase. Each item in the list replicates the phase name
as many times as there are time points in that phase. Actual time points
are derived during initialization and stored in the field designMat.
propErrVar Named numeric vector of length 3. The default is
c(randFx=.5, res=.25, mserr=.25). The names must be
randFx, the proportion of the total variance due to random effects;
res, the proportion of the total variance due to residual
autocorrelation; and mserr, the proportion of total variance due to
measurement error. The three values must be proportions and must sum to 1.
randFxOrder Numeric vector. The default is 1. This is used
to specify the order of the polynomial growth model as follows:
randFxOrder=0 is an intercept only model, randFxOrder=1 adds
random slopes, randFxOrder=2 is a quadratic growth model,
randFxOrder=3 is a cubic growth model, etc.
randFxCor Numeric. The correlation(s) between all of the random
effects. This can be edited later and made group and/or phase specific. See
the Examples.
randFxVar Numeric vector. The default is c(1, 1). This
parameter is used to specify the variances of the random effects. The
number of variances should equal randFxOrder + 1. The random effects
variances are created as
Var[o] = propErrVar$randFx * (randFxVar[o]/sum(randFxVar)) where
o=0:randFxOredr. Hence randFxVar specifies the ratios of
the variance that is partitioned among the random effects and rescaled by
propErrVar$randFx. See makeData in the Methods
section for more details.
error An error object for the residual autocorrelation. The default
is armaErr$new(list(ar=c(.5), ma=c(0))), a first order AR process
with phi_1=.5. See armaErr. See makeData in the
Methods section for more details.
merror An error object for the measurement error. The default
is armaErr$new(list(), a white noise process. See
armaErr. Also see makeData in the Methods
section for more details.
ymean Numeric. The default is 100. The mean of the
final data. If either yMin or yMax are not NULL,
ymean is ignored.
ySD Numeric. The default is 15. The standard deviation of the
final data. If both yMin and yMax are not NULL,
ySD is ignored.
yMin Numeric. The default is NULL in which case yMin is
ignored. The minimum value for the final data.
yMax Numeric. The default is NULL in which case yMax is
ignored. The maximum value for the final data.
printSee designICT.
designCheckSee designICT.
updateA method to update editable field in a polyICT
object. Fields that can be updated are those listed in new. New
values are passed by name using, for example,
$update(groups=c(group1=25, group2=25), randFxOrder=2). The are no
defaults and any number of fields can be updated at once.
makeDataA method to simulate one data set from the settings
in a given polyICT object. This method is not intended to be used
directly by the user, who should instead use ICTpower to
automate a power analysis for one ICT design, or ICTpowerSim for
conducting a full power analysis simulation study. The parameters are
seed Numeric. The default is 123. A random seed for
reproducibility. If multiple calls are made to makeData, the seed
should change for each call as is done automatically by
ICTpower.
PersonAlyticsPower::designICT -> polyICT
inputMatA data.frame containing the inputs needed for
data simulation by phase and by group. Columns include Phase,
Group, nObs (the number of observations in a given phase),
n (the number of participants in a given group), the means and
variances for each random effect (see randFxOrder under new in
the Methods section), and the variance partioning (see
propErrVar under new in the Methods section). Instructions
for editing this field are given in the Examples.
The Mean columns are standardized effect sizes on the scale of Cohen's
d. For more detailed information and illustrations, see the Example
section.
randFxVarSee randFxVar in the new method. Phase and/or
group specific variances can be specified by editing inputMat after
initializing a polyICT object.
randFxCorA default correlation between the random effects. This can be edited later as shown in the examples.
propErrVarSee propErrVar in the new Method. See also
inputMat and the Examples for making these inputs phase and/or group
specific.
errorSee error in the new Method. See also
armaErr.
merrorSee merror in the new Method.
yMeanSee yMean in the new Method.
ySDSee ySD in the new Method.
yMinSee yMin in the new Method.
yMaxSee yMax in the new Method.
nThe total sample size.
nObsThe total number of observations (i.e., time points).
groupsSee groups in the new Method.
phasesSee phases in the new Method.
designMatThe design matrix with phases and timepoints.
meanNamesThe columns of InputMat
corresponding to the effect sizes/random effect means.
varNamesThe columns of InputMat
corresponding to the random effect variances.
phaseNamesThe names of the phases, taken from phases.
groupNamesThe names of the groups, taken from groups.
randFxFamA gamlss.family distribution for non-normal
random effects. Not implemented.
randFxFamParmsThe parameters for the gamlss.family
distribution specified in randFxFam. Not implemented.
inputMatA data.frame containing the inputs needed for
data simulation by phase and by group. Columns include Phase,
Group, nObs (the number of observations in a given phase),
n (the number of participants in a given group), the means and
variances for each random effect (see randFxOrder under new in
the Methods section), and the variance partioning (see
propErrVar under new in the Methods section). Instructions
for editing this field are given in the Examples.
The Mean columns are standardized effect sizes on the scale of Cohen's
d. For more detailed information and illustrations, see the Example
section.
randFxVarSee randFxVar in the new method. Phase and/or
group specific variances can be specified by editing inputMat after
initializing a polyICT object.
randFxCorA default correlation between the random effects. This can be edited later as shown in the examples.
propErrVarSee propErrVar in the new Method. See also
inputMat and the Examples for making these inputs phase and/or group
specific.
errorSee error in the new Method. See also
armaErr.
merrorSee merror in the new Method.
yMeanSee yMean in the new Method.
ySDSee ySD in the new Method.
yMinSee yMin in the new Method.
yMaxSee yMax in the new Method.
nThe total sample size.
nObsThe total number of observations (i.e., time points).
groupsSee groups in the new Method.
phasesSee phases in the new Method.
designMatThe design matrix with phases and timepoints.
meanNamesThe columns of InputMat
corresponding to the effect sizes/random effect means.
varNamesThe columns of InputMat
corresponding to the random effect variances.
phaseNamesThe names of the phases, taken from phases.
groupNamesThe names of the groups, taken from groups.
randFxFamA gamlss.family distribution for non-normal
random effects. Not implemented.
randFxFamParmsThe parameters for the gamlss.family
distribution specified in randFxFam. Not implemented.
new()polyICT$new( groups = c(group1 = 10, group2 = 10), phases = makePhase(), propErrVar = c(randFx = 0.5, res = 0.25, mserr = 0.25), randFxOrder = 1, randFxCor = 0.2, randFxVar = c(1, 1), error = armaErr$new(), merror = armaErr$new(list()), ySD = 1, yMean = 0, yMin = NULL, yMax = NULL, yCut = NULL, randFxFam = qNO, randFxFamParms = list(mu = 0.5, sigma = 1) )
print()polyICT$print(...)
update()polyICT$update(...)
makeData()polyICT$makeData(seed = 123, y0atyMean = TRUE, yMean = 0)
clone()The objects of this class are cloneable with this method.
polyICT$clone(deep = FALSE)
deepWhether to make a deep clone.
Stephen Tueller stueller@rti.org
# Set up a new polyICT object using the default parameter settings
myPolyICT <- polyICT$new(
groups = c(group1=10, group2=10) ,
phases = makePhase() ,
propErrVar = c(randFx=.5, res=.25, mserr=.25) ,
randFxOrder = 1 ,
randFxCor = 0.2 ,
randFxVar = c(1, 1) ,
error = armaErr$new() ,
merror = armaErr$new(list()) ,
ySD = 15 ,
yMean = 100 ,
)
# print the object
myPolyICT
# equivalent to:
#print(myPolyICT)
#myPolyICT$print()
# fields can be accessed directly using $
myPolyICT$inputMat
myPolyICT$designMat
# edit the means in inputMat so that
#
# 1. group1 is left with no change in all three phases
# 2. group2 has no change at phase1 (i.e., baseline), phase2 has a phase
# jump to d=.3 with no within phase change, and phase3 starts where it
# left off at d=.3 and decreases by d=-.6 through the remained of the
# phase.
#
# Note that editing inputMat may be easier using
#edit(myPolyICT)
# but this is more diffucult to replicate.
myPolyICT$inputMat[myPolyICT$inputMat$Phase=='phase2' &
myPolyICT$inputMat$Group=='group2', 'Mean0'] <- .3
myPolyICT$inputMat[myPolyICT$inputMat$Phase=='phase3' &
myPolyICT$inputMat$Group=='group2', 'Mean0'] <- .6
myPolyICT$inputMat[myPolyICT$inputMat$Phase=='phase3' &
myPolyICT$inputMat$Group=='group2', 'Mean1'] <- -.06
myPolyICT$inputMat
# now do a large sample (n=5,000/group) check of the design using $designCheck.
# Notice that in group 2, there is a jump of about .3*15=4.5 between phases
# one and two, and that within phase 3 there is -.6*15=-9 point reduction. This
# is not run when calling example(polyICT) due to it taking several seconds to
# simulate the large sample data.
## Not run:
myPolyICT$designCheck()
# for comparison, see what can happen under finite samples (n=10/group).
# Notice that there are substantial changes in group1 even though none are
# specified, and that the changes in group2 can be different from what was
# specified. This illustrates possible. finite sample behaviors.
myPolyICT$designCheck(seed=1, npg=10, ylim=c(75,125))
myPolyICT$designCheck(seed=2, npg=10, ylim=c(75,125))
myPolyICT$designCheck(seed=3, npg=10, ylim=c(75,125))
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.