-
Notifications
You must be signed in to change notification settings - Fork 0
/
Rotterpaper.Rmd
executable file
·1444 lines (991 loc) · 77.4 KB
/
Rotterpaper.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
---
title : "Psychometric Evaluation and Validation of Bangla Rotter Internal-External Scale with Classical Test Theory and Item Response theory"
shorttitle : "Bangla Rotter's I-E Scale"
author:
- name : "Mushfiqul Anwar Siraji"
affiliation : "1"
corresponding : no # Define only one corresponding author
address : "Monash University"
email : "mushfiqul.anwarsiraji@monash.pdf"
role:
- Conceptualization
- Writing - Original Draft Preparation
- Writing - Review & Editing
- name : "Shamsul Haque"
affiliation : "1"
corresponding : yes # Define only one corresponding author
address : "Monash University Malaysia,Jalan Lagoon Selatan, 47500 Bandar Sunway,Selangor Darul Ehsan, Malaysia."
email : " shamsul@monash.edu"
role:
- Conceptualization
- Writing - Review & Editing
affiliation:
- id : "1"
institution : "Monash University, Malaysia"
authornote: |
Mushfiqul Anwar Siraji https://orcid.org/0000-0003-0127-9982
Shamsul Haque https://orcid.org/0000-0002-1561-6989
We have preregistered this study’s design and analysis plan in Open Science Framework (Preregistration DOI: 10.17605/OSF.IO/9KT87) and can be accessed at https://osf.io/9kt87. All data, analysis code underlying this article and a Rmarkdown reproducible manuscript have been made publicly available at GitHub and can be accessed at https://github.com/masiraji/Rotter-I-E-Scale.
abstract: |
There is no psychometric tool to assess locus of control for Bangla-speaking people. Hence, we attempted to translate the 23-item Rotter's Internal-External scale into Bangla and validate it on Bangladeshi adult participants. In Study 1 (N = 300), we translated the items into Bangla and conducted an exploratory factor analysis, which revealed a one-factor solution with 12 items. In Study 2 (N =178) confirmatory factor analysis yielded the best fit with 11 items (CFI =.98, TLI = .97, RMSEA = .00). Reliability coefficient of this 11-item scale was satisfactory (McDonald’s Omega = .72). The scale’s significant correlations with Internal Control Index (a locus of control scale), Neuroticism and Openness to Experience from Big Five Personality Inventory demonstrated its convergent validity. The item quality was assessed on the combined samples of Study 1 & 2 (N=478) using the item response theory (IRT), which showed that the scale was composed of easy, moderate, and hard items. Item discrimination analysis indicated sufficient discriminating power of the items (.49 to 2.21). Test information curve showed the scale's ability to discriminate between external and internal locus of control. These psychometric properties indicate the usability of the Bangla version of Rotter's Internal-External scale.
keywords : "Locus of Control; Classical Test Theory; Item Response Theory; Exploratory Factor Analysis; Confirmatory Factor Analysis; Convergent validity"
wordcount : "4962"
bibliography : ["Rotter-References.bib"]
# csl : vancouver.csl
floatsintext : no
figurelist : no
tablelist : no
footnotelist : no
linenumbers : yes
mask : no
draft : no
documentclass : "apa6"
classoption : "man"
output :
papaja::apa6_pdf:
latex_engine: xelatex
mainfont: Arial
---
last updated: `r Sys.Date()`
```{r dependencymanager, warning=FALSE, include=FALSE}
knitr::opts_chunk$set(warning = F, error = F, message = F)
```
```{r install-pack, eval=FALSE, include=FALSE}
#if "packrat" doesnot work you can run this chunk manually to get all required packs"
install.packages("devtools")
install.packages("semTools")
install.packages("MOTE")
install.packages("psych")
install.packages("dlookr")
install.packages("tidyverse")
install.packages("qgraph")
install.packages("kableExtra")
install.packages("paran")
install.packages("EFA.MRFA")
install.packages("rsvg")
install.packages("ggcorrplot")
install.packages("car")
install.packages("semTable")
install.packages("magick")
install.packages("mirt")
install.packages("cowplot")
devtools::install_github('rich-iannone/DiagrammeR')
devtools::install_github("crsh/papaja", force = T)
install.packages("DiagrammeRsvg")
devtools::install_github('SachaEpskamp/semPlot', dependencies = T)
devtools::install_github("crsh/citr")
install.packages("gtsummary")
```
```{r setup, include = FALSE}
#This chunk holds code to load all required file. This is a renv supported project. Call renv::restore to install all packages first.
# renv::restore()
library(papaja)
library(MOTE)
library(psych)
library(VIM)
library(tidyverse)
library(WrightMap)
library(mirt)
library(lavaan)
library(SimDesign)
library(gtsummary)
library(gt)
r_refs("Rotter-References.bib", append = TRUE,tweak = TRUE)
#library(remedy)# word formatting shortcut
#library(gramr) #grammer
#library(magick)
```
```{r setup-chunk, include=FALSE}
#This chunk sets the global chunk environment.
knitr::opts_chunk$set(dev = "png",
dpi = 600,
echo = FALSE,
cache = TRUE,
warning=F)
```
```{r ggplot2, include=F}
#This chunks holds the code for the ggplot2 based theme we used through the manuscript.
apatheme=theme_bw()+
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
#text=element_text(family = "Helvetica"),
axis.text.x = element_text(size = 10),
axis.text.y = element_text(size = 10),
axis.title.x = element_text(size = 10),
axis.title.y = element_text(size = 10),
plot.title = element_text(size = 10),
legend.text = element_text(size = 10),
legend.title=element_blank(),
axis.line.x = element_line(color='black'),
axis.line.y = element_line(color='black'),
panel.border = element_rect(color = "black",
fill = NA,
size = 1))
```
---
nocite: |
`r cite_r("Rotter-References.bib")`
---
# Introduction
Locus of Control (LoC) is the individual’s belief about the contingency of the outcome of an event on their internal qualities and behavior vs. other external attributes like chance or fate [@RN1259]. LoC influences a broad spectrum of situations closely related to achievement, success and learning. The LoC can be viewed as a bipolar continuum ranging from internal to external, indicating an individual’s disposition on the reinforcement expectancy. Social learning theory suggests human behavior is lead by reinforcement and the belief regarding the dependency of the reinforcement on an individual’s ability and action [@bandura1977social; @RN1267].Individuals with internal LoC believe the reinforcement and fundamental control over the event’s outcome are contingent on their ability, behavior and efforts. However, for the individuals with external LoC, the fundamental sense of agency of life and reinforcement are bestowed on the attributes like fate, luck, change or other powerful entities [@RN1264; @RN1259; @rotter1972applications].
Since @RN1259 introduced the term LoC, it has been widely used to understand people’s behavior in different domains, including academic achievement [@findley1983locus; @karaman2018mediation], health [@jacobs2011predictors], professional competence[@mantesso2008continuing; @witt1988locus; @smidt2018career] and consumer behavior [@lee2018will; @rodriguez2019altruism]. Internal LoC is attributed to better health care management and self-assessment [@pourhoseinzadeh2017relationship]. Internal LoC also positively influences academic success [@karaman2018mediation] . External LoC is associated with increased depression, anxiety, stress [@kurtovic2018effect], and personality factors including high neuroticism [@HORNER1996] and low openness to experience [@RN1280; @RN1280; @RN1281; @RN1282]. Assessment of LoC is also beneficial in the different therapeutic processes [@baker1979relationship; @delsignore2007control]. Individuals with internal LoC are more receptive to information [@cavaiola2009perception], more resilient and hopeful than external LoC, thus facilitating the favorable outcome in the psychotherapy [@foon1987locus].LoC also facilitates the "Transactional Analysis" based counselling process by indicating an individual's predominant ego-states [@loffredo1998relationships]. Internal LoC is associated with "Adult" ego state and External LoC is associated with "Adapted Child" ego state [@loffredo1998relationships].
Rotter's Internal-External (I-E) [@RN1259] scale is the most widely used scale to measure the LoC of an individual. However, the origin of this scale is from an individualist society [@hofstede1984culture; @smith1995rotter]. Members of individualist culture define their identity by personal life choices, whereas members of collectivist countries emphasize the membership of groups [@hofstede1984culture]. @smith1995rotter coined some fundamental problems of using Rotter's I-E scale in collectivist cultures, including 'modesty bias", where individuals may guide their responses to represent the group's opinion instead of individual preference. Also values parallel to LoC including "mastery over the environment" and "harmony with the environment" are differentially endorsed by members of different cultures [@schwartz1990individualism; @schwartz1992universals]. This indicates the cultural susceptibility of the construct: LoC which may lead to different latent structures across various cultures. @RN1259 mentioned one general factor and several other but less essential factors and conferred the structure as unidimensional. However,studies in the USA [@RN1252; @RN1253] and other countries [@niles1981dimensionality; @RN1254; @RN1264; @tyler1989cultural] have established the multidimensional nature of Rotter's I-E scale. @RN1264 summarized 20 studies which analyzed the latent structure by exploratory factor analysis(EFA). summarized 20 studies that analyzed the latent structure by exploratory factor analysis (EFA). They reported that the number of possible interpretable factors ranged between 2 to 6 with two recurring factors: "political control "and "personal control". The emergence of "political control" and "personal control" as salient factors in Rotter's I-E Scale was first reported in the work of @RN1252. He conducted an EFA on 316 (f = 157) undergraduate students and reported these two factors. Items clustered under "personal control" stemmed from the individual's inclination to prefer personal ability and hard work over luck. The "Political control" factor focuses on the individual's disposition regarding their ability to control the political and world affairs as a part of the social system. @smith1995rotter administered the Rotter's I-E scale on 9140 participants from 43 different countries and reported three interpretable dimensions: "personal-political", "individual-social" and "luck." They reported a trend of fatalism about political events and high preference on luck among the included Asian nations. However, Studies in the Netherlands [@andriessen1983analysis], Brazil [@nagelschmidt1977dimensionality], Australia [@watson1981note], Sri Lanka [@niles1981dimensionality] reported only the "personal control" factor indicating the susceptibility of the latent construct structure of Rotter's I-E scale to cultural variation.
Due to this susceptibility, it is inappropriate to use the Rotter's I-E scale in Bangladesh without proper psychometric calibration. Besides, there is a dearth of psychometrically valid scales in Bangladesh to measure the LoC culturally sensitively. We conducted two studies involving Bangladeshi elementary school teachers to culturally adapt and psychometrically validate Rotter's I-E scale by following classical test theory (CTT) and item response theory (IRT). CTT uses a set of concepts (true score, observed score, reliability) and provides information on the whole scale [@devellis2006classical]. CTT attributes the observed scores obtained on a scale to the unobservable variable of interest and possible measurement errors. The reliability coefficients indicate how closely the observed score reflects the unobservable variable [@devellis2006classical]. IRT assesses the item quality across the different latent construct levels and complements the psychometric analysis by providing information regarding the item's ability to discriminate among the respondents across the latent construct continuum [@kazemi2021assessing]. It also provides information on the level of latent construct a respondent requires to attain a 50% chance to score towards the positive high construct direction for a particular item [@kazemi2021assessing]. TOur first study culturally adapted the scale and identified the latent construct structure by exploratory factor analysis. The second study verified the latent construct structure that emerged in the first study by a confirmatory factor analysis. Subsequect psychometric propertise were also established using CTT and IRT.
# Study 1: Translations and Factor Structure
Our first study had three objectives. First, to translate the items from the original language to the Bangla language in a culturally meaningful way. Second, to assess the content validity. Third, to conduct an exploratory factor analysis to understand the latent structure
## Methods
## Participants
```{r data}
#Loading and deviding the data for EFA, CFA and IRT analysis.
data <- readRDS("WRotter.rds")
Rotter.EFA <- data[1:300,11:33]
efa.descriptives <- data[1:300,c(3,4,5,6,7,8)]
Rotter.CFA <- data[301:478, 11:33]
Rotter.invariance <- data[301:478, c(4,11:33)]
cfa.descriptives <- data[301:478,c(3,4,5,6,7,8)]
WRotter.IRT <- data[,11:33]
irt.descriptives <- data[,c(3,4,5,6,7,8)]
```
```{r missingdata, eval=FALSE, include=FALSE}
#This chunk checks the missing values
missing.EFA <- aggr(Rotter.EFA, plot =T)
missing.CFA<- aggr(Rotter.CFA, plot =T)
missing.IRT <- aggr(WRotter.IRT, plot =T)
```
```{r Participants, eval=FALSE, include=FALSE}
#This chunk holds codes for descriptives
#Select the variables for demographics
Descriptives.gender <- data %>%
dplyr::select("Gender", "Age", "Education Years", "Social Stance","Marital Status", "sample")
#renaming TRUE and FALSE from the IncludedInCFA to EFA and CFA for Descriptive Table
Descriptives.gender$sample[Descriptives.gender$sample == "CFA" ] <-
"2. CFA Sample"
Descriptives.gender$sample[Descriptives.gender$sample == "EFA" ] <-
"1. EFA Sample"
#Remove lavels for add_overall functions
clear.labels <- function(x) {
if(is.list(x)) {
for(i in 1 : length(x)) class(x[[i]]) <- setdiff(class(x[[i]]), 'labelled')
for(i in 1 : length(x)) attr(x[[i]],"label") <- NULL
}
else {
class(x) <- setdiff(class(x), "labelled")
attr(x, "label") <- NULL
}
return(x)
}
Descriptives.gender <- clear.labels(Descriptives.gender)
## Recoding Descriptives.gender$`Marital Status`
Descriptives.gender$`Marital Status` <- as.character(Descriptives.gender$`Marital Status`)
Descriptives.gender$`Marital Status`[Descriptives.gender$`Marital Status` == "1"] <- "Married"
Descriptives.gender$`Marital Status`[Descriptives.gender$`Marital Status` == "2"] <- "Unmarried"
Descriptives.gender$`Marital Status`[Descriptives.gender$`Marital Status` == "3"] <- "Divorced"
Descriptives.gender$`Marital Status` <- factor(Descriptives.gender$`Marital Status`)
#Creating a gtsummary based summary table:
desc_table <- gtsummary::tbl_summary(Descriptives.gender,
by = sample,
statistic = list(
all_continuous() ~ "{mean} ({sd})",
all_categorical() ~ "{n} ({p}%)"),
type = list(`Education Years` ~ 'continuous'),
digits = all_continuous() ~ 2,
missing = "no") %>%
add_overall() %>%
add_p()%>%
as_flex_table()
#as_kable_extra(desc_table , format = "latex",booktabs = T) -> desc_kable
```
```{r gender}
#This chunk simply count the males and females
Gender.count <- data.frame(table(data$Gender))
Female <- Gender.count[1,2]
Male <- Gender.count[2,2]
```
A large group of 312 Bangladeshi adults participated in Study 1. Twelve participants were excluded due to incomplete data. For exploring initial factor structure, a sample of 250-300 is recommended [@RN1249; @RN1250] . Participants were recruited through email invitation following snowballing techniques. Out of 300 participants `r printnum((Gender.count[1,2]/300)*100)`% (`r Gender.count[1,2]`) were female ranging in age from 21 to 52 years (29.20±4.92) and `r printnum((Gender.count[2,2]/300)*100)`% (`r Gender.count[2,2]`) were male with an age range between 21 to 45 years (32.39±4.17). Average years of education for the females were 15.28±2.09 and for the males were 16.71±.0.94. 72% of the participants were married.
## Material
Rotter's Internal-External (I-E) scale consists of 23 item pairs in a forced-choice format with six additional filler pairs. Each pair contains one statement focusing on internal LoC and another focusing on external LoC. The score ranges from 0 to 23, with a higher score indicating higher external LoC. Internal consistency Kuder-Richardson coefficient was .69 in the original scale among the national stratified sample [@franklin1963youth].
## Procedure
### Data Collection
Invitation emails were sent to the potential participants with appropriate explanatory statements. Once the participants voluntarily agreed to participate, their consent was recorded digitally. The data collection commenced from June 2021 to July 2021
### Scale Translation
We followed ICT [@RN1156] guidelines to translate and adapt the scale. A robust literature review was conducted to ensure the construct equivalence of "Locus of control" to ensure cross-cultural applicability. Based on the reviewed literature, it was agreed that the construct is equivalent in meaning across "Western" and "Bangladeshi" cultures. Two bilingual researchers (PhD in Psychology) natives in Bangla translated the original version (English) to Bangla. The two translated version was then judged and synthesized by the authors. Subsequently, two bilingual researchers (One PhD, one MS in psychology) back-translated the Bangla scale into English with no knowledge of the original work. The authors synthesized the two back-translations and compared it with the original scale, and made necessary amendments.
### Content Validity: Expert Panel Review
We gave the amended synthesized scale to 8 mental health professionals. They assessed the content validity of the scale (23 items) independently. They confirmed the relevance of the items using a 4-point Likert type scale (1: not at all relevant, 2: slightly relevant, 3: quite Relevant, 4: Highly Relevant). We estimated the item-level content validity (I-CVI) and scale-level content validity index (S-CVI). Any Item with an I-CVI score higher than 0.83 was retained [@article; @RN1290]. Two items were below the cut-off values thus readjusted and analyzed again.The S-CVI was .94, estimated using the average method and indicated satisfactory content validity [@article; @RN1290].
### Analytic Strategies
```{r NumericIdescriptives, include=F}
#This chunk creates the Descriptive table for EFA.
des.tab <- tabledown::des.tab(Rotter.EFA)
```
We used R (version 4.1.0), including R-packages "Psych" [@R-base] and "ggplot2"[@R-ggplot2], for our analyses. Since Rotter's I-E scale used a dichotomous forced choice and both univariate normality [TABLE \@ref(tab:tabDes)] and multivariate normality assumptions are violated we performed the exploratory factor analysis using a tetrachoric correlation matrix [@RN1235]. We employed weighted least squares (WLS) as a factor extraction method to examine the latent construct structure. WLS is more robust towards violation of normality assumptions [@RN1255]. An orthogonal rotation technique: varimax was chosen following the literature investigating the latent structure of Rotter's I-E scale [@RN1252; @RN1253; @RN1254]. Before the EFA, necessary assumptions, including sample adequacy, quality of correlation matrix were assessed. As the commonalities for each item found in the previous studies were not \>.70 [@RN1252; @RN1253; @RN1254] , instead of relying on Kaiser criterion of eigenvalues greater than one, we relied on scree plot [@RN1177] . We supplemented the scree plot [@RN1225] with Horn's parallel analysis [@RN1223], minimum average partials method [@RN1224], and hull method [@RN1228]. We compared the root mean square of the residuals (RMSR) values obtained for the solutions to determine the best factor structure. $RMSR \le .08$ is preferred [@RN1231]. Additionally, to identify the simple structure we followed the following guidelines recommended by psychometricians (i) no factors with fewer than three items (ii) no factors with a factor loading \<0.3 (iii) no items with cross-loading greater than .3 across factors [@RN1233; @RN1234; @RN1235; @RN1256]
## Result and Discussion
### Sampling Adequacy
```{r KMO}
#This chunk checks the KMO value
KMO <- KMO(Rotter.EFA)
```
Sampling adequacy was investigated by Kaiser-Meyer-Olkin (KMO) measures of sampling adequacy [@RN1221]. The overall KMO vale for 23 items was `r printnum(KMO$MSA)` which was above the cutoff value of .50 indicating a mediocre sample [@RN1179].
### Descriptive Statistics and Item Analysis
```{r tabDes, results='asis'}
#This chunk prints the descriptive table in the manuscript.
apa_table(des.tab, caption = "Descriptive Statistics")
```
```{r assumptions, include=FALSE}
#Check the multivariate normality
mardia <- mardia(Rotter.EFA, na.rm = T, plot =T)
#Calculate tetrachoric correlation
correlations <- tetrachoric(Rotter.EFA,smooth=TRUE)
#Select the upper correlation matrix
upper <- correlations$rho[upper.tri(correlations$rho, diag = F)]
#Identify minimum and maximum correlation
min.cor <- apa(min((upper)),2,F) #minimum cor.coefficient of the matrix
max.cor <- apa(max((upper)),2,F) # max. correlation coefficient of the matrix
#Conduct Bartlet test
bartlet <- cortest.bartlett(Rotter.EFA, n =300)
#Calculate percentage of correlations higher than |.30|.
BigR = sum(correlations$rho >= abs(.30) & correlations$rho < abs(1.0), na.rm =T)/2
totR = length(Rotter.EFA)*(length(Rotter.EFA)-1)/2
print (BigR/totR)*100
#Classical test theory based item analysis
Item_analysis <- psych::alpha(Rotter.EFA)
R.cor.sum <- summary(Item_analysis$item.stats$r.cor)
```
Table\@ref(tab:tabDes) presents univariate descriptive statistics for the 23 items. Most of the items are skewed with high kurtosis values.The Shapiro-Wilk test of normality [@RN1260] indicated all the items violated normality assumptions. Multivariate normality assumptions were investigated by Marida’s test [@RN1258]. Multivariate skew = `r printnum(mardia$b1p)` (p \<0.001) and multivariate kurtosis = `r printnum(mardia$b2p)` (p \<0.001) indicated the violation of multivariate normality assumptions. indicated the violation of multivariate normality assumptions. Due to the violation of univariate and multivariate normality assumption and the dichotomous force choice response option, tetrachoric correlations over Pearson’s correlations was chosen[@RN1235].
Figure \@ref(fig:figCor) and Supplementary Table 1 depict the inter-item correlation coefficients. Bartlett’s test of sphericity. Bartlett's test of sphericity [@RN1261], $\chi^2$ (`r bartlet$df`) = `r apa(bartlet$chisq, 2, T)`, p = `r apa(bartlet$p.value, 2, F)` indicated the correlations between items are adequate for the EFA. However only `r printnum((BigR/totR)*100)`% of the inter-item correlation coefficients were greater than .30 in the obtained matrix. The corrected item-total correlations ranged between `r apa(R.cor.sum[1],2,F)` to `r apa(R.cor.sum[6],2,F)`. Such low to moderate item-total correlation was also evident in the original scale ranging between .11 to .48 [@RN1259]. As such, all items are retained.
### Exploratory Factor Analysis
```{r correlations, include=FALSE}
#Calculate the correlation
correlations <- tetrachoric(Rotter.EFA,smooth=TRUE)
#Visualize the correlation
qgraph::qgraph(correlations$rho, cut =.30, details =T, posCol = "green", negCol = "orangered3",
labels = names(Rotter.EFA))
corplot1 <- psych::corPlot(correlations$rho, diag =F, scale=T,
upper =F, numbers = T, cex.axis =.5, stars=T, cex=.8 )
p.mat <- correlation::cor_to_p(correlations$rho, 300, method = "tetrachoric")
#Visualize the correlation (Used in the manuscript)
corplot <- ggcorrplot::ggcorrplot(correlations$rho, p.mat=p.mat$p, insig = "pch", hc.order = FALSE, outline.col = "white", type = "lower", legend.title = "Correlation",sig.level = 0.05, pch.cex=1.5,
# insig = "blank",
ggtheme = ggplot2::theme_minimal(),tl.srt = 90,colors = c("#E64B35FF", "white", "#3C5488FF") )+
theme( panel.grid.major = element_blank(),
axis.text.x = element_text(size = 7),
axis.text.y = element_text(size = 7),
legend.text=element_text(size=7),
legend.title=element_text(size=7),
panel.border = element_rect(color = "black",
fill = NA,
size = 1))
#p.mat <- cor_to_p(correlations$rho, 428, method = "polychoric")
#to show pvalue in the fig add p.mat=p.mat
ggsave("figures/300/Figure1.jpg",corplot, width = 3.5, height = 3.5, dpi = 300, bg ="white")
```
(ref:figCor) Inter-item tetrachoric correlation coefficients for the 23-item Rotter I-E Scale. Inter-item correlation ranged between -.22 to .62. 15.42% correlations were higher than the absolute value of .30
```{r figCor, out.height="150%",out.width="100%", fig.align= 'center', fig.cap='(ref:figCor)', results='asis', fig.align='center'}
knitr::include_graphics('figures/300/Figure1.jpg', dpi =600)
```
```{r MAP, include =F}
#Calculate the MAP
map <- psych::VSS(Rotter.EFA, rotate = "varimax", fm = 'minres', n.obs =300 )
map.map <- as.data.frame(map$map)
colnames(map.map) <- "MAP Statistic"
map.statistics <- map$vss.stats[,c(1,2,5,6,7,10,11)]
full.map <- cbind(map.map,map.statistics)
```
```{r map-tab}
#Create the MAP table (In the paper it is provided as Supp.)
papaja::apa_table(full.map, caption = "Minimum Average Partial (MAP) method of factor numder determination. MAP Statistics is the lowest in the 5th row indicating five factors are required.")
```
```{r cortab, include = F}
#Save the correlation matrix
cor.mat <- correlations$rho
cor.mat <- as.data.frame(cor.mat)
```
```{r cortabprint, results='asis'}
#Print the correlation matrix in the manuscript (In the paper it is provided as Supp.)
apa_table(cor.mat,landscape = T )
```
```{r ParallelEFA, include=FALSE}
#Factor Identification
# Parallel analysis
Horn <- paran::paran(correlations$rho, iterations=500, centile=0, quietly=FALSE,
status=TRUE, all=FALSE, cfa=FALSE, graph=TRUE,
color=TRUE, col=c("black","red","blue"),
lty=c(1,2,3), lwd=1, legend=TRUE,
width=640, height=640, grdevice=png, seed=0, mat=NA, n=NA)
Adjusted.EV <- data.frame(Horn$AdjEv)
Adjusted.EV$type = c('Adjusted Ev')
Adjusted.EV$num = c(row.names(Adjusted.EV))
Adjusted.EV$num = as.numeric(Adjusted.EV$num)
colnames(Adjusted.EV) = c('eigenvalue', 'type', 'num')
Random.EV <- data.frame(Horn$RndEv)
Random.EV$type = c('Random EV')
Random.EV$num = c(row.names(Random.EV))
Random.EV$num = as.numeric(Random.EV$num)
colnames(Random.EV) = c('eigenvalue', 'type', 'num')
Unadjusted.EV <- data.frame(Horn$Ev)
Unadjusted.EV$type = c('Unadjusted EV')
Unadjusted.EV$num = c(row.names(Unadjusted.EV))
Unadjusted.EV$num = as.numeric(Unadjusted.EV$num)
colnames(Unadjusted.EV) = c('eigenvalue', 'type', 'num')
#Plot Parallel analysis output
parallel = ggplot(Adjusted.EV, aes(x=num, y=eigenvalue, shape=type, color=type)) +
#Add lines connecting data points
geom_line(colour ='#DC000099')+
#geom_line(data = Random.EV) +
#geom_line(data = Unadjusted.EV)+
#Add the data points.
geom_point(size=1.5,colour ='#3C5488FF')+
#geom_point(data = Random.EV, size=3)+
#geom_point(data = Unadjusted.EV, size=3)+
scale_y_continuous(name="Eigen Value", limits=c(0, 5), breaks=seq(0,5,1)) +
#Label the x-axis 'Factor Number', and ensure that it ranges from 1-max # of factors, increasing by one with each 'tick' mark.
scale_x_continuous(name='Factor Number (Parallel Analysis)', limits=c(0, 24),breaks=seq(0,24,4))+
#Add vertical line indicating parallel analysis suggested max # of factors to retain
geom_hline(yintercept=1, linetype = 'dashed') + apatheme +theme(legend.position = "None") +
theme(axis.title.x = element_text(size = 10),
axis.title.y = element_text(size = 10))
# ggsave("Figures/300/parallel.png",parallel, width =3.5, height = 3.5, dpi = 300)
```
```{r ScreePlot, include=FALSE}
#Scree plot
Scree <- scree(correlations$rho,factors=TRUE,pc=TRUE,main="(B)",
hline=NULL,add=F)
FA.Scree <- data.frame(Scree$fv)
FA.Scree$type = c('Factor Analysis')
FA.Scree$num = c(row.names(FA.Scree))
FA.Scree$num = as.numeric(FA.Scree$num)
colnames(FA.Scree) = c('eigenvalue', 'type', 'num')
PA.Scree <- data.frame(Scree$pcv)
PA.Scree$type = c('Principal Component Analysis')
PA.Scree$num = c(row.names(PA.Scree))
PA.Scree$num = as.numeric(PA.Scree$num)
colnames(PA.Scree) = c('eigenvalue', 'type', 'num')
scree.plot <-ggplot(FA.Scree, aes(x=num, y=eigenvalue,color=type, shape=type))+
geom_line(colour ='#DC000099')+
#geom_line(data = PA.Scree)+
geom_point(size=1.5,colour ='#3C5488FF')+
#geom_point(data = PA.Scree, size=3)+
scale_y_continuous(name="Eigen Value", limits=c(0, 5), breaks=seq(0,5,1)) +
scale_x_continuous(name='Factor Number (Scree Plot)', limits=c(0, 12),breaks=seq(0,12,4))+
geom_hline(yintercept=1, linetype = 'dashed') + apatheme +theme(legend.position = "None") + theme(axis.title.x = element_text(size = 10),
axis.title.y = element_text(size = 10))
# ggsave("Figures/300/scree.png",scree.plot, width =3.5, height = 3.5, dpi = 300)
```
```{r HullEFA, include=FALSE}
# HULL Method
EFA.MRFA::hullEFA(Rotter.EFA,extr = "ULS", index_hull = "CAF", display = TRUE, graph = T,
details = TRUE)
hull <- ggplot2::last_plot()
Hull <- hull+ ggtitle(NULL)+xlab("Factor Number (Hull Method)")+ylab("CAF")+ aes(color = '#DC000099')+geom_point(color ='#3C5488FF',size =1)+
apatheme +theme(legend.position = "None") +scale_fill_identity()+ theme(axis.title.x = element_text(size = 10), axis.title.y = element_text(size = 10))
# ggsave("Figures/300/hull.png",Hull, width =3.5, height = 3.5, dpi = 300)
```
```{r FAperp, include=F}
#Figure 2 creation
factor <- cowplot::plot_grid(parallel, scree.plot,Hull, labels = c("(A)","(B)","(C)"),ncol=1, label_size = 15,align = "v",
# label_fontfamily = "Arial",
label_fontface = "plain")
ggsave("Figures/300/Figure2.jpg",factor, width =3.5, height = 7, dpi = 300)
```
```{r facIdFig, out.height="100%", out.width="100%",fig.align='center', fig.cap='Factor Identification (A) Parallel analysis (B) Scree Plot (C) Hull Method', warning=FALSE, results= 'asis'}
knitr::include_graphics('Figures/300/Figure2.jpg', dpi =600)
```
Scree plot ( Fig\@ref(fig:facIdFig)) suggested a two-factor solution. In MAP method [@RN1224] the average squared off-diagonal values of the calculated partial correlation matrix are expected to be minimum when the correct number of factors are extracted. In our data set, this value reached the minimum after extracting the first factor. The more contemporary Hull method tries to find an optimal number of factors to balance model fit and the number of parameters [@RN1228]. This extraction method also supported a 1-factor model. Horn's parallel analysis [@RN1223]), like the Monte Carlo study, draws several sets of random data with the same number of participants as the original data set and compares the mean eigenvalues among the simulated and original data sets to retain optimal factors. Parallel analysis is also more immune to the normality assumptions violation[@RN1263]. In our data set parallel analysis with 500 iterations indicated 2 factor solution. As a result, we tested both one factor and two factor solutions.
```{r include=FALSE}
#Run the EFA for two factor
correlations <- tetrachoric(Rotter.EFA,smooth=TRUE)
#1st round
fa.2F.1 <- fa(r=correlations$rho, nfactors = 2, fm= "wls", rotate = "varimax",residuals = TRUE, SMC = TRUE, n.obs =300)
print(fa.2F.1, cut = .3, digits = 3, sort = T)
reduced.model.2F.1 <- dplyr::select(Rotter.EFA, -item22, -item6,-item29,-item25, -item9)
correlations.redu.2F.1 <- tetrachoric(reduced.model.2F.1)
#end round
fa.2F.2 <- fa(r=correlations.redu.2F.1$rho, nfactors = 2, fm= "wls", rotate = "varimax",
residuals = TRUE, SMC = TRUE, n.obs =300)
print(fa.2F.2, cut = .3, digits = 3, sort = TRUE)
reduced.model.2F.2 <- dplyr::select(Rotter.EFA, -item22, -item6,-item29,-item25, -item9, -item12)
correlations.redu.2F.2 <- tetrachoric(reduced.model.2F.2)
#3rd round
fa.2F.3 <- fa(r=correlations.redu.2F.2$rho, nfactors = 2, fm= "wls", rotate = "varimax",
residuals = TRUE, SMC = TRUE, n.obs =300)
print(fa.2F.3, cut = .3, digits = 3, sort = TRUE)
reduced.model.2F.3 <- dplyr::select(Rotter.EFA, -item22, -item6,-item29,-item25, -item9, -item12, -item3)
correlations.redu.2F.3 <- tetrachoric(reduced.model.2F.3)
#4th Round
fa.2F.4 <- fa(r=correlations.redu.2F.3$rho, nfactors = 2, fm= "wls", rotate = "varimax",
residuals = TRUE, SMC = TRUE, n.obs =300)
print(fa.2F.4, cut = .3, digits = 3, sort = TRUE)
reduced.model.2F.4 <- dplyr::select(Rotter.EFA, -item22, -item6,-item29,-item25, -item9, -item12, -item3, -item17)
correlations.redu.2F.4 <- tetrachoric(reduced.model.2F.4)
#5th Round
fa.2F.5 <- fa(r=correlations.redu.2F.4$rho, nfactors = 2, fm= "wls", rotate = "varimax",
residuals = TRUE, SMC = TRUE, n.obs =300)
print(fa.2F.5, cut = .3, digits = 3, sort = TRUE)
reduced.model.2F.5 <- dplyr::select(Rotter.EFA, -item22, -item6,-item29,-item25, -item9, -item12, -item3, -item17, -item23)
correlations.redu.2F.5 <- tetrachoric(reduced.model.2F.5)
#6th Round
fa.2F.6 <- fa(r=correlations.redu.2F.5$rho, nfactors = 2, fm= "wls", rotate = "varimax",
residuals = TRUE, SMC = TRUE, n.obs =300)
print(fa.2F.6, cut = .3, digits = 3, sort = TRUE)
#Check the residuals
resd.2F.WLS =residuals(fa.2F.6, diag = FALSE, na.rm =T)
hist(resd.2F.WLS, col ="red", main = "", xlab = "Residuals",ylim=c(0, 100))
abline(h = 21, lwd = 2, lty = 2)
abline(v =.1,lwd = 2, lty = 2)
#Omega calculation
omega.two <- omega(reduced.model.2F.5, nfactors=2, fm="wls",n.iter=1,p=.05,poly=FALSE,key=NULL, flip=TRUE,digits=2, title="Omega",sl=TRUE,labels=NULL,plot=TRUE,n.obs=NA,rotate="oblimin",Phi=NULL,option="equal",covar=FALSE)
```
```{r TabEFA2}
#This chunk creates the EFA output table and place it in the manuscript
FAc <-tabledown::fac.tab( fa.2F.6, .3)
apa_table(FAc, caption = "Two Factor Solution")
```
The initial two-factor solution with all 23 items showed a lack of fit in terms of RMSR value (RMSR =.11), presence of cross-loading items (item9 and item 25) and poor factor loading (\<.30) items (item6, item22, item29). After discarding these items, we ran another EFA with the remaining 18 items. This iteration of EFA also appeared as a misfit in terms of poor factor loading (Item12). Another five rounds of EFA were conducted with gradually identifying problematic items and discarding them from the model. Finally, a two-factor EFA solution with 14 items was accepted with RMSR = 0.08, no loading smaller than .30 and no cross-loading greater than .30. The first factor retained 9 items, and the second factor retained 5 items. The first factor explained only 20.5% of the total variance and the second factor explained only 9.6%. Such low explained variance by the factors were also reported in @RN1264 where they summarized the results of twenty explanatory factor analyses results on Rotter's I-E scale. It was observed that the explained variance by the 1st factor ranged between 7% to 20% and the 2nd factor ranges between 7-10%. The internal consistency of McDonald's omega coefficient for the first factor was satisfactory (Omega = .64). However, the internal consistency of the second factor (Omega = .39) and full scale (Omega = .63) indicated poor internal consistency [@RN1173].
```{r include=FALSE}
correlations <- tetrachoric(Rotter.EFA,smooth=TRUE)
#Run the EFA for one factor
fa.1F.WLS.1 <- fa(r=correlations$rho, nfactors = 1, fm= "wls", rotate = "varimax",
residuals = TRUE, SMC = TRUE, n.obs =300)
print(fa.1F.WLS.1, cut = .3, digits = 3, sort = TRUE)
reduced.model.1F.WLS.1 <- dplyr::select(Rotter.EFA,-item7, -item22, -item20, -item29, -item17, -item26, -item3, -item6)
correlations.redu.WLS.1 <- tetrachoric(reduced.model.1F.WLS.1,smooth=TRUE)
fa.1F.WLS.2 <- fa(r=correlations.redu.WLS.1$rho, nfactors = 1, fm= "wls", rotate = "varimax",
residuals = TRUE, SMC = TRUE, n.obs =300)
print(fa.1F.WLS.2, cut = .3, digits = 3, sort = TRUE)
reduced.model.1F.WLS.2 <- dplyr::select(Rotter.EFA,-item7, -item22, -item20, -item29, -item17, -item26, -item3, -item6, -item21)
correlations.redu.WLS.2 <- tetrachoric(reduced.model.1F.WLS.2,smooth=TRUE)
fa.1F.WLS.3 <- fa(r=correlations.redu.WLS.2$rho, nfactors = 1, fm= "wls", rotate = "varimax",
residuals = TRUE, SMC = TRUE, n.obs =300)
print(fa.1F.WLS.3, cut = .3, digits = 3, sort = TRUE)
reduced.model.1F.WLS.3 <- dplyr::select(Rotter.EFA,-item7, -item22, -item20, -item29, -item17, -item26, -item3,-item6, -item21, -item12, -item2)
correlations.redu.WLS.3 <- tetrachoric(reduced.model.1F.WLS.3,smooth=TRUE)
fa.1F.WLS.4 <- fa(r=correlations.redu.WLS.3$rho, nfactors = 1, fm= "wls", rotate = "varimax",
residuals = TRUE, SMC = TRUE, n.obs =300)
print(fa.1F.WLS.4, cut = .3, digits = 3, sort = TRUE)
resd.1F.WLS =residuals(fa.1F.WLS.4, diag = FALSE, na.rm =T)
hist(resd.1F.WLS, col ="red", main = "", xlab = "Residuals" ,ylim=c(0, 100))
abline(h = 10, lwd = 2, lty = 2)
abline(v =.1,lwd = 2, lty = 2)
omega.One <- omega(reduced.model.1F.WLS.3, nfactors=1, fm="wls",
n.iter=1,p=.05,poly=FALSE,key=NULL,
flip=TRUE,digits=2, title="Omega",
sl=TRUE,labels=NULL,plot=TRUE,n.obs=NA,
rotate="oblimin",Phi=NULL,option="equal",covar=FALSE)
```
Next, we fit a one-factor solution, and after 4 rounds of identifying and excluding the problematic items, a simple structure with one factor was obtained with 12 items explaining 32% of the total variance. The RMSR value was close to the cut-off value (.09). The internal consistency coefficient Mcdonald's omega total was satisfactory (.70).
The obtained one-factor solution retained all items (with additional three items: 4, 9 & 13) of the first factor obtained in the previous two-factor solution. These items stemmed from the beliefs on the importance of personal ability and effort versus external luck in achieving a desired personal goal. Such a factor in the latent structure of Rotter's I-E scale is supported in the literature [@RN1252; @RN1253; @RN1254]. Our one-factor solution contained all the items retained in the "personal control" factor found by @RN1252. However the "political control" factor [@RN1252; @RN1254] reflecting the beliefs on people's influence over political events was not evident in our sample. Items belonging to the second factor of the obtained two-factor model in our study were stemmed from the beliefs on the interpersonal relationship (item7, 20, 26) and misfortune (item21, item 2). This factor was less interpretable and showed low internal consistency (Omega =.39). Thus, we retained the one-factor model, exhibiting better reliability estimates and meaningful interpretation than the two-factor model.
```{r TabEFA1}
#This code creates the EFA output table for one factor and place it in the manuscript
FAc <- fa.1F.WLS.4
Factorloading <- cbind(FAc $loadings, FAc$communalities)
colnames(Factorloading)= c("LOC", "Communalities")
apa_table(unclass(Factorloading))
```
# Study 2 Confirmation of Factor Structure and Psychometric Properties of Bangla Rotter's I-E scale
This study had three objectives. First, to confirm the latent factor structure of Bangla Rotter's I-E scale obtained in the first study by confirmatory factor analysis. Second, to gather validity evidence for our adapted scale [@RN1266]. Our first study explored the content validity in terms of I-CVI and S-CVI indexes and found satisfactory content validity. Validity evidence for the internal structure would be drawn from the CFA analysis. To check the scale's convergent validity, we calculated the bivariate correlation among the scores of Rotter's I-E scale and Internal Control Index (ICI) [@RN1267] and two sub-scales of Big five inventory [@RN1278; @RN1279[@RN1288]] . Third, to gather more information on our adapted scale using the item response theory (IRT)..
## Method
### Participants
A second group of 178 Bangladeshi adults participated in Study 2. They were recruited via email invitation following snowballing techniques. There was no missing or incomplete data. 73% of the participants was female, ranging in age from 21 to 53 (29.20±4.85) and 27% of the participants was male, ranging in age from 26 to 44 (33.30±3.82). 78 % of the participants are married. Average years of education for the males are 16.84±.37 and for the female are 15.14±2.14. For estimating the sample size for the confirmatory factor analysis we followed the N:q rule [@RN1268; @RN1269; @RN1270; @RN1271] where 10 participants per parameters is required to earn trustworthiness of the result. Our sample size exceeds the requirement.
### Measures
#### Bangla Rotter's I-E Scale
We derived a one-factor solution of the Bangla Rotter's I-E scale by the EFA conducted in our study 1. The internal consistency coefficients for the one-factor model was satisfactory (omega = .70)
#### Internal Control Index
The ICI is a 28-items 5 point scale to measure a person's locus of control [@RN1267]. The items were translated into Bangla using the standard procedure of forward-backward translation and judgment of an expert panel. Internal consistency coefficient Mcdonald's omega obtained in our sample was .86 indicating satisfactory internal consistency.
#### Big Five Inventory (BFI)
Previous research has demonstrated the association of Locus of control with different personality factors. External locus of control is associated with high neuroticism [@HORNER1996] and openness to experience [@RN1280; @RN1280; @RN1281; @RN1282] . We decided me measure neuroticism and openness to experience by two sub scales of BFI [@RN1278; @RN1279]. We have used the adapted Bangla BFI [@RN1287]. The neuroticism sub scale measures the extent to which an indivudual is affectively unstable, anxious and worried[@HORNER1996].It has 8 items (3 reversed items). The openness subscale has 10 items (2 reversed items) and measures individual's susceptibility to aesthetics, ideas, values and flexibility[@costa1992normal]. Each item (except for the reversed items) was scored on a five point Likert scale ranging from 1 (completely disagree) to 5 (completely agree) Test-retest reliabilities of the Bengali version of BFI for neuroticism [r =.92, p \< 0.01] and openness [r = .87, p \< 0.01] was satisfactory [@RN1287].
### Procedure
Participants were invited to participate voluntarily in the online study. Once agreed, participants' consent was digitally recorded, and data collection commenced.
### Results and Discussion
```{r CFA, include=FALSE}
#CFA analysis
#Define the model
Rotter.one <- "LOC =~ item18 + item25 +item11 + item15 + item16 + item10 +item9 + item23 + item13 + item5 + item28 + item4"
#Fit the model
Rotter.one.fit <- cfa(Rotter.one, Rotter.CFA, mimic = "Mplus",
ordered = names(Rotter.CFA),estimator = "WLSMV")
#Summary of the analysis
One.factor.sum <- summary(Rotter.one.fit, fit.measures =TRUE,standardized = TRUE, rsq =TRUE)
#Call the fit-indices
One.factor.Cfa <- fitmeasures (Rotter.one.fit,c("gfi", "agfi", "nfi","rfi",
"cfi.scaled","tli.scaled",
"rmsea",
"srmr","aic"))
#Check reliability
One.factor.reliability <- semTools::reliability(Rotter.one.fit)
One.factor.reliability[5]
#Check Modification indices
modfit.Cor.one <- modindices(Rotter.one.fit, sort. = TRUE)
modfit.Cor.one[modfit.Cor.one$mi>3.84,]
#Redefine the model
Rotter.one.2 <- "LOC =~ item18 + item25 +item11 + item15 + item16 + item10 +item9 + item13 + item5 + item28 + item4"
#Refit
Rotter.one.fit.2 <- cfa(Rotter.one.2, Rotter.CFA, mimic = "Mplus",
ordered = names(Rotter.CFA),estimator = "WLSMV")
#Summary of the refit
One.factor.Cfa.mod.sum <- summary(Rotter.one.fit.2, fit.measures =TRUE,standardized = TRUE, rsq =TRUE)
#Fir indices for the 2nd CFA
One.factor.Cfa.mod.fit <- fitmeasures (Rotter.one.fit.2,c("gfi", "agfi", "nfi","rfi",
"cfi.scaled","tli.scaled",
"rmsea",
"srmr","aic"))
#Check reliability for second CFA
One.factor.reliability.mod <- semTools::reliability(Rotter.one.fit.2)
```
We used the 'Lavaan'[@R-lavaan] package in Rstudio to conduct the categorical confirmatory factor analysis with robust weighted least square (WLSMV) estimator as our response data was dichotomous [@RN1231]. Commonly used Model fit benchmarks of @RN1162 focused on (i) the comparative fit index (CFI;) (ii) the Tucker Lewis index (TLI) (CFI/TLI, $goodfit \geq .95$, $acceptable fit\geq .90$) (ii) the root mean square error of approximation (RMSEA; close to .06 or below), (iii) the standardized root mean square (SRMR; close to .08 or below) to estimate the model fit. Additionally, the chi-square test is also used to estimate the absolute model fit. Table \@ref(tab:tabCfa) summarizes the fit indices of our fitted model. The fitted model failed to attain an absolute fit estimated by the chi-square test. It is necessary to keep in mind that the chi-square test is sensitive to sample size while estimating the model and not recommended to be used as the sole index of absolute model fit [@RN1231]. SRMR value was also higher than general guideline. It is evident from the work of [@RN1272] that for categorical data SRMR performs poorly. Subsequently we judged the model fit based on incremental and parsimony fit indices values. Incremental fit indices for the one factor model (CFI =`r apa(One.factor.Cfa[5],2,F)`, TLI = `r apa(One.factor.Cfa[6],2,F)`) and parsimony index (RMSEA = `r apa(One.factor.Cfa[7],2,F)`) were indicating acceptable fit. However, one item (item23) loaded poorly. By discarding the item one factor model attained best fit (CFI =`r apa(One.factor.Cfa.mod.fit[5],2,F)`, TLI = `r apa(One.factor.Cfa.mod.fit[6],2,F)`, RMSEA = `r apa(One.factor.Cfa.mod.fit[7],2,F)`). SRMR value (`r apa(One.factor.Cfa.mod.fit[8],2,F)`) was also close to the suggested guideline(.08) The internal consistency reliability coefficients McDonald's omega value for both models were satisfactory (.71 & .72, respectively). Fig\@ref(fig:figcfa) depicts both model.
```{r tabCfa, results='asis'}
#Create CFA output table
##Create an empty matrix
CFa.matrix <- matrix("NA", nrow =2, ncol = 8)
##Set the colnames
colnames(CFa.matrix) = c("Model", "Chi-Squre", "df", "CFI", "TLI", "RMSEA", "SRMR", "McDonald's Omega")
##Fill the matrix with values
CFa.matrix[1,] = c("One Factor Model", "83.84", "54", apa(One.factor.Cfa[5],2,F), apa(One.factor.Cfa[6],2,F), apa(One.factor.Cfa[7],2,F), apa(One.factor.Cfa[8],2,F), apa(One.factor.reliability[5],2,F) )
CFa.matrix[2,] = c("One Factor Model Modified", "72.24", "53", apa(One.factor.Cfa.mod.fit[5],2,F), apa(One.factor.Cfa.mod.fit[6],2,F), apa(One.factor.Cfa.mod.fit[7],2,F), apa(One.factor.Cfa.mod.fit[8],2,F)
,apa(One.factor.reliability.mod[5],2,F))
##Print the matrix as a table in the manuscript
apa_table(CFa.matrix, caption = "Fit Indices Of CFA")
```
```{r figcfa, fig.cap = "(A) One Factor Model of Bangla Rotter's I-E Scale (12 Items), (B) One Factor Model (11 Items)", fig.show="hold",fig.ncol = 2, out.width="50%", warning=FALSE}
#Print the CFA plots in the manuscript
library(semPlot)
semPaths (Rotter.one.fit ,
what= "std",
#"hide", #(hides coefficeits)
#whatLabels = "std",
intercepts = F,
style ="OpenMx",
#residScale = 6,
theme = "colorblind",
nCharNodes = 0,
reorder =T,
rotation =2,
layout ="tree",
cardinal = T,
curvePivot =T,
sizeMan =6,#items length
sizeMan2 = 2,#items
sizeLat = 12,#factors
thresholds = FALSE,
equalizeManifests =F,
fade = FALSE,
edge.label.cex = .8,
#exoCov = T,
centerLevels = T,
#edge.color="black",
label.scale=T,
label.cex=1.2, #Font of factor and item name
residuals=T,
#exoVar=FALSE,
#fixedStyle=6, #Style of arrow (guide item)
#freeStyle=1#Style of arrow (other item), #XKCD = TRUE
)
semPaths (Rotter.one.fit.2 ,
what= "std",
#"hide", #(hides coefficeits)
#whatLabels = "std",
intercepts = F,
style ="OpenMx",
#residScale = 6,
theme = "colorblind",
nCharNodes = 0,
reorder =T,
rotation =2,
layout ="tree",
cardinal = T,
curvePivot =T,
sizeMan =6,#items length
sizeMan2 = 2,#items
sizeLat = 12,#factors
thresholds = FALSE,
equalizeManifests =F,
fade = FALSE,
edge.label.cex = .8,
#exoCov = T,
centerLevels = T,
#edge.color="black",
label.scale=T,
label.cex=1.2, #Font of factor and item name
residuals=T,
#exoVar=FALSE,
#fixedStyle=6, #Style of arrow (guide item)
#freeStyle=1#Style of arrow (other item), #XKCD = TRUE
)
```
### The Validity of Bangla Rotter's I-E Scale
We have gathered satisfactory content validity evidence of Rotter's I-E scale in our first study by I-CVI and S-CVI. Our second study gathered structural validity evidence by confirming the one-factor solution obtained in the EFA. Lastly, we gathered convergent validity evidence based on correlational analysis among the total score of ICI [@RN1267], neuroticism, openness to experience [@RN1287] and Bangla Rotter's I-E scale
```{r val-rel, include =F}
library(MBESS)
#This chunks calculates the reliability of the scales used in the validation
openness <- data %>%
dplyr::select(O1:O10)
omega1 <- psych::omega(openness,nfactors=1)
mm <- ci.reliability(openness,type="omega")
neuro <- data %>%
dplyr::select(N1:N8)
omega2 <- psych::omega(neuro,nfactors=1)
```
```{r validity, include=FALSE}
#Create the dataframe for concurrent validity
Validity_Rotter <- data[301:478,]
Validity_Rotter <- Validity_Rotter %>%
rowwise() %>%
mutate(Uni_Total = sum(item18, item25, item11, item15, item16, item10, item9, item13, item5, item28, item4))
Validity.cor <- Validity_Rotter %>%
dplyr::select(Uni_Total, Total_Neuro, Total_Opennes, DI_Total)
data.frame(Validity.cor)
colnames(Validity.cor) =c ("Rotter's I-E Scale", "Neuroticism", "Opennesss", "Internal Control Index")
```
```{r correlationfunc}
#This code creates a function to run correlation analysis across the data frame with apa notions.
glrstab<- function(x, export=FALSE) {
r <-corr.test(x)$r #taking just the correlation matrix; no N, or p
p <-corr.test(x)$p #taking the p*s
#define notions for significance levels
mystars <- ifelse(p < .001, "**"
, ifelse(p < .01, "**"
, ifelse(p < .05, "*"
, ifelse(p < .10, "+", " "))))
#round r, define new matrix Rnew with the correlations from rnd and paste mystars
rnd <- papaja::printnum(r, gt1 = FALSE, digits = 2) #round, drop leading 0 - Thanks CRSH!
Rnew <- matrix(paste(rnd, mystars, sep=""), ncol=ncol(rnd))
#remove 1.0 correlations from diagonal and set the strings
diag(Rnew) <- ''
Rnew[upper.tri(Rnew)] <- ''
rownames(Rnew) <- paste(1:ncol(rnd), colnames(rnd), sep=" ") #define number and name
colnames(Rnew) <- paste(1:ncol(rnd), "", sep="") #define number
#fun-part: we trim the top half
Rnew[upper.tri(Rnew)] <- ''
Rnew
#Rnew <- cbind(round(describe(x)[,3:4],2), Rnew) #describe x, M sD - put them in the matrix
#colnames(Rnew)[1:2] <- c("M","SD") #Beschriftung der neuen Spalten
Rnew <- Rnew[,1:(ncol(Rnew)-1)] #delete the last column (ugly)
#export to clipboard
if (export==TRUE){
result<-write.table(Rnew
, "clipboard"
, sep=";"
, row.names=FALSE)
}
else result <- Rnew
return(result)
}
```
```{r validity-tab}
#Calculate the concurrent validity
Cor <-glrstab(Validity.cor) #the function in action!
```
```{r tabvalidity, include=FALSE, results='asis'}
#Print the concurrent validity analysis table
apa_table(Cor, escape = FALSE
, caption = "Correlation matrix of the main variables"
, note = "**p < .001")
```
Table\@ref(tab:tabvalidity) summarized the correlation coefficients. Bangla Rotter's I-E scale were significantly positively correlated with neuroticism, r = .21, p\<0.01. Such a significant positive correlation was also reported in @HORNER1996, r = 0.33, p\<.001. Internal control index (ICI) showed a significant negative correlation, r = -.22, p\<.01. @RN1267 also reported such correlation, r = -.39, p\<.01 between the ICI and "personal control" factor of @RN1252. Openness to experience also showed a significant negative correlation with Bangla Rotter's I-E scale, r = -.22, p \<.001. @rodrigues2018relationship also reported such significant negative correlation of between LoC and openness to experience (r= -.22, p \<0.01)