About a month ago, I delivered a 12-item questionnaire to 142 juniors. These questions are related to their perceptions of ‘being a college student’, ‘taking undergraduate courses’ and ‘assessment in education course’. As I stated in its title, this is a pseudo-instrument given that the questions lack solid justifications based on the related literature. I simply asked very simple questions using no research at all, even Google.
Bu döküman 142 üniversite 3. sınıf öğrencisine sorduğum 12 sorunun basit bir analizini içerir. Öğrenciler üniversite, dersler ve ölçme dersi hakkında bazı sorulara cevap verdiler. Bu sorular akademik bir özen olmadan yazıldı. Örneğin birinci soru “Üniversite öğrencisi olmaktan çok mutluyum.”
Her soru için öğrenciler 0’dan 10’a kadar bir sayı belirttiler. 10 tamamen katıldıklarını, 0 işe hiç katılmadıkları gösteriyor. Datasetini aşağıdaki linkte paylaştım. Öğrencilerden sorulara verdiği cevaplarla birlikte, cinsiyet, 1. öğretim/2. öğretim ve A grubu/B grubu verileri istenildi. Böylece 3 faktörlü ve her faktörü 2 level içeren bir ANOVA için veri toplanmış oldu.
Aşağıda yazdığım kod, 12 farklı ANOVAyı yapıp, anlamlı farklılıkları bulup , bu anlamlı farklılıklar için betimleyici istatistikleri rapor ediyor. Süreci otome ettiğim için bütün bu işlemler 1 dakikadan kısa sürüyor. Bu kod kullanılarak (modifiye edilerek) modelin aynı ama bağımlı değişkenin farklı olduğu sınırsız sayıda ANOVA saniyeler içinde koşulup, anlamlı farklılıklar rapor edilebilir.
Each question is answered 0 to 10 , 10 indicating strongly aggree. You can find the data set here (see).
item1: I am very happy in college
item2: I enjoy my assessment class
item3: I study enough
item4: Not all courses are fun
item5: I wont be here if attendance is not an issue
item6: Not all my courses are useful
item7: I get bored in my assessment course
item8: I willingly attend all my courses
item9: Each and every teacher candidate should take an assesment in education course
item10: Being a college student helps my personal growth
item11: I would take an advanced assessment course
item12: I attend my courses only because its obligatory.
Here is how the score distributions by items look like.
Here is the first 5 rows
| sec | grp | gndr | i1 | i2 | i3 | i4 | i5 | i6 | i7 | i8 | i9 | i10 | i11 | i12 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| i | a | m | 9 | 2 | 1 | 10 | 3 | 10 | 3 | 2 | 10 | 4 | 7 | 10 |
| i | a | m | 8 | 5 | 1 | 8 | 6 | 5 | 4 | 3 | 5 | 8 | 1 | 6 |
| i | a | m | 8 | 0 | 0 | 8 | 3 | 0 | 5 | 4 | 10 | 10 | 8 | 0 |
| i | a | m | 4 | 2 | 2 | 10 | 0 | 10 | 0 | 10 | 10 | 0 | 8 | 0 |
| i | a | m | 5 | 5 | 2 | 10 | 10 | 10 | 5 | 5 | 10 | 0 | 0 | 5 |
Below code will run ANOVA on each 12 item, a 3-way between subjects, each factor has only 2 levels. No interactions included but can be added easily. Only the p values are saved.
pval=matrix(0,ncol=4,nrow=12)
for (i in c(4:15)){
y=data[,i]
model<-aov( y~data$sec+data$grp+data$gndr,na.action = na.omit)
pval[i-3,]=c(as.numeric(summary(model)[[1]][5][[1]][1:3]),mean(y,na.rm=T))
}
pval=data.frame(round(pval,3))
colnames(pval)=c("sec","grp","gndr","overallmean")
pval
## sec grp gndr overallmean
## 1 0.033 0.181 0.001 7.014
## 2 0.081 0.279 0.017 5.514
## 3 0.415 0.303 0.005 4.725
## 4 0.987 0.466 0.137 8.801
## 5 0.951 0.053 0.171 4.542
## 6 0.508 0.479 0.831 7.113
## 7 0.137 0.881 0.085 4.617
## 8 0.932 0.316 0.009 4.099
## 9 0.390 0.196 0.293 7.979
## 10 0.946 0.188 0.293 5.319
## 11 0.017 0.487 0.359 3.493
## 12 0.553 0.615 0.010 4.218
pval[,1:3]<.05
## sec grp gndr
## [1,] TRUE FALSE TRUE
## [2,] FALSE FALSE TRUE
## [3,] FALSE FALSE TRUE
## [4,] FALSE FALSE FALSE
## [5,] FALSE FALSE FALSE
## [6,] FALSE FALSE FALSE
## [7,] FALSE FALSE FALSE
## [8,] FALSE FALSE TRUE
## [9,] FALSE FALSE FALSE
## [10,] FALSE FALSE FALSE
## [11,] TRUE FALSE FALSE
## [12,] FALSE FALSE TRUE
As you can see some factors were significant. For example the p value for gender effect on question #1 is .001. I now locate significant p values (no familywise error rate correction is needed as I consider each question separately. Wont be hard to adjust though.)
which(pval<.05, arr.ind=TRUE)
## row col
## [1,] 1 1
## [2,] 11 1
## [3,] 1 3
## [4,] 2 3
## [5,] 3 3
## [6,] 8 3
## [7,] 12 3
Lets do some automated reporting
library(psych)
sigmat=which(pval<.05, arr.ind=TRUE)
for (i in 1:nrow(sigmat))
{
y=data[,as.numeric(sigmat[i,1])+3]
x=data[,as.numeric(sigmat[i,2])]
print(paste("item",as.numeric(sigmat[i,1])))
print(describeBy(y,x))
print(c("##############"))
}
## [1] "item 1"
## group:
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 6 4.33 3.08 3.5 4.33 1.48 1 10 9 0.8 -0.84 1.26
## --------------------------------------------------------
## group: i
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 71 6.82 3.09 8 7.21 2.97 0 10 10 -0.67 -0.58 0.37
## --------------------------------------------------------
## group: ii
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 64 7.48 2.99 8.5 7.98 2.22 0 10 10 -1.11 0.22 0.37
## [1] "##############"
## [1] "item 11"
## group:
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 6 7.33 3.14 9 7.33 0.74 2 10 8 -0.71 -1.44 1.28
## --------------------------------------------------------
## group: i
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 71 3.34 2.98 3 3.02 2.97 0 10 10 0.64 -0.62 0.35
## --------------------------------------------------------
## group: ii
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 65 3.31 3.62 2 2.92 2.97 0 10 10 0.75 -0.83 0.45
## [1] "##############"
## [1] "item 1"
## group:
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 4 3.75 0.96 3.5 3.75 0.74 3 5 2 0.32 -2.08 0.48
## --------------------------------------------------------
## group: f
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 87 7.78 2.86 9 8.28 1.48 0 10 10 -1.32 0.92 0.31
## --------------------------------------------------------
## group: m
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 50 5.94 3.13 5.5 6.15 3.71 0 10 10 -0.29 -1.01 0.44
## [1] "##############"
## [1] "item 2"
## group:
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 4 4.25 1.71 4.5 4.25 1.48 2 6 4 -0.28 -1.96 0.85
## --------------------------------------------------------
## group: f
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 85 5.99 2.81 6 6.1 2.97 0 10 10 -0.17 -0.77 0.31
## --------------------------------------------------------
## group: m
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 51 4.82 2.67 5 4.88 2.97 0 10 10 -0.15 -0.89 0.37
## [1] "##############"
## [1] "item 3"
## group:
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 4 5 3.83 4 5 2.97 2 10 8 0.32 -2.08 1.91
## --------------------------------------------------------
## group: f
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 87 5.24 2.89 5 5.32 2.97 0 10 10 -0.18 -0.79 0.31
## --------------------------------------------------------
## group: m
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 51 3.82 2.36 3 3.68 2.97 0 10 10 0.47 -0.4 0.33
## [1] "##############"
## [1] "item 8"
## group:
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 4 4.25 3.95 3 4.25 1.48 1 10 9 0.62 -1.75 1.97
## --------------------------------------------------------
## group: f
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 87 4.69 3.38 5 4.62 4.45 0 10 10 0 -1.17 0.36
## --------------------------------------------------------
## group: m
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 50 3.06 2.64 3 2.83 2.97 0 10 10 0.47 -0.55 0.37
## [1] "##############"
## [1] "item 12"
## group:
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 4 2 1.63 2 2 1.48 0 4 4 0 -1.88 0.82
## --------------------------------------------------------
## group: f
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 87 3.66 3.64 2 3.35 2.97 0 10 10 0.67 -1.06 0.39
## --------------------------------------------------------
## group: m
## vars n mean sd median trimmed mad min max range skew kurtosis se
## 1 1 51 5.35 3.41 5 5.44 4.45 0 10 10 -0.04 -1.32 0.48
## [1] "##############"
For example scores on “item12: I attend my courses only because its obligatory.” differ significantly for gender. Male students report an overall score of 5.35 whereas Female students report 3.66, indicating female students attend courses more willingly.