Coeficiente de correlación parcial

Finalmente, veremos cómo calcular el coeficiente de correlación parcial entre dos variables controlando los efectos que ejerce una tercera variable sobre la relación entre ellas. Este coeficiente de correlación parcial se suele utilizar cuando se supone que puedan existir relaciones espúreas entre variables.
Si definimos el coeficiente de correlación parcial entre las variables $a,b$ controlado por la variable $c$ como

\begin{displaymath}
r_{ab\vert c}=\frac{r_{ab}-r_{ac} \cdot r_{bc}}{\sqrt{1-r_{ac}^2} \cdot \sqrt{1-r_{bc}^2}}
\end{displaymath}


y tenemos tres variables a,b,c, podremos calcular $r_{ab\vert c}$ con la siguiente serie de instrucciones.
r.ab<-cor(a,b)
r.bc<-cor(b,c)
r.ac<-cor(a,c)
r.abc<-(r.ab-(r.ac*r.bc))/(sqrt(1-(r.ac^2))*sqrt(1-(r.bc^2)))
Con las tres primeras se calculan los coeficientes de correlación bivariada entre las tres variables tomadas dos a dos. En la cuarta se introduce la expresión algebraica que permite obtener el coeficiente de correlación parcial.
La siguiente función, bautizada como cor.par() nos daría el coeficiente con sólo introducir las variables en orden consecutivo, siendo las dos primeras las variables a estudiar, y la tercera la variable que queremos controlar.
cor.par<-function(a,b,c){
r.ab<-cor(a,b)
r.bc<-cor(b,c)
r.ac<-cor(a,c)
coef<-(r.ab-(r.ac*r.bc))/(sqrt(1-(r.ac^2))*sqrt(1-(r.bc^2)))
return(coef)
}

Para ilustrar el uso de los índices de correlación parcial consideraremos los datos del Cuadro [*]. En él aparecen una serie de variables (temperatura, albedo, flujo térmico, radio y distacia media al Sol) para los cuatro planetas gigantes del Sistema Solar.


Tabla: Algunos datos de los planetas gigantes
Planeta Distancia(u.a.) Temperatura(K) Radio(Km) Albedo Flujo térmico(erg/cm2sg)
Júpiter 5,203 125 71714 0,42 7600
Saturno 9,539 94 60330 0,36 2800
Urano 19,18 58 26200 0,37 175
Neptuno 30,06 55 25225 0,33 285


En primer lugar deberemos introducir los datos de la tabla en un data.frame al que podemos llamar, por ejemplo s.solar.

Ahora, supongamos que nos interesa conocer los factores que influyen en la temperatura de los planetas. En primer lugar, desearemos confirmar que exite relación entre ésta y la distancia al Sol. Para ello podríamos teclear
cor(s.solar$dist,s.solar$temp)
que da
[1] -0.9085313
es decir, una elevada correlación negativa; a mayor alejamiento del Sol, menor temperatura planetaria.
Para analizar gráficamente esta relación podemos teclear
plot(s.solar$dist,s.solar$temp)
lo que genera la Figura [*]

Figura: Relación entre temperatura y distancia
Image tempdistacia
en la que se observa que hay un descenso de la temperatura con la distancia claramente exponencial.
Si queremos conocer las relaciones entre todas las variables tomadas de dos en dos, deberemos solicitar la matriz de correlaciones, para lo cual sólo tenemos que cor(s.solar). El resultado es

 		     temp 		   albedo 		    flujo 		       dist 		      radio

temp 1.0000000 0.8361303 0.9774232 -0.9085313 0.9808471
albedo 0.8361303 1.0000000 0.8731807 -0.8367831 0.7406799
flujo 0.9774232 0.8731807 1.0000000 -0.8295449 0.9198315
dist -0.9085313 -0.8367831 -0.8295449 1.0000000 -0.9220161
radio 0.9808471 0.7406799 0.9198315 -0.9220161 1.0000000
Puede observarse que los coeficientes son elevados para casi todos los pares de variables, llamando especialmente la atención la relación entre la temperatura y el radio planetario y el flujo térmico. En la Figura [*] vemos gráficamente la relación entre la temperatura y el flujo térmico.
Figura: Relación entre temperatura y flujo térmico
Image tempflujo

Aparentemente, la distancia al Sol no es el factor que más afecta a la temperatura de estos planetas. Para conocer cuál es la correlación entre temperatura y distancia, ``descontando'' el efecto del flujo térmico, podemos utilizar nuestra función cor.par() del siguiente modo
attach(s.solar)
cor.par(temp,dist,flujo)
el resultado
[1] -0.828139
refleja que, cuando controlamos el efecto del flujo térmico, la relación entre temperatura y distancia al Sol disminuye. Si lo analizamos en términos del coeficiente de determinación (cuadrado del coeficiente de correlación), pasamos de que la distancia explique el 83% de la varianza a que explique sólo el 69%.
Los astrónomos conocen bien este hecho. Los planetas gaseosos están tan lejos del Sol que, incluso, emiten al espacio más energía de la que reciben del astro rey. Por ese motivo, su temperatura depende en gran medida del aporte de calor interno. Esto queda claramente de manifiesto al analizar la relación entre estas dos variables removiendo el efecto de la distancia como vemos a continuación
cor.par(temp,flujo,dist)
[1] -0.9589847
Comparando este valor con el valor de la matriz de correlaciones, apreciamos que controlar para la distancia no conlleva una reducción muy grande del coeficiente de correlación entre temperatura y flujo térmico.

2007-02-12