Started PCM analysis using R TAM

main
Corentin Choisy 11 months ago
parent c9a2b125a8
commit c86b9b271f

1
.gitignore vendored

@ -1 +1,2 @@
*.csv
.Rproj.user

Binary file not shown.

@ -0,0 +1,512 @@
}
#######################################
## SCENARIO ANALYSIS
#######################################
registerDoMC(4)
######### Scenario 1: J=4 / M=2 / H_0 TRUE
dat1 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
dat2 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
dat3 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
replicate_pcm_analysis(dat1)
pcm_analysis <- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML') {
nbitems <- sum(sapply(1:20,function(x) paste0('item',x)) %in% colnames(df))
resp <- df[,sapply(seq(1,nbitems),function(x) paste0('item',x))]
if (method=='MML') {
tam1 <- tam.mml(resp=resp,Y=df[,treatment],irtmodel = irtmodel,est.variance = T,verbose=F)
}
if (method=='JML') {
tam1 <- tam.jml(resp=resp,group=1+df[,treatment])
}
if (method!='MML' & method!='JML') {
stop('Invalid method. Please choose among MML or JML')
}
return(tam1)
}
replicate_pcm_analysis <- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML',sequence='replication',truebeta=0,eff.size=0,difsize=NA,nbdif=0) {
nbitems <- sum(sapply(1:20,function(x) paste0('item',x)) %in% colnames(df))
resp <- df[,sapply(seq(1,nbitems),function(x) paste0('item',x))]
if (method=='MML') {
n <- max(df[,sequence])
print(n)
tam1 <- pbmclapply(seq(1,n),
function(x) pcm_analysis(df=df[df[,sequence]==x,],treatment=treatment,irtmodel=irtmodel)
)
}
listitems <- sapply(seq(1,nbitems),function(x) paste0('item',x))
returndat <- data.frame(matrix(nrow=max(df[,sequence]),ncol=length(listitems)))
colnames(returndat) <- listitems
for (s in seq(1,max(df[,sequence]))) {
for (k in seq(1,nbitems)) {
returndat[s,paste0('item',k)] <- tam1[[s]]$xsi$xsi[k]
}
}
returndat$beta <- sapply(seq(1,max(df[,sequence])),function(k) tam1[[k]]$beta[2])
returndat$se.beta <- 1.413612*sapply(seq(1,max(df[,sequence])),function(k) tam.se(tam1[[k]])$beta$se.Dim1[2] )
returndat$low.ci.beta <- returndat$beta-1.96*returndat$se.beta
returndat$high.ci.beta <- returndat$beta+1.96*returndat$se.beta
returndat$true.value.in.ci <- 1*(truebeta>returndat$low.ci.beta & truebeta<returndat$high.ci.beta)
returndat$h0.rejected <- 1*(0>returndat$low.ci.beta & 0<returndat$high.ci.beta)
if (truebeta==0) {
returndat$beta.same.sign.truebeta <- NA
} else {
returndat$beta.same.sign.truebeta <- 1*(sign(truebeta)==sign(returndat$beta))
}
returndat2 <- data.frame(J=rep(nbitems,max(df[,sequence])),
M=1+max(df$item1),
N=nrow(df[df$replication==1,])/2,
eff.size=eff.size,
dif.size= difsize,
nb.dif= nbdif
)
returndat <- cbind(returndat2,returndat)
return(returndat)
}
replicate_pcm_analysis(dat1)
########################################
## LIBRARIES
########################################
library(TAM)
library(doMC)
library(parallel)
library(pbmcapply)
library(SimDesign)
#######################################
## ANALYSIS FUNCTIONS
#######################################
pcm_analysis <- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML') {
nbitems <- sum(sapply(1:20,function(x) paste0('item',x)) %in% colnames(df))
resp <- df[,sapply(seq(1,nbitems),function(x) paste0('item',x))]
if (method=='MML') {
tam1 <- quiet(tam.mml(resp=resp,Y=df[,treatment],irtmodel = irtmodel,est.variance = T,verbose=F))
}
if (method=='JML') {
tam1 <- tam.jml(resp=resp,group=1+df[,treatment])
}
if (method!='MML' & method!='JML') {
stop('Invalid method. Please choose among MML or JML')
}
return(tam1)
}
replicate_pcm_analysis <- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML',sequence='replication',truebeta=0,eff.size=0,difsize=NA,nbdif=0) {
nbitems <- sum(sapply(1:20,function(x) paste0('item',x)) %in% colnames(df))
resp <- df[,sapply(seq(1,nbitems),function(x) paste0('item',x))]
if (method=='MML') {
n <- max(df[,sequence])
print(n)
tam1 <- pbmclapply(seq(1,n),
function(x) pcm_analysis(df=df[df[,sequence]==x,],treatment=treatment,irtmodel=irtmodel)
)
}
listitems <- sapply(seq(1,nbitems),function(x) paste0('item',x))
returndat <- data.frame(matrix(nrow=max(df[,sequence]),ncol=length(listitems)))
colnames(returndat) <- listitems
for (s in seq(1,max(df[,sequence]))) {
for (k in seq(1,nbitems)) {
returndat[s,paste0('item',k)] <- tam1[[s]]$xsi$xsi[k]
}
}
returndat$beta <- sapply(seq(1,max(df[,sequence])),function(k) tam1[[k]]$beta[2])
returndat$se.beta <- 1.413612*sapply(seq(1,max(df[,sequence])),function(k) tam.se(tam1[[k]])$beta$se.Dim1[2] )
returndat$low.ci.beta <- returndat$beta-1.96*returndat$se.beta
returndat$high.ci.beta <- returndat$beta+1.96*returndat$se.beta
returndat$true.value.in.ci <- 1*(truebeta>returndat$low.ci.beta & truebeta<returndat$high.ci.beta)
returndat$h0.rejected <- 1*(0>returndat$low.ci.beta & 0<returndat$high.ci.beta)
if (truebeta==0) {
returndat$beta.same.sign.truebeta <- NA
} else {
returndat$beta.same.sign.truebeta <- 1*(sign(truebeta)==sign(returndat$beta))
}
returndat2 <- data.frame(J=rep(nbitems,max(df[,sequence])),
M=1+max(df$item1),
N=nrow(df[df$replication==1,])/2,
eff.size=eff.size,
dif.size= difsize,
nb.dif= nbdif
)
returndat <- cbind(returndat2,returndat)
return(returndat)
}
#######################################
## SCENARIO ANALYSIS
#######################################
registerDoMC(4)
######### Scenario 1: J=4 / M=2 / H_0 TRUE
dat1 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
dat2 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
dat3 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
replicate_pcm_analysis(dat1)
########################################
## LIBRARIES
########################################
library(TAM)
library(doMC)
library(parallel)
library(pbmcapply)
#######################################
## ANALYSIS FUNCTIONS
#######################################
pcm_analysis <- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML') {
nbitems <- sum(sapply(1:20,function(x) paste0('item',x)) %in% colnames(df))
resp <- df[,sapply(seq(1,nbitems),function(x) paste0('item',x))]
if (method=='MML') {
tam1 <- invisible(tam.mml(resp=resp,Y=df[,treatment],irtmodel = irtmodel,est.variance = T,verbose=F))
}
if (method=='JML') {
tam1 <- tam.jml(resp=resp,group=1+df[,treatment])
}
if (method!='MML' & method!='JML') {
stop('Invalid method. Please choose among MML or JML')
}
return(tam1)
}
replicate_pcm_analysis <- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML',sequence='replication',truebeta=0,eff.size=0,difsize=NA,nbdif=0) {
nbitems <- sum(sapply(1:20,function(x) paste0('item',x)) %in% colnames(df))
resp <- df[,sapply(seq(1,nbitems),function(x) paste0('item',x))]
if (method=='MML') {
n <- max(df[,sequence])
print(n)
tam1 <- pbmclapply(seq(1,n),
function(x) pcm_analysis(df=df[df[,sequence]==x,],treatment=treatment,irtmodel=irtmodel)
)
}
listitems <- sapply(seq(1,nbitems),function(x) paste0('item',x))
returndat <- data.frame(matrix(nrow=max(df[,sequence]),ncol=length(listitems)))
colnames(returndat) <- listitems
for (s in seq(1,max(df[,sequence]))) {
for (k in seq(1,nbitems)) {
returndat[s,paste0('item',k)] <- tam1[[s]]$xsi$xsi[k]
}
}
returndat$beta <- sapply(seq(1,max(df[,sequence])),function(k) tam1[[k]]$beta[2])
returndat$se.beta <- 1.413612*sapply(seq(1,max(df[,sequence])),function(k) tam.se(tam1[[k]])$beta$se.Dim1[2] )
returndat$low.ci.beta <- returndat$beta-1.96*returndat$se.beta
returndat$high.ci.beta <- returndat$beta+1.96*returndat$se.beta
returndat$true.value.in.ci <- 1*(truebeta>returndat$low.ci.beta & truebeta<returndat$high.ci.beta)
returndat$h0.rejected <- 1*(0>returndat$low.ci.beta & 0<returndat$high.ci.beta)
if (truebeta==0) {
returndat$beta.same.sign.truebeta <- NA
} else {
returndat$beta.same.sign.truebeta <- 1*(sign(truebeta)==sign(returndat$beta))
}
returndat2 <- data.frame(J=rep(nbitems,max(df[,sequence])),
M=1+max(df$item1),
N=nrow(df[df$replication==1,])/2,
eff.size=eff.size,
dif.size= difsize,
nb.dif= nbdif
)
returndat <- cbind(returndat2,returndat)
return(returndat)
}
#######################################
## SCENARIO ANALYSIS
#######################################
registerDoMC(4)
######### Scenario 1: J=4 / M=2 / H_0 TRUE
dat1 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
dat2 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
dat3 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
replicate_pcm_analysis(dat1)
########################################
## LIBRARIES
########################################
library(TAM)
library(doMC)
library(parallel)
library(pbmcapply)
library(SimDesign)
#######################################
## ANALYSIS FUNCTIONS
#######################################
pcm_analysis <- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML') {
nbitems <- sum(sapply(1:20,function(x) paste0('item',x)) %in% colnames(df))
resp <- df[,sapply(seq(1,nbitems),function(x) paste0('item',x))]
if (method=='MML') {
tam1 <- quiet(tam.mml(resp=resp,Y=df[,treatment],irtmodel = irtmodel,est.variance = T,verbose=F))
}
if (method=='JML') {
tam1 <- tam.jml(resp=resp,group=1+df[,treatment])
}
if (method!='MML' & method!='JML') {
stop('Invalid method. Please choose among MML or JML')
}
return(tam1)
}
replicate_pcm_analysis <- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML',sequence='replication',truebeta=0,eff.size=0,difsize=NA,nbdif=0) {
nbitems <- sum(sapply(1:20,function(x) paste0('item',x)) %in% colnames(df))
resp <- df[,sapply(seq(1,nbitems),function(x) paste0('item',x))]
if (method=='MML') {
n <- max(df[,sequence])
print(n)
tam1 <- pbmclapply(seq(1,n),
function(x) quiet(pcm_analysis(df=df[df[,sequence]==x,],treatment=treatment,irtmodel=irtmodel))
)
}
listitems <- sapply(seq(1,nbitems),function(x) paste0('item',x))
returndat <- data.frame(matrix(nrow=max(df[,sequence]),ncol=length(listitems)))
colnames(returndat) <- listitems
for (s in seq(1,max(df[,sequence]))) {
for (k in seq(1,nbitems)) {
returndat[s,paste0('item',k)] <- tam1[[s]]$xsi$xsi[k]
}
}
returndat$beta <- sapply(seq(1,max(df[,sequence])),function(k) tam1[[k]]$beta[2])
returndat$se.beta <- 1.413612*sapply(seq(1,max(df[,sequence])),function(k) tam.se(tam1[[k]])$beta$se.Dim1[2] )
returndat$low.ci.beta <- returndat$beta-1.96*returndat$se.beta
returndat$high.ci.beta <- returndat$beta+1.96*returndat$se.beta
returndat$true.value.in.ci <- 1*(truebeta>returndat$low.ci.beta & truebeta<returndat$high.ci.beta)
returndat$h0.rejected <- 1*(0>returndat$low.ci.beta & 0<returndat$high.ci.beta)
if (truebeta==0) {
returndat$beta.same.sign.truebeta <- NA
} else {
returndat$beta.same.sign.truebeta <- 1*(sign(truebeta)==sign(returndat$beta))
}
returndat2 <- data.frame(J=rep(nbitems,max(df[,sequence])),
M=1+max(df$item1),
N=nrow(df[df$replication==1,])/2,
eff.size=eff.size,
dif.size= difsize,
nb.dif= nbdif
)
returndat <- cbind(returndat2,returndat)
return(returndat)
}
#######################################
## SCENARIO ANALYSIS
#######################################
registerDoMC(4)
######### Scenario 1: J=4 / M=2 / H_0 TRUE
dat1 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
dat2 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
dat3 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
replicate_pcm_analysis(dat1)
View(tam.mml)
library(TAM)
library(doMC)
library(parallel)
library(pbmcapply)
foo <- deparse(tam.mml)
tam.mml <- eval(parse(text=gsub("cat","#cat",foo)))
library(TAM)
library(doMC)
library(parallel)
library(pbmcapply)
oldcat <- cat
cat <- function( ..., file="", sep=" ", fill=F, labels=NULL, append=F ) {}
#######################################
## ANALYSIS FUNCTIONS
#######################################
pcm_analysis <- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML') {
nbitems <- sum(sapply(1:20,function(x) paste0('item',x)) %in% colnames(df))
resp <- df[,sapply(seq(1,nbitems),function(x) paste0('item',x))]
if (method=='MML') {
tam1 <- quiet(tam.mml(resp=resp,Y=df[,treatment],irtmodel = irtmodel,est.variance = T,verbose=F))
}
if (method=='JML') {
tam1 <- tam.jml(resp=resp,group=1+df[,treatment])
}
if (method!='MML' & method!='JML') {
stop('Invalid method. Please choose among MML or JML')
}
return(tam1)
}
replicate_pcm_analysis <- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML',sequence='replication',truebeta=0,eff.size=0,difsize=NA,nbdif=0) {
nbitems <- sum(sapply(1:20,function(x) paste0('item',x)) %in% colnames(df))
resp <- df[,sapply(seq(1,nbitems),function(x) paste0('item',x))]
if (method=='MML') {
n <- max(df[,sequence])
print(n)
tam1 <- pbmclapply(seq(1,n),
function(x) pcm_analysis(df=df[df[,sequence]==x,],treatment=treatment,irtmodel=irtmodel)
)
}
listitems <- sapply(seq(1,nbitems),function(x) paste0('item',x))
returndat <- data.frame(matrix(nrow=max(df[,sequence]),ncol=length(listitems)))
colnames(returndat) <- listitems
for (s in seq(1,max(df[,sequence]))) {
for (k in seq(1,nbitems)) {
returndat[s,paste0('item',k)] <- tam1[[s]]$xsi$xsi[k]
}
}
returndat$beta <- sapply(seq(1,max(df[,sequence])),function(k) tam1[[k]]$beta[2])
returndat$se.beta <- 1.413612*sapply(seq(1,max(df[,sequence])),function(k) tam.se(tam1[[k]])$beta$se.Dim1[2] )
returndat$low.ci.beta <- returndat$beta-1.96*returndat$se.beta
returndat$high.ci.beta <- returndat$beta+1.96*returndat$se.beta
returndat$true.value.in.ci <- 1*(truebeta>returndat$low.ci.beta & truebeta<returndat$high.ci.beta)
returndat$h0.rejected <- 1*(0>returndat$low.ci.beta & 0<returndat$high.ci.beta)
if (truebeta==0) {
returndat$beta.same.sign.truebeta <- NA
} else {
returndat$beta.same.sign.truebeta <- 1*(sign(truebeta)==sign(returndat$beta))
}
returndat2 <- data.frame(J=rep(nbitems,max(df[,sequence])),
M=1+max(df$item1),
N=nrow(df[df$replication==1,])/2,
eff.size=eff.size,
dif.size= difsize,
nb.dif= nbdif
)
returndat <- cbind(returndat2,returndat)
return(returndat)
}
#######################################
## SCENARIO ANALYSIS
#######################################
registerDoMC(4)
######### Scenario 1: J=4 / M=2 / H_0 TRUE
dat1 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
dat2 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
dat3 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
replicate_pcm_analysis(dat1)
########################################
## LIBRARIES
########################################
library(TAM)
library(doMC)
library(parallel)
library(pbmcapply)
oldcat <- cat
cat <- function( ..., file="", sep=" ", fill=F, labels=NULL, append=F ) {}
#######################################
## ANALYSIS FUNCTIONS
#######################################
pcm_analysis <- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML') {
nbitems <- sum(sapply(1:20,function(x) paste0('item',x)) %in% colnames(df))
resp <- df[,sapply(seq(1,nbitems),function(x) paste0('item',x))]
if (method=='MML') {
tam1 <- quiet(tam.mml(resp=resp,Y=df[,treatment],irtmodel = irtmodel,est.variance = T,verbose=F))
}
if (method=='JML') {
tam1 <- tam.jml(resp=resp,group=1+df[,treatment])
}
if (method!='MML' & method!='JML') {
stop('Invalid method. Please choose among MML or JML')
}
return(tam1)
}
replicate_pcm_analysis <- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML',sequence='replication',truebeta=0,eff.size=0,difsize=NA,nbdif=0) {
nbitems <- sum(sapply(1:20,function(x) paste0('item',x)) %in% colnames(df))
resp <- df[,sapply(seq(1,nbitems),function(x) paste0('item',x))]
if (method=='MML') {
n <- max(df[,sequence])
print(n)
tam1 <- pbmclapply(seq(1,n),
function(x) pcm_analysis(df=df[df[,sequence]==x,],treatment=treatment,irtmodel=irtmodel)
)
}
listitems <- sapply(seq(1,nbitems),function(x) paste0('item',x))
returndat <- data.frame(matrix(nrow=max(df[,sequence]),ncol=length(listitems)))
colnames(returndat) <- listitems
for (s in seq(1,max(df[,sequence]))) {
for (k in seq(1,nbitems)) {
returndat[s,paste0('item',k)] <- tam1[[s]]$xsi$xsi[k]
}
}
returndat$beta <- sapply(seq(1,max(df[,sequence])),function(k) tam1[[k]]$beta[2])
returndat$se.beta <- 1.413612*sapply(seq(1,max(df[,sequence])),function(k) tam.se(tam1[[k]])$beta$se.Dim1[2] )
returndat$low.ci.beta <- returndat$beta-1.96*returndat$se.beta
returndat$high.ci.beta <- returndat$beta+1.96*returndat$se.beta
returndat$true.value.in.ci <- 1*(truebeta>returndat$low.ci.beta & truebeta<returndat$high.ci.beta)
returndat$h0.rejected <- 1*(0>returndat$low.ci.beta & 0<returndat$high.ci.beta)
if (truebeta==0) {
returndat$beta.same.sign.truebeta <- NA
} else {
returndat$beta.same.sign.truebeta <- 1*(sign(truebeta)==sign(returndat$beta))
}
returndat2 <- data.frame(J=rep(nbitems,max(df[,sequence])),
M=1+max(df$item1),
N=nrow(df[df$replication==1,])/2,
eff.size=eff.size,
dif.size= difsize,
nb.dif= nbdif
)
returndat <- cbind(returndat2,returndat)
return(returndat)
}
#######################################
## SCENARIO ANALYSIS
#######################################
registerDoMC(4)
######### Scenario 1: J=4 / M=2 / H_0 TRUE
dat1 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
dat2 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
dat3 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
replicate_pcm_analysis(dat1)
tam1 <- tam(dat1)
tam1 <- tam(dat1[dat1$replication==1,])
library(TAM)
library(doMC)
library(parallel)
library(pbmcapply)
#######################################
## ANALYSIS FUNCTIONS
#######################################
pcm_analysis <- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML') {
nbitems <- sum(sapply(1:20,function(x) paste0('item',x)) %in% colnames(df))
resp <- df[,sapply(seq(1,nbitems),function(x) paste0('item',x))]
if (method=='MML') {
tam1 <- quiet(tam.mml(resp=resp,Y=df[,treatment],irtmodel = irtmodel,est.variance = T,verbose=F))
}
if (method=='JML') {
tam1 <- tam.jml(resp=resp,group=1+df[,treatment])
}
if (method!='MML' & method!='JML') {
stop('Invalid method. Please choose among MML or JML')
}
return(tam1)
}
replicate_pcm_analysis <- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML',sequence='replication',truebeta=0,eff.size=0,difsize=NA,nbdif=0) {
nbitems <- sum(sapply(1:20,function(x) paste0('item',x)) %in% colnames(df))
resp <- df[,sapply(seq(1,nbitems),function(x) paste0('item',x))]
if (method=='MML') {
n <- max(df[,sequence])
print(n)
tam1 <- pbmclapply(seq(1,n),
function(x) pcm_analysis(df=df[df[,sequence]==x,],treatment=treatment,irtmodel=irtmodel)
)
}
listitems <- sapply(seq(1,nbitems),function(x) paste0('item',x))
returndat <- data.frame(matrix(nrow=max(df[,sequence]),ncol=length(listitems)))
colnames(returndat) <- listitems
for (s in seq(1,max(df[,sequence]))) {
for (k in seq(1,nbitems)) {
returndat[s,paste0('item',k)] <- tam1[[s]]$xsi$xsi[k]
}
}
returndat$beta <- sapply(seq(1,max(df[,sequence])),function(k) tam1[[k]]$beta[2])
returndat$se.beta <- 1.413612*sapply(seq(1,max(df[,sequence])),function(k) tam.se(tam1[[k]])$beta$se.Dim1[2] )
returndat$low.ci.beta <- returndat$beta-1.96*returndat$se.beta
returndat$high.ci.beta <- returndat$beta+1.96*returndat$se.beta
returndat$true.value.in.ci <- 1*(truebeta>returndat$low.ci.beta & truebeta<returndat$high.ci.beta)
returndat$h0.rejected <- 1*(0>returndat$low.ci.beta & 0<returndat$high.ci.beta)
if (truebeta==0) {
returndat$beta.same.sign.truebeta <- NA
} else {
returndat$beta.same.sign.truebeta <- 1*(sign(truebeta)==sign(returndat$beta))
}
returndat2 <- data.frame(J=rep(nbitems,max(df[,sequence])),
M=1+max(df$item1),
N=nrow(df[df$replication==1,])/2,
eff.size=eff.size,
dif.size= difsize,
nb.dif= nbdif
)
returndat <- cbind(returndat2,returndat)
return(returndat)
}
#######################################
## SCENARIO ANALYSIS
#######################################
registerDoMC(4)
######### Scenario 1: J=4 / M=2 / H_0 TRUE
dat1 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
dat2 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
dat3 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
tam1 <- tam(dat1[dat1$replication==1,])
pcm_analysis(dat1[dat1$replication==1])
pcm_analysis(dat1[dat1$replication==1,])
replicate_pcm_analysis(dat1)
dat1 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_3A_100.csv')
pcm_analysis(dat1[dat1$replication==1,])
tam.se(pcm_analysis(dat1[dat1$replication==1,]))
1.413612*0.1225149

