Nothing
"partial.r" <-
function(data,x,y,use="pairwise",method="pearson",part=FALSE) {
cl <- match.call()
#convert formula input into prior format
#x are the set from which y is partialled
if(!missing(x)) { if(inherits(x,"formula")) {
ps <- fparse(x)
y <- ps$y
x <- ps$x
z <- ps$z #do we have any variable to partial out
ex <- ps$ex
#now put it into old form
x <- c(y,x)
yy <- y #we need to keep the name(s) of the dependent variables
y <- z #we partial these from x
}
}
if(!isCorrelation(data)) {n.obs <- dim(data)[1]
if(!missing(x) & !missing(y)) {if(!is.character(x) ) x <- colnames(data)[x]
if(!is.character(y) ) y <- colnames(data)[y]
data <- cor(data[,c(x,y)],use=use,method=method)
} else {if(is.null(dim(data))) stop("Specify the rows for data (use , for all rows)")
data <- cor(data,use=use,method=method) }}
m <- as.matrix(data)
#if(missing(x) & missing(y)) {X.resid <- -(solve(m)) #this is thus the image covariance matrix
if(missing(x) & missing(y)) {X.resid <- -(Pinv(m)) #this is thus the image covariance matrix
diag(X.resid) <- 1/(1- smc(m)) #adjust the diagonal to be 1/error
X.resid <- cov2cor(X.resid)
rownames(X.resid) <-colnames(X.resid) <- colnames(m)} else {
if(missing(x)){ x <- colnames(data)
y <- as.character(y)
x <- x[!x %in% y]}
xy <- c(x,y)
X <- m[x,x]
Y <- m[x,y]
phi <- m[y,y]
# phi.inv <- solve(phi)
phi.inv <- Pinv(phi)
X.resid <- X - Y %*% phi.inv %*% t(Y)
if(part) if(length(yy) >1) {diag(X.resid[yy,yy]) <- 1} else {X.resid[yy,yy] <- 1}
X.resid <- cov2cor(X.resid)
class(X.resid) <- c("psych","partial.r", "matrix") }
return(X.resid)
}
#modified March 23 to use cov2cor instead of the sd line. This makes the diagonal exactly 1.
#05/08/17 Completely rewritten to be easier to use and follow for the case of complete partials
#modified 03/19/19 to just choose the items to correlate instead of entire matrix
#modified 07/25/20 to use the Pseudo Inverse so that in cases of improper matrices, we still give a partial
#modified 06/09/21 to add the matrix class to the object.
#modified 12/3/21 to add formula input option
#modified 12/5/23 to add the ability to do part correlations (suggested by Rick Zinbarg)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.