sim_rtmpt_data: Simulate data from RT-MPT models

View source: R/simulate_rtmpt.R

sim_rtmpt_dataR Documentation

Simulate data from RT-MPT models

Description

Simulate data from RT-MPT models using rtmpt_model objects. You can specify the random seed, number of subjects, number of trials per tree, and some parameters (mainly the same as prior_params from fit_rtmpt).

Usage

sim_rtmpt_data(model, seed, n.subj, n.trials, params = NULL)

Arguments

model

A list of the class rtmpt_model.

seed

Random seed number.

n.subj

Number of subjects.

n.trials

Number of trials per tree.

params

Named list of parameters from which the data will be generated. This must be the same named list as prior_params from fit_rtmpt, except for "mean_of_mu_alpha" and "var_of_mu_alpha", and has the same defaults. The difference to prior_params is, that vectors are allowed, but must match the length of the parameters in the model. It is not recommended to use the defaults since they lead to many probabilities close or equal to 0 and/or 1 and to RTs close or equal to 0. Allowed parameters are:

  • mean_of_mu_alpha: Probit transformed mean probability. If you want to have a group-level mean probability of 0.6, use mean_of_mu_alpha = qnorm(0.6) in the params list. Default is 0 or qnorm(.5).

  • var_of_mu_alpha: Variance of the probit transformed group-level mean probability. If specified, mu_alpha will be sampled from N(mean_of_mu_alpha, var_of_mu_alpha). If not, mu_alpha = mean_of_mu_alpha.

  • mean_of_exp_mu_beta: This is the expected exponential rate (E(exp(beta)) = E(lambda)) and 1/mean_of_exp_mu_beta is the expected process time (1/E(exp(beta)) = E(tau)). The default mean is set to 10, such that the expected process time is 0.1 seconds. For a mean process time of 200 ms, wirte mean_of_exp_mu_beta = 1000/200.

  • var_of_exp_mu_beta: The group-specific variance of the exponential rates. Since exp(mu_beta) is Gamma distributed, the rate of the distribution is just mean divided by variance and the shape is the mean times the rate. If specified, exp(mu_beta) is sampled from Gammashape = mean_of_exp_mu_beta^2/var_of_exp_mu_beta, rate = mean_of_exp_mu_beta/var_of_exp_mu_beta). If not, mu_alpha = mean_of_exp_mu_beta.

  • mean_of_mu_gamma: This is the expected mean parameter of the encoding and response execution times, which follow a normal distribution truncated from below at zero, so E(mu_gamma) < E(gamma). The default is 0. For a mean motor time of 550 ms write mean_of_mu_gamma = 550/1000.

  • var_of_mu_gamma: The group-specific variance of the mean parameter. If specified, mu_gamma is sampled from N(mean_of_mu_gamma, var_of_mu_gamma). If not, mu_gamma = mean_of_mu_gamma.

  • mean_of_omega_sqr: This is the expected residual variance (E(omega^2)). The default is 0.005.

  • var_of_omega_sqr: The variance of the residual variance (Var(omega^2)). If specified, omega_sqr is sampled from GAMMA(shape = mean_of_omega_sqr^2/var_of_omega_sqr, rate = mean_of_omega_sqr/var_of_omega_sqr). If not, omega_sqr = mean_of_omega_sqr. 0.01. The default of the mean and variance is equivalent to a shape and rate of 0.0025 and 0.5, respectivly.

  • df_of_sigma_sqr: Degrees of freedom for the individual variance of the response executions. The individual variance follows a scaled inverse chi-squared distribution with df_of_sigma_sqr degrees of freedom and omega^2 as scale. 2 is the default and it should be an integer.

  • sf_of_scale_matrix_SIGMA: The original scaling matrix (S) of the (scaled) inverse Wishart distribution for the process related parameters is an identity matrix S=I. sf_of_scale_matrix_SIGMA is a scaling factor, that scales this matrix (S=sf_of_scale_matrix_SIGMA*I). Its default is 1.

  • sf_of_scale_matrix_GAMMA: The original scaling matrix (S) of the (scaled) inverse Wishart distribution for the encoding and motor execution parameters is an identity matrix S=I. sf_of_scale_matrix_GAMMA is a scaling factor that scales this matrix (S=sf_of_scale_matrix_GAMMA*I). Its default is 1.

  • prec_epsilon: This is epsilon in the paper. It is the precision of xi (scaling parameter in the scaled inverse Wishart distribution). Its default is also 1.

  • add_df_to_invWish: If P is the number of parameters or rather the size of the scale matrix used in the (scaled) inverse Wishart distribution then add_df_to_invWish is the number of degrees of freedom that can be added to it. So DF = P + add_df_to_invWish. The default for add_df_to_invWish is 1, such that the correlations are uniformly distributed within [-1, 1].

  • SIGMA: Variance-covariance matrix of the process-related parameters. It must match the number of process-related parameters to be estimated. If scalars or vectors are given, they will be transformed into diagonal matrices using diag(SIGMA). If not specified it will be randomly generated using diag(xi)%*%rinvwishart(nu, S)%*%diag(xi), where nu is the number of process-related group-level parameters to be estimated plus add_df_to_invWish, S is the identity matrix multiplied by sf_of_scale_matrix_SIGMA, and xi (randomly generated from N(1, 1/prec_epsilon)) are the scaling factors for the scaled inverse wishart distribution. If SIGMA is used, sf_of_scale_matrix_SIGMA and add_df_to_invWish will be ignored for the process-related parameters.

  • GAMMA: Variance-covariance matrix of the motor time parameters. It must match the number of motor time parameters to be estimated. If scalars or vectors are given, they will be transformed into diagonal matrices using diag(SIGMA). If not specified it will be randomly generated using diag(xi)%*%rinvwishart(nu, S)%*%diag(xi), where nu is the number of motor time group-level parameters to be estimated plus add_df_to_invWish, S is the identity matrix multiplied by sf_of_scale_matrix_GAMMA, and xi (randomly generated from N(1, 1/prec_epsilon)) are the scaling factors for the scaled inverse wishart distribution. If GAMMA is used, sf_of_scale_matrix_GAMMA and add_df_to_invWish will be ignored for the motor time parameters.

