| correct.cor {psych} | R Documentation |
Given a raw correlation matrix and a vector of reliabilities, report the disattenuated correlations above the diagonal.
correct.cor(x, y)
x |
A raw correlation matrix |
y |
Vector of reliabilities |
Disattenuated correlations may be thought of as correlations between the latent variables measured by a set of observed variables. That is, what would the correlation be between two (unreliable) variables be if both variables were measured perfectly reliably.
Examples of the output of this function are seen in cluster.loadings and cluster.cor
Raw correlations below the diagonal, reliabilities on the diagonal, disattenuated above the diagonal.
Maintainer: William Revelle revelle@northwestern.edu
http://personality-project.org/revelle/syllabi/405.syllabus.html
cluster.loadings and cluster.cor
# attitude from the datasets package
#example 1 is a rather clunky way of doing things
## Not run:
a1 <- attitude[,c(1:3)]
a2 <- attitude[,c(4:7)]
x1 <- rowSums(a1) #find the sum of the first 3 attitudes
x2 <- rowSums(a2) #find the sum of the last 4 attitudes
alpha1 <- alpha.scale(x1,a1)
alpha2 <- alpha.scale(x2,a2)
x <- matrix(c(x1,x2),ncol=2)
x.cor <- cor(x)
alpha <- c(alpha1,alpha2)
round(correct.cor(x.cor,alpha),2)
#
#much better - although uses standardized alpha
clusters <- matrix(c(rep(1,3),rep(0,7),rep(1,4)),ncol=2)
cluster.loadings(clusters,cor(attitude))
# or
clusters <- matrix(c(rep(1,3),rep(0,7),rep(1,4)),ncol=2)
cluster.cor(clusters,cor(attitude))
#
## End(Not run)
## The function is currently defined as
"correct.cor" <-
function(x,y) { n=dim(x)[1]
{ diag(x) <- y
if (n> 1) {
for (i in 2:n) {
k=i-1
for (j in 1:k) {
x[j,i] <- x[j,i]/sqrt(y[i]*y[j]) } #fix the upper triangular part of the matrix
}}
return(x) }}