From 466c2a127727ef192d6e0fb6589b9050162c844e Mon Sep 17 00:00:00 2001 From: corentinchoisy Date: Thu, 4 Jan 2024 15:56:19 +0100 Subject: [PATCH] Created difficulty matrix generation R script + initial scenarios --- Scripts/R/generate_item_difficulties.R | 39 ++++++++++ .../NoDIF/scenarios_noDIF_baseline.do | 78 +++++++++++++++++++ Scripts/test.do | 0 3 files changed, 117 insertions(+) create mode 100644 Scripts/R/generate_item_difficulties.R create mode 100644 Scripts/Scenarios/NoDIF/scenarios_noDIF_baseline.do delete mode 100644 Scripts/test.do diff --git a/Scripts/R/generate_item_difficulties.R b/Scripts/R/generate_item_difficulties.R new file mode 100644 index 0000000..dfdb477 --- /dev/null +++ b/Scripts/R/generate_item_difficulties.R @@ -0,0 +1,39 @@ +################################################### +# Function: generate_diff_irt +# Generates item difficulty threshold matrix for +# IRT model simulation +################################################### + + +generate_diff_irt <- function(J=7,M=4) { + # if J=7, item 5. Else, item 3 + if(J==7){ + i <- 5 + } + if(J==4){ + i <- 3 + } + difficulties = matrix(c(0), J,M-1) + rownames(difficulties)=paste("item",1:J) + colnames(difficulties)=paste("Moda", 1:(M-1)) + for (j in 1:J){ + difficulties[j,1] = qnorm(j/(J+1)) + } + for (j in 1:J){ + for (m in 2:(M-1)){ + difficulties[j,m]= difficulties[j,1]+(m-1)*2/(M-2) + } + } + difficulties = difficulties-mean(difficulties) + return(difficulties) +} + + + + + +################################################### +# GENERATE MATRIX FOR SIMULATION +################################################### + + diff --git a/Scripts/Scenarios/NoDIF/scenarios_noDIF_baseline.do b/Scripts/Scenarios/NoDIF/scenarios_noDIF_baseline.do new file mode 100644 index 0000000..80a16ac --- /dev/null +++ b/Scripts/Scenarios/NoDIF/scenarios_noDIF_baseline.do @@ -0,0 +1,78 @@ +*================================================================================================================================================= +* Date : 2024-01-04 +* Stata version : Stata 18 SE +* +* This program creates dataset without DIF for a randomized controlled trial scenario +* +* ado-files needed : - simirt (version 4.3 August 29, 2019, available on OSF) +* +* outputs : TBA +* +* +* Warning : To obtain reproduce the data obtained in the .csv files in this repository, use 'simirt_setseed.ado' instead of 'simirt.ado' +* +* +*================================================================================================================================================ + +* Load simirt.ado +adopath+"/home/corentin/Documents/These/Recherche/Simulations/Modules/simirt.ado" + +* Set data output folder path +local path = "/home/corentin/Documents/These/Recherche/Simulations/Data" + + + +* Scenarios with : n = 800 +*========================== + +* Scenario No. 7 : J = 4 items + C1 et C2 not correlated + +forvalues replication = 1/500 { + di "replication = `replication'" + mat D= (-1.84,-0.84,0.16 \ -1.25,-0.25,0.75\-0.75,0.25,1.25 \-0.16,0.84,1.84) + qui simirt, nbobs(200) mu(0) cov(1) dim(4) pcm(D) clear + qui gen C1 = 0 + qui gen C2 = 0 + tempfile grp00 + qui save `grp00',replace + + mat D= (-1.84,-0.84,0.16 \ -1.25,-0.25,0.75\-0.75,0.25,1.25 \-0.16,0.84,1.84) + qui simirt, nbobs(200) mu(0) cov(1) dim(4) pcm(D) clear + qui gen C1 = 1 + qui gen C2 = 0 + tempfile grp10 + qui save `grp10',replace + + mat D= (-1.84,-0.84,0.16 \ -1.25,-0.25,0.75\-0.75,0.25,1.25 \-0.16,0.84,1.84) + qui simirt, nbobs(200) mu(0) cov(1) dim(4) pcm(D) clear + qui gen C1 = 0 + qui gen C2 = 1 + tempfile grp01 + qui save `grp01',replace + + mat D= (-1.84,-0.84,0.16 \ -1.25,-0.25,0.75\-0.75,0.25,1.25 \-0.16,0.84,1.84) + qui simirt, nbobs(200) mu(0) cov(1) dim(4) pcm(D) clear + qui gen C1 = 1 + qui gen C2 = 1 + tempfile grp11 + qui save `grp11',replace + + clear + use `grp00' + qui append using `grp10' + qui append using `grp01' + qui append using `grp11' + drop id + qui gen id = _n + order(id) + qui gen replication = `replication' + if `replication'==1{ + tempfile data + qui save `data' + } + else{ + qui append using `data' + qui save `data',replace + } + } + export delimited using "`path'\Scenario7.csv", replace diff --git a/Scripts/test.do b/Scripts/test.do deleted file mode 100644 index e69de29..0000000