cor.wt {psych} | R Documentation |
If using aggregated data, the correlation of the means does not reflect the sample size used for each mean. cov.wt in RCore does this and returns a covariance matrix or the correlation matrix. The cor.wt function weights by sample size or by standard errors and by default return correlations.
cor.wt(data,vars=NULL, w=NULL,sds=NULL, cor=TRUE)
data |
A matrix or data frame |
vars |
Variables to analyze |
w |
A set of weights (e.g., the sample sizes) |
sds |
Standard deviations of the samples (used if weighting by standard errors) |
cor |
Report correlations (the default) or covariances |
A weighted correlation is just r_{ij} = \frac{\sum(wt_{k} (x_{ik} - x_{jk})}{\sqrt{wt_{ik} \sum(x_{ik}^2) wt_jk \sum(x_{jk}^2)}}
where x_{ik}
is a deviation from the weighted mean.
The weighted correlation is appropriate for correlating aggregated data, where individual data points might reflect the means of a number of observations. In this case, each point is weighted by its sample size (or alternatively, by the standard error). If the weights are all equal, the correlation is just a normal Pearson correlation.
Used when finding correlations of group means found using statsBy
.
cor |
The weighted correlation |
xwt |
The data as weighted deviations from the weighted mean |
wt |
The weights used (calculated from the sample sizes). |
mean |
The weighted means |
xc |
Unweighted, centered deviation scores from the weighted mean |
xs |
Deviation scores weighted by the standard error of each sample mean |
A generalization of cov.wt
in core R
William Revelle
See Also as cov.wt
, statsBy
means.by.age <- statsBy(sat.act,"age")
wt.cors <- cor.wt(means.by.age)
lowerMat(wt.cors$r) #show the weighted correlations
unwt <- lowerCor(means.by.age$mean)
mixed <- lowerUpper(unwt,wt.cors$r) #combine both results
cor.plot(mixed,TRUE,main="weighted versus unweighted correlations")
diff <- lowerUpper(unwt,wt.cors$r,TRUE)
cor.plot(diff,TRUE,main="differences of weighted versus unweighted correlations")