---------- Forwarded message ---------- From: <r-help-bounces@r-project.org> Date: Mon, May 11, 2009 at 10:24 PM Subject: The results of your email commands To: das.moumita.online@gmail.com The results of your email command are provided below. Attached is your original message. - Results: Ignoring non-text/plain MIME parts - Unprocessed: What is the function for partial correlation.The function which i found here:-- http://www.yilab.gatech.edu/pcor.R and used the recursive version, showed errors while computing partial correlation,where the third variable i.e controlled variable for a pair is more than that .That is when i had more than one third variable ,it always became an infinite loop,it else. # By using recursive formula pcor.rec <- function(x,y,z,method="p",na.rm=T){ # x <- c(x) y <- c(y) z <- as.data.frame(z) if(dim(z)[2] == 0){ stop("There should be given data\n") } data <- data.frame(x,y,z) if(na.rm == T){ data = na.omit(data) } - Ignored: # recursive formula if(dim(z)[2] == 1){ tdata <- na.omit(data.frame(data[,1],data[,2])) rxy <- cor(tdata[,1],tdata[,2],m=method) tdata <- na.omit(data.frame(data[,1],data[,-c(1,2)])) rxz <- cor(tdata[,1],tdata[,2],m=method) tdata <- na.omit(data.frame(data[,2],data[,-c(1,2)])) ryz <- cor(tdata[,1],tdata[,2],m=method) rxy.z <- (rxy - rxz*ryz)/( sqrt(1-rxz^2)*sqrt(1-ryz^2) ) return(rxy.z) }else{ x <- c(data[,1]) y <- c(data[,2]) z0 <- c(data[,3]) zc <- as.data.frame(data[,-c(1,2,3)]) rxy.zc <- pcor.rec(x,y,zc,method=method,na.rm=na.rm) rxz0.zc <- pcor.rec(x,z0,zc,method=method,na.rm=na.rm) ryz0.zc <- pcor.rec(y,z0,zc,method=method,na.rm=na.rm) rxy.z <- (rxy.zc - rxz0.zc*ryz0.zc)/( sqrt(1-rxz0.zc^2)*sqrt(1-ryz0.zc^2) ) return(rxy.z) } } and this piece of code also i tried to use. Rinv <- solve <http://wiki.r-project.org/rwiki/rhelp.php?id=solve>(R) D <- diag <http://wiki.r-project.org/rwiki/rhelp.php?id=diag>(1 / sqrt <http://wiki.r-project.org/rwiki/rhelp.php?id=sqrt>(diag <http://wiki.r-project.org/rwiki/rhelp.php?id=diag>(Rinv))) P <- -D <http://wiki.r-project.org/rwiki/rhelp.php?id=D> %*% Rinv %*% D <http://wiki.r-project.org/rwiki/rhelp.php?id=D> where R is teh correlation matrix. but NaN error at for sqrt <http://wiki.r-project.org/rwiki/rhelp.php?id=sqrt>(diag <http://wiki.r-project.org/rwiki/rhelp.php?id=diag>(Rinv) were generated. http://wiki.r-project.org/rwiki/doku.php?id=tips:data-matrices:part_corr&s=correlation Any convinient function for partial correlation for both one controlled variable or more. -- Thanks Moumita - Done. ---------- Forwarded message ---------- From: Moumita Das <das.moumita.online@gmail.com> To: r-help-request@r-project.org Date: Mon, 11 May 2009 22:23:33 +0530 Subject: partial correlation function Hi friends, What is the function for partial correlation.The function which i found here:-- http://www.yilab.gatech.edu/pcor.R and used the recursive version, showed errors while computing partial correlation,where the third variable i.e controlled variable for a pair is more than that .That is when i had more than one third variable ,it always became an infinite loop,it else. # By using recursive formula pcor.rec <- function(x,y,z,method="p",na.rm=T){ # x <- c(x) y <- c(y) z <- as.data.frame(z) if(dim(z)[2] == 0){ stop("There should be given data\n") } data <- data.frame(x,y,z) if(na.rm == T){ data = na.omit(data) } # recursive formula if(dim(z)[2] == 1){ tdata <- na.omit(data.frame(data[,1],data[,2])) rxy <- cor(tdata[,1],tdata[,2],m=method) tdata <- na.omit(data.frame(data[,1],data[,-c(1,2)])) rxz <- cor(tdata[,1],tdata[,2],m=method) tdata <- na.omit(data.frame(data[,2],data[,-c(1,2)])) ryz <- cor(tdata[,1],tdata[,2],m=method) rxy.z <- (rxy - rxz*ryz)/( sqrt(1-rxz^2)*sqrt(1-ryz^2) ) return(rxy.z) }else{ x <- c(data[,1]) y <- c(data[,2]) z0 <- c(data[,3]) zc <- as.data.frame(data[,-c(1,2,3)]) rxy.zc <- pcor.rec(x,y,zc,method=method,na.rm=na.rm) rxz0.zc <- pcor.rec(x,z0,zc,method=method,na.rm=na.rm) ryz0.zc <- pcor.rec(y,z0,zc,method=method,na.rm=na.rm) rxy.z <- (rxy.zc - rxz0.zc*ryz0.zc)/( sqrt(1-rxz0.zc^2)*sqrt(1-ryz0.zc^2) ) return(rxy.z) } } and this piece of code also i tried to use. Rinv <- solve <http://wiki.r-project.org/rwiki/rhelp.php?id=solve>(R) D <- diag <http://wiki.r-project.org/rwiki/rhelp.php?id=diag>(1 / sqrt <http://wiki.r-project.org/rwiki/rhelp.php?id=sqrt>(diag <http://wiki.r-project.org/rwiki/rhelp.php?id=diag>(Rinv))) P <- -D <http://wiki.r-project.org/rwiki/rhelp.php?id=D> %*% Rinv %*% D <http://wiki.r-project.org/rwiki/rhelp.php?id=D> where R is teh correlation matrix. but NaN error at for sqrt <http://wiki.r-project.org/rwiki/rhelp.php?id=sqrt>(diag <http://wiki.r-project.org/rwiki/rhelp.php?id=diag>(Rinv) were generated. http://wiki.r-project.org/rwiki/doku.php?id=tips:data-matrices:part_corr&s=correlation Any convinient function for partial correlation for both one controlled variable or more. -- Thanks Moumita -- Thanks Moumita [[alternative HTML version deleted]]