partial and semipartial correlation interpretation

462 views
Skip to first unread message

Margaret McEachran

unread,
Feb 3, 2022, 12:41:44 AM2/3/22
to lavaan
Hello, I have a fairly simple SEM implementation and interpretation question as it relates to semi partial and partial correlations. TLDR: can anyone provide a worked example of using ppcor to calculate and interpret semipartial correlations in an SEM context?

Suppose a very simple model: 
intent ~ attitude + socialNorms + perceivedBehavioralControl

summary(fitmodel) will give me the unstandardized regression coefficient for intent ~ attitudes the "Estimate" column, and these can be interpreted as the unit change in intent that results from one unit change.

summary(fitmodel, standardized=TRUE) will give me the standardized regression coefficient for intent ~ attitude in the "std.all" column, and these are equivalent to the partial correlation between attitude and intent, which this can be interpreted as the standard deviation unit change in intent that results from a one standard deviation unit change in attitudes. Right?

I can get the total R2 of the model fairly easily using the rsquare=T option in summary, but I could use some help on how to get semipartial correlations using ppcor and how to interpret them in context of SEM? Also, how would I get the proportion of variance in intent explained by each factor?

Terrence Jorgensen

unread,
Mar 9, 2022, 6:23:03 AM3/9/22
to lavaan
standardized regression coefficient ... equivalent to the partial correlation

No, they are related but have different denominators.  Unstandardized multiple-regression slopes are indeed partial regression slopes, and standardized slopes are interpreted the same way, but in units of the variables' total SD:

interpreted as the standard deviation unit change in intent that results from a one standard deviation unit change in attitudes. Right?

Correct.  Partial correlations are expressed in residual (not total) SD units.  Semipartial is a mix (residual SD of partialed variables, total SD of unpartialed variables)
 
I can get the total R2 of the model fairly easily using the rsquare=T option in summary, but I could use some help on how to get semipartial correlations using ppcor and how to interpret them in context of SEM?

If you calculate the change in R-squared between 2 nested models, the semipartial correlation is the square-root.  Just as the partial correlation is the square-root of partial eta/R-squared.  Why can't you just pass your data to the ppcor package?  If the data are/include latent variables, then you can save the correlation matrix using lavInspect(fit, "cor.lv") or lavInspect(fit, "cor.all") and pass the relevant submatrix to ppcor (but then you couldn't trust any statistical tests, because they are estimates, not observed data).

Also, how would I get the proportion of variance in intent explained by each factor?
 
If the predictors are correlated, their explained variance will overlap.  Squaring the relevant partial correlation (using ppcor, see above) will give you partial eta/R-squared per predictor.

Terrence D. Jorgensen
Assistant Professor, Methods and Statistics
Research Institute for Child Development and Education, the University of Amsterdam

Paul Schreuder

unread,
Nov 9, 2022, 4:34:05 PM11/9/22
to lavaan
hi! Is the ppcor package still available? When trying to get the package I get a message 'Error in library(ppcor) : there is no package called ‘ppcor’

Thanks, Paul

Op woensdag 9 maart 2022 om 12:23:03 UTC+1 schreef Terrence Jorgensen:

Terrence Jorgensen

unread,
Nov 10, 2022, 1:11:12 AM11/10/22
to lavaan
'Error in library(ppcor) : there is no package called ‘ppcor’

That just means it is not installed in the .libPaths() your current R version seeks for packages.  Try install.packages("ppcor")

Paul Schreuder

unread,
Nov 11, 2022, 2:48:46 AM11/11/22
to lavaan
That works, thank you!

Op donderdag 10 november 2022 om 07:11:12 UTC+1 schreef Terrence Jorgensen:
Reply all
Reply to author
Forward
0 new messages