Learn R Programming

psych (version 2.4.1)

cor.wt: The sample size weighted correlation may be used in correlating aggregated data

Description

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.

Usage

cor.wt(data,vars=NULL, w=NULL,sds=NULL, cor=TRUE)

Value

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

Arguments

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

Author

William Revelle

Details

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.

See Also

See Also as cov.wt, statsBy

Examples

Run this code
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")

Run the code above in your browser using DataLab