[R] reliability, scale scores in the psych package

Doran, Harold HDoran at air.org
Tue Mar 10 15:47:19 CET 2009


Ista

There are several functions in the MiscPsycho package that can be sued
for classical item analysis. 

> -----Original Message-----
> From: r-help-bounces at r-project.org 
> [mailto:r-help-bounces at r-project.org] On Behalf Of Ista Zahn
> Sent: Tuesday, March 10, 2009 10:28 AM
> To: revelle at northwestern.edu
> Cc: r-help at r-project.org
> Subject: [R] reliability, scale scores in the psych package
> 
> Dear Professor Revelle and R-helpers,
> This is a two-part question: the first part is general, and 
> the second is specific to the psych package.
> 
> First question: In the past I've constructed composite 
> variables from questionnaire data by using rowMeans(), and 
> then correlating items with the scale using cor() as an 
> informal check for "bad" items. Over the weekend I decided to 
> take a look at some of the packages in the psychometric task 
> view, to see if there was a way to simplify this process. I 
> looked at several packages, including psychometric, CTT, and 
> psych. I'm interested in hearing from others who need to do 
> this kind of thing frequently. What approach do you use? Do 
> you use one of the packages mentioned above? Are there other 
> packages I might want to take a look at?
> 
> Second question: I spent some time with the psych package 
> trying to figure out how to use the score.items() function, 
> and it's become clear to me that I don't understand what it's 
> doing. I assumed that setting a key equal to -1 would result 
> in the item being reverse scored, but I get weird results, as 
> shown below. When I try to reverse score (by setting a value 
> of -1 in the key), I get scale scores that don't add up 
> (e.g., the mean score is reported as being larger than the 
> maximum item score). How is the score.items() function 
> intended to be used? Do I need to reverse score items before 
> using score.items()?
> 
> Thanks,
> Ista
> 
> ########## score.items() example begins here ##########
> > library(psych)
> > Data.score <- 
> > 
> as.data.frame(matrix(c(40,29,40,32,1,1,3,1,5,3,3,44,24,47,31,4,4,1,1,4
> > 
> ,2,1,13,5,14,5,5,4,3,3,4,4,3,7,2,2,0,5,4,2,2,4,4,4,7,6,5,4,1,1,3,4,3,2
> > 
> ,1,18,15,21,8,6,6,1,1,6,6,6,9,10,15,7,5,4,2,1,5,5,5,10,7,12,6,2,2,4,4,
> > 3,3,3,8,7,13,8,1,1,4,2,2,2,1,10,5,13,7,4,3,3,3,3,3,3), nrow=10, 
> > byrow=TRUE))
> > names(Data.score) <- 
> > 
> c("s1","s2","s3","s4","imi1","imi2","imi3","imi4","imi5","imi6","imi7"
> > )
> > Data.score
>    s1 s2 s3 s4 imi1 imi2 imi3 imi4 imi5 imi6 imi7
> 1  40 29 40 32    1    1    3    1    5    3    3
> 2  44 24 47 31    4    4    1    1    4    2    1
> 3  13  5 14  5    5    4    3    3    4    4    3
> 4   7  2  2  0    5    4    2    2    4    4    4
> 5   7  6  5  4    1    1    3    4    3    2    1
> 6  18 15 21  8    6    6    1    1    6    6    6
> 7   9 10 15  7    5    4    2    1    5    5    5
> 8  10  7 12  6    2    2    4    4    3    3    3
> 9   8  7 13  8    1    1    4    2    2    2    1
> 10 10  5 13  7    4    3    3    3    3    3    3
> >
> > #This works fine
> > key.list <- list(silence=1:4, interest=5:11) keys <- 
> > make.keys(length(names(Data.score)), key.list, 
> > item.labels=names(Data.score)) scored <- score.items(keys, 
> Data.score, 
> > missing=FALSE, totals=FALSE) scored$scores
>       silence interest
>  [1,]   35.25 2.428571
>  [2,]   36.50 2.428571
>  [3,]    9.25 3.714286
>  [4,]    2.75 3.571429
>  [5,]    5.50 2.142857
>  [6,]   15.50 4.571429
>  [7,]   10.25 3.857143
>  [8,]    8.75 3.000000
>  [9,]    9.00 1.857143
> [10,]    8.75 3.142857
> >
> > #This does not do what I expected. Mean interest scores are 
> higher than score of the highest item.
> > key.list2 <- list(silence=1:4, interest=c(5,6,-7,-8,9,10,11))
> > keys2 <- make.keys(length(names(Data.score)), key.list2, 
> > item.labels=names(Data.score))
> > scored2 <- score.items(keys2, Data.score, missing=FALSE, 
> totals=FALSE) 
> > scored2$scores
>       silence interest
>  [1,]   35.25 14.71429
>  [2,]   36.50 15.28571
>  [3,]    9.25 15.42857
>  [4,]    2.75 15.85714
>  [5,]    5.50 13.57143
>  [6,]   15.50 17.42857
>  [7,]   10.25 16.42857
>  [8,]    8.75 14.14286
>  [9,]    9.00 13.57143
> [10,]    8.75 14.85714
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide 
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 




More information about the R-help mailing list