@ -0,0 +1,13 @@
Version: 1.0
RestoreWorkspace: Default
SaveWorkspace: Default
AlwaysSaveHistory: Default
EnableCodeIndexing: Yes
UseSpacesForTab: Yes
NumSpacesForTab: 2
Encoding: UTF-8
RnwWeave: Sweave
LaTeX: pdfLaTeX

@ -0,0 +1,105 @@
########################################
## LIBRARIES
########################################
library(TAM)
library(doMC)
library(parallel)
library(pbmcapply)
#######################################
## ANALYSIS FUNCTIONS
#######################################
pcm_analysis <- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML') {
nbitems <- sum(sapply(1:20,function(x) paste0('item',x)) %in% colnames(df))
resp <- df[,sapply(seq(1,nbitems),function(x) paste0('item',x))]
if (method=='MML') {
tam1 <- tam.mml(resp=resp,Y=df[,treatment],irtmodel = irtmodel,est.variance = T,verbose=F)
}
if (method=='JML') {
tam1 <- tam.jml(resp=resp,group=1+df[,treatment])
}
if (method!='MML' & method!='JML') {
stop('Invalid method. Please choose among MML or JML')
}
return(tam1)
}
replicate_pcm_analysis <- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML',sequence='replication',truebeta=0,eff.size=0,difsize=NA,nbdif=0) {
nbitems <- sum(sapply(1:20,function(x) paste0('item',x)) %in% colnames(df))
resp <- df[,sapply(seq(1,nbitems),function(x) paste0('item',x))]
if (method=='MML') {
n <- max(df[,sequence])
print(n)
tam1 <- pbmclapply(seq(1,n),
function(x) pcm_analysis(df=df[df[,sequence]==x,],treatment=treatment,irtmodel=irtmodel)
)
}
listitems <- sapply(seq(1,nbitems),function(x) paste0('item',x))
returndat <- data.frame(matrix(nrow=max(df[,sequence]),ncol=length(listitems)))
colnames(returndat) <- listitems
for (s in seq(1,max(df[,sequence]))) {
for (k in seq(1,nbitems)) {
returndat[s,paste0('item',k)] <- tam1[[s]]$xsi$xsi[k]
}
}
returndat$beta <- sapply(seq(1,max(df[,sequence])),function(k) tam1[[k]]$beta[2])
returndat$se.beta <- 1.413612*sapply(seq(1,max(df[,sequence])),function(k) tam.se(tam1[[k]])$beta$se.Dim1[2] )
returndat$low.ci.beta <- returndat$beta-1.96*returndat$se.beta
returndat$high.ci.beta <- returndat$beta+1.96*returndat$se.beta
returndat$true.value.in.ci <- 1*(truebeta>returndat$low.ci.beta & truebeta<returndat$high.ci.beta)
returndat$h0.rejected <- 1*(0>returndat$low.ci.beta & 0<returndat$high.ci.beta)
if (truebeta==0) {
returndat$beta.same.sign.truebeta <- NA
} else {
returndat$beta.same.sign.truebeta <- 1*(sign(truebeta)==sign(returndat$beta))
}
returndat2 <- data.frame(J=rep(nbitems,max(df[,sequence])),
M=1+max(df$item1),
N=nrow(df[df$replication==1,])/2,
eff.size=eff.size,
dif.size= difsize,
nb.dif= nbdif
)
returndat <- cbind(returndat2,returndat)
return(returndat)
}
#######################################
## SCENARIO ANALYSIS
#######################################
registerDoMC(4)
######### Scenario 1: J=4 / M=2
#### A: H0 TRUE
dat1 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_1A_100.csv')
dat2 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N200/scenario_1A_200.csv')
dat3 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N300/scenario_1A_300.csv')
res <- pbmclapply(c('dat1','dat2','dat3'),function(x) replicate_pcm_analysis(get(x)))
write.csv(res[[1]],'/home/corentin/Documents/These/Recherche/Simulation/Analysis/NoDIF/N100/scenario_1A_100.csv')
write.csv(res[[2]],'/home/corentin/Documents/These/Recherche/Simulation/Analysis/NoDIF/N200/scenario_1A_200.csv')
write.csv(res[[3]],'/home/corentin/Documents/These/Recherche/Simulation/Analysis/NoDIF/N300/scenario_1A_300.csv')
######### Scenario 3: J=7 / M=2
#### A: H0 TRUE
dat1 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100/scenario_3A_100.csv')
dat2 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N200/scenario_3A_200.csv')
dat3 <- read.csv(file = '/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N300/scenario_3A_300.csv')
res <- pbmclapply(c('dat1','dat2','dat3'),function(x) replicate_pcm_analysis(get(x)))
write.csv(res[[1]],'/home/corentin/Documents/These/Recherche/Simulation/Analysis/NoDIF/N100/scenario_3A_100.csv')
write.csv(res[[2]],'/home/corentin/Documents/These/Recherche/Simulation/Analysis/NoDIF/N200/scenario_3A_200.csv')
write.csv(res[[3]],'/home/corentin/Documents/These/Recherche/Simulation/Analysis/NoDIF/N300/scenario_3A_300.csv')

@ -29,15 +29,17 @@ local Nn = 100
* Scenario 1A : H_0 is TRUE
clear
import delim "`path_data'/scenario_1A_100.csv", encoding(ISO-8859-2) case(preserve) clear
import delim "`path_data'/scenario_3A_100.csv", encoding(ISO-8859-2) case(preserve) clear
rename TT tt
preserve
keep if replication==1
di `k'
gsem (1.item1<-THETA@1)///
(1.item2<-THETA@1)///
(1.item3<-THETA@1)///
(1.item4<-THETA@1)///
(1.item5<-THETA@1)///
(1.item6<-THETA@1)///
(1.item7<-THETA@1)///
(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent
pcm item1 item2 item3 item4, categorical(tt)

Loading…
Cancel
Save