[R-es] Correlaciones parciales

Javier Martinez javi.martinez.lopez en gmail.com
Mie Abr 27 19:13:13 CEST 2011


Muchas gracias por la aclaración sobre la P y cómo usar la función en
R commander. Ninguna variable es combinación lineal de otras. Son
porcentajes de usos de suelo en relación a la frecuencia de aparición
de una especie. El caso es que no había visto la función en el menú y
la había ejecutado mal en modo comando, porque ahora sí sale bien. En
cualquier caso el valor de la P en la regresión múltiple para la
variable que quería testar no es significativo, así que supongo que no
me valen los resultados de la función pcor.test que mencionaba al
principio (da el mismo valor de r que la función de Fox pero una P
significativa). Lo que sí he visto y no conocía es la función
"avPlots" del paquete "car" para hacer gráficas de regresiones
parciales con cada variable independiente de un modelo de regresión
múltiple.

Saludos,

Javier

2011/4/27 José Trujillo Carmona <trujillo en unex.es>:
> 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
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>



-- 
http://oikos.inf.um.es



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