La función cor() proporciona la matriz de coeficientes de correlación de Pearson de las variables introducidas como
argumento. Así,
cor(survey$Height,survey$Wr.Hnd, use=''complete.obs'')
nos da el coeficiente de correlación entre la estatura y el tamaño de la mano. El resultado
[1] 0.600991
es lo que deberemos interpretar. Hay que hacer notar que, cuando hay valores perdidos,
a la función cor() hay que decirle a R qué hacer con los mismos. Para que haga el cálculo del coeficiente sólo a partir de los
casos completos para ambas variables introducimos la opción use=''complete.obs''.
Para calcular el coeficiente de determinación sólo deberíamos elevar al cuadrado el valor devuelto por la función. Por ejemplo
tecleando
cor(survey$Height,survey$Wr.Hnd, use=''complete.obs'')^
2
Adviértase que, como no hemos asignado el valor a ningún objeto, no quedará almacenado en el espacio de trabajo; tan sólo
será presentado por pantalla.
Podemos aplicar la función cor() a un data.frame con variables numéricas. En este caso obtendremos una matriz de correlaciones.
Para obtener la matriz de correlaciones de las cuatro variables numéricas contenidas en el data.frame survey podemos teclear
options(digits=3)
cor(data.frame(NW.Hnd,Wr.Hnd,Height,Pulse),use=''complete.obs'')
como se ve, se crea un data.frame interno que almacena las variables numéricas. Este será el objeto que recibirá la acción
de la función. Como antes, sólo se tendrán en cuenta los casos completos. El resultado es
NW.Hnd Wr.Hnd Height Pulse
NW.Hnd 1.0000 0.96643 0.6000 -0.01698
Wr.Hnd 0.9664 1.00000 0.6184 -0.00761
Height 0.6000 0.61835 1.0000 -0.08468
Pulse -0.0170 -0.00761 -0.0847 1.00000
Como se explicó en un capítulo anterior, si nos interesase calcular estos valores con asiduidad, sería conveniente definir sendas
funciones.
Una cuestión importante es contrastar el grado de significación de los
coeficientes de la matriz de correlaciones. Para un
,
podemos considerar que son significativos los valores
que cumplen
siendo
el número de casos de la serie de datos7.1.
En el ejemplo que estamos utilizando, para obtener el valor de
debemos tener en cuenta que en el cálculo de los coeficientes de
correlación estamos considerando sólo los casos completos para las
cuatro variables numéricas. Para sabér cuántos son, podemos teclear
str(na.omit((data.frame(NW.Hnd,Wr.Hnd,Height,Pulse))))
que solicita la estructura del data.frame de variables numéricas
omitiendo(cosa que conseguimos con na.omit())los casos con algún valor perdido. El resultado
`data.frame': 170 obs. of 4 variables:
$ NW.Hnd: num 18 20.5 20 17.7 17.7 17.3 19.5 18.5 17.2 20.2 ...
$ Wr.Hnd: num 18.5 19.5 20 18 17.7 17 20 18.5 17 19.5 ...
$ Height: num 173 178 165 173 183 ...
$ Pulse : num 92 104 35 64 83 74 72 90 80 66 ...
- attr(*, "na.action")=Class 'omit' Named int [1:67] 3 4 12 13 15 16 19 25 26 29 ...
.. ..- attr(*, "names")= chr [1:67] "3" "4" "12" "13" ...
nos informa de que el data.frame consta de
observaciones.
En este momento podemos multiplicar los coeficientes de correlación
por la raiz cuadrada del número de observaciones efectuando la
siguiente operación
cor(data.frame(NW.Hnd,Wr.Hnd,Height,Pulse),
use=''complete.obs'')*sqrt(170)
cuyo resultado es
NW.Hnd Wr.Hnd Height Pulse
NW.Hnd 13.0384048 12.60072500 7.822565 -0.22136976
Wr.Hnd 12.6007250 13.03840481 8.062344 -0.09920578
Height 7.8225652 8.06234371 13.038405 -1.10414082
Pulse -0.2213698 -0.09920578 -1.104141 13.03840481
Puede apreciarse que la diagonal se ha transformado en la
y que son significativos al 5% los coeficientes de correlación entre
las variables tamaño de la mano escritora/tamaño de la mano no
escritora,
y altura frente a tamaño de ambas
manos (
y
).
2007-02-12