[R-es] Correlaciones parciales

José Trujillo Carmona trujillo en unex.es
Mie Abr 27 13:21:19 CEST 2011


Bueno, a la correlación parcial del paquete Rcmdr se accede mediante menús:

library(Rcmdr)
data(iris)
Estadísticos -> Resúmenes -> Matriz de correlaciones ...

Pero el problema de Javier creo que no es el coeficiente en sí, sino el
p-valor. La función de John Fox no incluye el p-valor, pero en realidad
no lo necesita ya que está disponible por otra vía. El coeficiente de
correlación parcial es la forma adimensional de coeficiente de regresión
múltiple. Si desea el p-valor de r(XY.VZ...) es el mismo que el p-valor
del coeficiente de regresión múltiple a1 en: X = a0 + a1 Y + a2 V + a3 Z
+ ... o el coeficiente de regresión múltple b1 en Y = b0 + b1 X + b2 V +
b3 Z + ...

Además el coeficiente de correlación parcial entre X e Y puede ser
hallado a partir de los coeficientes de regresión a1 o b1 mediante la
fórmula (Zar, Bioestatistical Analysis y muchos otros): r(XY.VZ...)=
raíz(t^2 /(t^2 + nu) )  Donde t es la t de Student de a1 o de b1 y nu
son los grados de libertad residuales de la regresión multiple.

Precisamente el problema de Javier, al utilizar los residuos de la
regresión, probablemente tiene que ver con el desajuste de los grados de
libertad, ya que las t de Student de los coeficientes de correlación
parcial no tienen los mismos grados de libertad que los coeficientes de
correlación simples.

Como ejemplo:

> RegModel.1 <- lm(Sepal.Width~Sepal.Length+Petal.Length+Petal.Width, 
data=iris)
> RegModel.2 <- lm(Sepal.Length~Sepal.Width+Petal.Length+Petal.Width, 
data=iris)
> summary(RegModel.1)
...   ...   ...
Coefficients:
             Estimate Std. Error t value Pr(>|t|)
(Intercept)   1.04309    0.27058   3.855 0.000173 ***
Sepal.Length  0.60707    0.06217   9.765  < 2e-16 ***
...   ...   ...

> summary(RegModel.2)
Coefficients:
             Estimate Std. Error t value Pr(>|t|)
(Intercept)   1.85600    0.25078   7.401 9.85e-12 ***
Sepal.Width   0.65084    0.06665   9.765  < 2e-16 ***

La t de Student es 9.765 en ambos casos (a1 y b1 son lo mismo pero con
diferentes unidades físicas) y por tanto el coeficiente de correlación
parcial es:

> (9.765^2/(9.765^2+146))^0.5
[1] 0.6285559

El p-valor lógicamente es el mismo tanto para las t's como para r
parcial. Utilizando la función de John Fox:

> partial.cor(iris[,c("Petal.Length","Petal.Width","Sepal.Length",  
"Sepal.Width")], use="complete.obs")

Petal.Length Petal.Width Sepal.Length Sepal.Width
Petal.Length    0.0000000   0.8707698    0.7190656  -0.6152919
Petal.Width     0.8707698   0.0000000   -0.3396174   0.3526260
Sepal.Length    0.7190656  -0.3396174    0.0000000   0.6285707
Sepal.Width    -0.6152919   0.3526260    0.6285707   0.0000000

Da lógicamente casi el mismo resultado: 0.6285707 La pequeña diferencia
se la achaco a no haber tomado 9.765 con más decimales.

De modo que el problema del p-valor de Javier lo tiene resuelto mediante
la regresión múltiple.

Saludos.




Jorge Ivan Velez escribió:
> Hola Javier,
>
> John Fox tiene esta funcionalidad integrada en Rmcdr. Quizas
> https://stat.ethz.ch/pipermail/r-help/2009-March/193523.html pueda servirte
> para lo que necesitas.
>
> Seria interesante comparar los resultados que obtienes utilizando la funcion
> pcor.test() y con partial.cor()
>
> Saludos,
> Jorge Ivan Velez
>
>
> 2011/4/26 Javier Martinez <>
>
>   
>> Muy buenas,
>>
>> quiero calcular correlaciones de Pearson entre dos variables (a,b)
>> teniendo en cuenta una tercera (c). Para ello estoy usando una función
>> llamada "pcor.test" (http://www.yilab.gatech.edu/pcor.html), que en
>> realidad no está en ningún paquete de R, que yo sepa. ¿Alguien conoce
>> una función similar en alguna librería de R? Por otro lado, para ver
>> si me cuadraban los resultados, he hecho una regresión lineal entre
>> las variables "a" y "c" y luego he hecho otra regresión entre los
>> residuos del modelo resultante y la variable "b". Creo que esto sería
>> más o menos lo mismo que hacer la correlación parcial entre a y b
>> tendiendo en cuenta c, y de hecho los resultados son similares, pero
>> en el caso de la regresión el valor de P no sale significativo. ¿Sería
>> válido este método? Me interesa también representar gráficamente la
>> correlación parcial, por eso he usado también este otro método.
>>
>> Cualquier ayuda es bienvenida y agradecida.
>>
>> Saludos,
>>
>> Javier
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>>     
>
> 	[[alternative HTML version deleted]]
>
>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>   

-- 
_____---^---_____

Univ. de Extremadura
Dept. Matemáticas.
Despacho B29
Tf: + 34 924 289 300
Ext. 86823



Más información sobre la lista de distribución R-help-es