### assessment exam analysis require(foreign) m = read.spss("C:\\NORTON_0307_Stat1000-4.sav", use.value.labels = TRUE, to.data.frame = TRUE) m1 = data.frame(m$LAST,m$FIRST,m$V4,m$SSN,m$Q1,m$Q2,m$Q3,m$Q4,m$Q5,m$Q6,m$Q7,m$Q8,m$Q9,m$Q10,m$Q11,m$Q12,m$Q13,m$Q14,m$Q15,m$Q16,m$Q17,m$Q18,m$Q19,m$Q20,m$SCORE) m1 edit(m1) write.table( m1, "C:\\m1.csv", col.names = NA, sep = "," ) m2 = data.frame(m$Q1,m$Q2,m$Q3,m$Q4,m$Q5,m$Q6,m$Q7,m$Q8,m$Q9,m$Q10,m$Q11,m$Q12,m$Q13,m$Q14,m$Q15,m$Q16,m$Q17,m$Q18,m$Q19,m$Q20) m2 m2a = m2[2:(dim(m2)[1]),] m2a edit(m2a) write.table( m2a, "C:\\m2a.csv", col.names = NA, sep = "," ) write.table( m2a, "C:\\m2a.txt", quote = F, sep = ",", row.names = F, col.names = F ) ns = dim(m2a)[1] # students nq = dim(m2a)[2] # questions m2b = matrix(scan("C:\\m2a.txt",sep = ","),nrow=ns,ncol=nq,byrow=T) m2b # analysis key = m2[1,] key score = m1$m.SCORE[2:(dim(m2)[1])] score X11() plot(score) summary(score) score1 = as.numeric(as.character(score)) score1 X11() hist(score1,br=c(-0.5,0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,14.5,15.5,16.5,17.5,18.5,19.5,20.5)) summary(score1) nr = 4 nc = 5 X11() par(mfrow=c(nr,nc)) for(i in 1:(nr*nc)){ plot(m2a[,i],main = paste("Q",i)) } X11() par(mfrow=c(nr,nc)) for(i in 1:(nr*nc)){ hist(as.numeric(as.character(m2a[,i])),main = paste("question",i),br=c(0.5,1.5,2.5,3.5,4.5,5.5),xlab=paste('ans',key[i])) } X11() par(mfrow=c(nr,nc)) for(i in 1:(nr*nc)){ hist(m2b[,i],main = paste("question",i),br=c(0.5,1.5,2.5,3.5,4.5,5.5),xlab=paste('ans',key[i])) } key summary(m2a) apply(m2b,1,summary) grade=c() for(i in 1:ns){ grade = c(grade,sum(key==m2b[i,],na.rm=TRUE)) } X11() hist(grade,br=c(-0.5,0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,14.5,15.5,16.5,17.5,18.5,19.5,20.5)) summary(grade) # right/wrong matrix w=1 m2c = numeric(nq) m2c1 = numeric(nq) for(i in 1:nq){ if(key[i]==m2b[w,i]) m2c1[i] = 1 } m2c = m2c1 # convert NA to 0 m2b1 <- matrix(sapply(m2b, function(x) {x[is.na(x)] <- 0; x}) ,nrow=ns,ncol=nq) m2b1 w=31 m2c = matrix(0,ns,nq) for(k in 1:ns){ #m2c1 = numeric(nq) for(i in 1:nq){ if(key[i]==m2b1[k,i]) m2c[k,i] = 1 } } key m2b[w,] m2c[w,] sum(m2c[w,]) grade[w] # item analysis library(psychometric) item.exam(m2c, binary = TRUE)