Value

A list of the class rtmpt_sim containing

  • data: the data.frame with the simulated data,

  • gen_list: a list containing lists of the group-level and subject-specific parameters for the process-related parameters and the motor-related parameters, and the trial-specific probabilities, process-times, and motor-times,

  • specs: some specifications like the model, seed number, etc.,

Author(s)

Raphael Hartmann

Examples

########################################################################################
# Detect-Guess variant of the Two-High Threshold model.
# The encoding and motor execution times are assumed to be different for each response.
########################################################################################

mdl_2HTM <- "
# targets
do+(1-do)*g     ; 0
(1-do)*(1-g)    ; 1

# lures
(1-dn)*g        ; 0
dn+(1-dn)*(1-g) ; 1

# do: detect old; dn: detect new; g: guess
"

model <- to_rtmpt_model(mdl_file = mdl_2HTM)

# random group-level parameters
params <- list(mean_of_mu_alpha = 0, 
               #var_of_mu_alpha = 1
               mean_of_exp_mu_beta = 10, 
               var_of_exp_mu_beta = 10, 
               mean_of_mu_gamma = 0.5, 
               var_of_mu_gamma = 0.0025, 
               mean_of_omega_sqr = 0.005, 
               var_of_omega_sqr = 0.000025,
               df_of_sigma_sqr = 10, 
               sf_of_scale_matrix_SIGMA = 0.1, 
               sf_of_scale_matrix_GAMMA = 0.01, 
               prec_epsilon = 10,
               add_df_to_invWish = 5)

sim_dat <- sim_rtmpt_data(model, seed = 123, n.subj = 40, n.trials = 30, params = params)

# fixed group-level parameters
params <- list(mean_of_mu_alpha = 0, 
               mean_of_exp_mu_beta = 10, 
               mean_of_mu_gamma = 0.5, 
               mean_of_omega_sqr = 0.005, 
               df_of_sigma_sqr = 10, 
               sf_of_scale_matrix_SIGMA = 0.1, 
               sf_of_scale_matrix_GAMMA = 0.01, 
               prec_epsilon = 10,
               add_df_to_invWish = 5,
               SIGMA = diag(9),   # independent process-related params
               GAMMA = diag(2))   # independent motor time params

sim_dat <- sim_rtmpt_data(model, seed = 123, n.subj = 40, n.trials = 30, params = params)


rtmpt documentation built on April 10, 2022, 5:05 p.m.