﻿############################################################################################################
#####################################ITEM RESPONSE THEORY ANALYSIS##########################################
############################################################################################################



################################################################################
######################################LTM#######################################
################################################################################

#########Use a file with just the original 42 items###############

library(ltm)

grm(data42)

fit_all1 <-grm(data42)

summary(fit_all1)





####################################
#########BY SUBSCALE (TABLE 2)######
####################################

#########Use a file with the just the 30 selected items###############

##############################
#########Discrimination######
##############################

grm(data30 [c(1, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 22, 27, 30)])



##############################
#########Stress ##############
##############################

  
grm(data30[c(15, 16, 17, 18, 19, 20, 23, 24, 25)])


##############################
#########Homesickness#########
##############################
  
  
grm(data30[c(2, 4, 5, 21, 26, 28, 29)])




library(mirt)


Model_BISS <-mirt.model ('Discrimination = 1, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 22, 27, 30
                                Psychosocial Stress = 15, 16, 17, 18, 19, 20, 23, 24, 25
                                Homesickness = 2, 4, 5, 21, 26, 28, 29')


Model_BISS_fit <- mirt(data30, Model_BISS, method = 'MHRM')


Model_BISS_fit

coef(Model_BISS_fit)

summary(Model_BISS_fit)

residuals(Model_BISS_fit)




########################################
##############ASIANS####################
########################################



data30_asia <- read_excel("BISS_30_filter_asiaticos.xlsx", 1)


##############################
#########Discrimination######
##############################

grm(data30_asia[c(1, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 22, 27, 30)])





##############################
#########Stress ##############
##############################


grm(data30_asia[c(15, 16, 17, 18, 19, 20, 23, 24, 25)])


##############################
#########Homesickness#########
##############################


grm(data30_asia[c(2, 4, 5, 21, 26, 28, 29)])




########################################
##############EASTERN EUROPEANS#########
########################################


data30_europa_e <- read_excel("BISS_30_filter_europeos.xlsx", 1)


##############################
#########Discrimination######
##############################

grm(data30_europa_e[c(1, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 22, 27, 30)])





##############################
#########Stress ##############
##############################


grm(data30_europa_e[c(15, 16, 17, 18, 19, 20, 23, 24, 25)])


##############################
#########Homesickness#########
##############################


grm(data30_europa_e[c(2, 4, 5, 21, 26, 28, 29)])







########################################
##############LATINOS##################
########################################

data30_latinos <- read_excel("BISS_30_filter_latinos.xlsx", 1)

##############################
#########Discrimination######
##############################

grm(data30_latinos[c(1, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 22, 27, 30)])





##############################
#########Stress ##############
##############################


grm(data30_latinos[c(15, 16, 17, 18, 19, 20, 23, 24, 25)])


##############################
#########Homesickness#########
##############################


grm(data30_latinos[c(2, 4, 5, 21, 26, 28, 29)])




########################################
##############MAGHREBIS#################
########################################


data30_magreb <- read_excel("BISS_30_filter_magreb.xlsx", 1)


##############################
#########Discrimination######
##############################

grm(data30_magreb[c(1, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 22, 27, 30)])





##############################
#########Stress ##############
##############################


grm(data30_magreb[c(15, 16, 17, 18, 19, 20, 23, 24, 25)])


##############################
#########Homesickness#########
##############################


grm(data30_magreb[c(2, 4, 5, 21, 26, 28, 29)])




########################################
##############SUBSAHARANS###############
########################################


data30_subsahar <- read_excel("BISS_30_filter_subsahar.xlsx", 1)


##############################
#########Discrimination######
##############################

grm(data30_subsahar[c(1, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 22, 27, 30)])





##############################
#########Stress ##############
##############################


grm(data30_subsahar[c(15, 16, 17, 18, 19, 20, 23, 24, 25)])


##############################
#########Homesickness#########
##############################


grm(data30_subsahar[c(2, 4, 5, 21, 26, 28, 29)])


############################################################################################################
#####################################EXPLORATORY FACTOR ANALYSIS############################################
############################################################################################################


#########Perfom only with subjects Randomized to the EFA group (Randomized=1)#########

library(psych)

pca_result <- principal(data30, nfactors = 3, rotate = "varimax")

loadings(pca_result)

eigenvalues(pca_result)

explained_variance(pca_result)

scree(pca_result)


######Principal components analysis with Varimax roatation. Extraction based on eigenvalue and then fix to 3 and 4 factors########
biss1 biss4 biss5 biss6 biss7 biss8 biss9 biss10 biss11 biss12 biss13 biss14 biss16 biss18 biss19 biss20 biss21 biss22 biss23 biss24 biss25 biss26 biss27 biss28 biss30 biss32 biss33 biss34 biss35 biss36 biss37 biss38 biss40 

##Extract sequentially items 1, 7, 37, 40 and 42 from analysis

#########Final 30 item structure, fixed to 3 and 4 factors#########
biss4 biss5 biss6 biss8 biss9 biss10 biss11 biss12 biss13 biss14 biss16 biss18 biss19 biss20 biss21 biss22 biss23 biss24 biss25 biss26 biss27 biss28 biss30 biss32 biss33 biss34 biss35 biss36 biss38 biss41

############################################################################################################
#####################################CONFIRMATORY FACTOR ANALYSIS###########################################
############################################################################################################

#########Perfom only with subjects Randomized to the CFA group (Randomized=2)#########

library(lavaan)


##########Unidimensional fit after excluding asymmetric and or lepto/platicurtic items (35 items)###########


BISS_UNI_orig <-'BISS_UNI_orig  =~ biss4 + biss6 + biss10 + biss11 + biss12 + biss13 + biss14 + biss16 + biss18 + biss19 + biss20 + biss28 + biss35 + biss37 + biss41 + biss42 + biss21 + biss22 + biss23 + biss24 + biss25 + biss26 + biss30 + biss32 + biss33 + biss40 + biss1 + biss5 + biss7 +biss8 + biss9 + biss27 + biss34 + biss36 + biss38'

fit_uni_orig <- cfa(BISS_UNI_orig, data=Eiroa_2023_JIMH)

summary(fit_uni_orig, fit.measures=TRUE)



###########################################Multidimensional fit (35 items)###################################


BISS_orig <-'Discrimination  =~ biss4 + biss6 + biss10 + biss11 + biss12 + biss13 + biss14 + biss16 + biss18 + biss19 + biss20 + biss28 + biss35 + biss37 + biss41 + biss42
              Stress          =~ biss21 + biss22 + biss23 + biss24 + biss25 + biss26 + biss30 + biss32 + biss33 + biss40
Homesickness    =~ biss1 + biss5 + biss7 +biss8 + biss9 + biss27 + biss34 + biss36 + biss38'

cfa(BISS_orig, data=Eiroa_2023_JIMH)

fit_orig <- cfa(BISS_orig, data=Eiroa_2023_JIMH)

summary(fit_orig, fit.measures=TRUE)



###########################################Unidimensional fit (final 30 items)################################

BISS_UNI_All <-'BISS_UNI_All  =~ biss4 + biss6 + biss10 + biss11 + biss12 + biss13 + biss14 + biss16 + biss18 + biss19 + biss20 + biss28 + biss35 + biss41 + biss21 + biss22 + biss23 + biss24 + biss25 + biss26 + biss30 + biss32 + biss33 + biss5 + biss8 + biss9 + biss27 + biss34 + biss36 + biss38'

fit_uni <- cfa(BISS_UNI_All, data=Eiroa_2023_JIMH)

summary(fit_uni, fit.measures=TRUE)



###########################################Multidimensional fit (30 items)###################################

BISS <-'Discrimination  =~ biss4 + biss6 + biss10 + biss11 + biss12 + biss13 + biss14 + biss16 + biss18 + biss19 + biss20 + biss28 + biss35 + biss41
              Psychosocial Stress          =~ biss21 + biss22 + biss23 + biss24 + biss25 + biss26 + biss30 + biss32 + biss33
              Homesickness    =~ biss5 + biss8 + biss9 + biss27 + biss34 + biss36 + biss38'


cfa(BISS, data=Eiroa_2023_JIMH)

fit <- cfa(BISS, data=Eiroa_2023_JIMH)

summary(fit, fit.measures=TRUE)



###########################################
################PLOT#######################
###########################################


lavaanPlot(model = fit)

lavaanPlot(model = fit, graph_options = list(overlap = "False", fontsize = "0.5"), node_options = list(shape = "box", fontname = "Helvetica",width = 0.2, height = 1), edge_options = list(color = "black"), coefs = T)




###########################################Discrimination (14 items)#######################################


Discrimination <-'Discrimination  =~ biss4 + biss6 + biss10 + biss11 + biss12 + biss13 + biss14 + biss16 + biss18 + biss19 + biss20 + biss28 + biss35 + biss41'

fit_Discrimination <- cfa(Discrimination, data=Eiroa_2023_JIMH)

summary(fit_Discrimination, fit.measures=TRUE)



###########################################Psychosocial stress (9 items)###################################

Stress <-'Stress  =~ biss21 + biss22 + biss23 + biss24 + biss25 + biss26 + biss30 + biss32 + biss33'

fit_Stress <- cfa(Stress, data=Eiroa_2023_JIMH)

summary(fit_Stress, fit.measures=TRUE)



###########################################Homesickness (7 items)##########################################

Homesickness <-'Homesickness  =~ biss5 + biss8 + biss9 + biss27 + biss34 + biss36 + biss38'

fit_Homesickness <- cfa(Homesickness, data=Eiroa_2023_JIMH)

summary(fit_Homesickness, fit.measures=TRUE)
