Correlaciones en R

Pruebas y gráficos

Trabajemos con una data sencilla que viene con R. La famosa data “iris”.

data(iris) # llamo a la base de datos a mi entorno de trabajo. 
head(iris) # damos una vista a los primeros casos de la base de datos. 
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa
  • Quedemonos con las variables númericas para trabajar las correlaciones.
nuevo<-iris[,-5]

Opciones dentro de R.



```r
cor(nuevo)
##              Sepal.Length Sepal.Width Petal.Length Petal.Width
## Sepal.Length    1.0000000  -0.1175698    0.8717538   0.8179411
## Sepal.Width    -0.1175698   1.0000000   -0.4284401  -0.3661259
## Petal.Length    0.8717538  -0.4284401    1.0000000   0.9628654
## Petal.Width     0.8179411  -0.3661259    0.9628654   1.0000000

Podemos cambiar el tipo de estadístico. “Kendall”, “Spearman” son opciones dentro de cor.

cor(nuevo, method="kendall")
##              Sepal.Length Sepal.Width Petal.Length Petal.Width
## Sepal.Length   1.00000000 -0.07699679    0.7185159   0.6553086
## Sepal.Width   -0.07699679  1.00000000   -0.1859944  -0.1571257
## Petal.Length   0.71851593 -0.18599442    1.0000000   0.8068907
## Petal.Width    0.65530856 -0.15712566    0.8068907   1.0000000

Correlaciones parciales

Llamemos la libreria “ggm”

library(ggm)
## Loading required package: igraph
## 
## Attaching package: 'igraph'
## The following objects are masked from 'package:stats':
## 
##     decompose, spectrum
## The following object is masked from 'package:base':
## 
##     union
## 
## Attaching package: 'ggm'
## The following object is masked from 'package:igraph':
## 
##     pa
names(iris)
## [1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width" 
## [5] "Species"
pcor(c("Sepal.Length","Sepal.Width","Petal.Length","Petal.Width"), var(nuevo)) 
## [1] 0.6285707

Gráficos correlaciones

Super básico, un scatterplot o gráfico de dispersión.

plot(nuevo[,1], nuevo[,3])

Agregando una línea de tendencia

plot(nuevo[,1], nuevo[,3])#Gráfico simple de dispersi?n de puntos. 
abline(lm(nuevo[,3]~nuevo[,1]), col="red") # Agregando línea de tendencia. 

Uno más complicado e informativo

pairs(~Sepal.Length + Sepal.Width + Petal.Length + Petal.Width,data=nuevo, 
   main="matriz de correlaciones")

  • Cambiando colores de los puntos.
pairs(~Sepal.Length + Sepal.Width + Petal.Length + Petal.Width,data=nuevo, 
   main="matriz de correlaciones", col=c("red", "blue")) #cambiando de color a los puntos de la matriz

Paquete corrgram

#install.packages(corrgram) # Por si no lo tienen instalado 
library(corrgram)
## Registered S3 methods overwritten by 'ggplot2':
##   method         from 
##   [.quosures     rlang
##   c.quosures     rlang
##   print.quosures rlang
## Registered S3 method overwritten by 'seriation':
##   method         from 
##   reorder.hclust gclus
corrgram(nuevo, order=TRUE, lower.panel=panel.pts,
         upper.panel=panel.shade, text.panel=panel.txt,
         diag.panel=panel.minmax, main="Correlograma")

Algunas notas

  • Se puede intercambiar los paneles con los que se detallan abajo.
  • Más información en ?corrgram
  • panel.pie (la parte llena del pie representa la magnitud de la correlación)
  • panel.shade (La profundidad del color representa la magnitud de la correlación)
  • panel.ellipse (ellipse en base al nivel de confianza y la l?nea de correlación)
  • panel.pts (dispersión de puntos)

Tengo un tutorial de R en español. Lo puede revisar aquí: http://www.joseincio.com/R_tutorial/

Avatar
José Incio
Ph.D. Candidate Political Science

My research interests include subnational politics, democracy, representation and political methodology.