Ir al contenido principal

Tutorial de correlación en R

Introducción a los fundamentos de la correlación en R: aprende sobre coeficientes de correlación, matrices de correlación y cómo representarlas, etc.
Actualizado 17 sept 2026  · 13 min leer

Explorar con IA

ChatGPTClaudePerplexity

correlation

En este tutorial, vas a explorar varios métodos de visualización de datos y la estadística que hay detrás. En particular, verás cómo identificar tendencias y relaciones entre variables en un data frame.

Exacto: te centrarás en conceptos como correlación y regresión. Primero, conocerás qué es la correlación en R. Después, verás cómo representar matrices de correlación en R con paquetes como ggplot2 y GGally. Por último, revisarás qué tipos de correlaciones existen y por qué son relevantes para tu análisis.

Si te apetece profundizar en este tema, échale un vistazo al curso de DataCamp Correlation and Regression.

Contexto

En el tutorial de hoy, trabajarás con un conjunto de datos de películas obtenido en Kaggle para aprender a entender mejor las relaciones entre variables.

He armonizado ligeramente los datos para que la comparación sea homogénea, asegurándome, por ejemplo, de que la moneda esté en las mismas unidades. Sin ese paso, el análisis de variables como gross, budget y profit sería engañoso. Puedes acceder al conjunto de datos original.

Importar los datos

Para acceder al conjunto de datos movies y empezar a trabajar con él, utiliza la función read.csv() para importarlo a un data frame y guárdalo en la variable con el nombre tan original de movies.

movies <- read.csv(url("http://s3.amazonaws.com/dcwoods2717/movies.csv"))

¡Y con eso ya puedes empezar!

Inspección básica de tus datos

Tras importar un data frame, conviene hacerte una idea general de los datos. Empieza revisando la estructura del conjunto que vas a analizar. Abajo tienes el resultado de usar la función str(), tan simple como útil:

str(movies)
## 'data.frame':    2961 obs. of  11 variables:
##  $ title              : Factor w/ 2907 levels "10 Cloverfield Lane",..: 1560 2143 34 2687 1405 1896 2633 894 1604 665 ...
##  $ genre              : Factor w/ 17 levels "Action","Adventure",..: 6 12 5 5 5 3 2 8 3 8 ...
##  $ director           : Factor w/ 1366 levels "Aaron Schneider",..: 474 472 781 828 175 1355 1328 1328 968 747 ...
##  $ year               : int  1920 1929 1933 1935 1936 1937 1939 1939 1940 1946 ...
##  $ duration           : int  110 100 89 81 87 83 102 226 88 144 ...
##  $ gross              : int  3000000 2808000 2300000 3000000 163245 184925485 22202612 198655278 84300000 20400000 ...
##  $ budget             : int  100000 379000 439000 609000 1500000 2000000 2800000 3977000 2600000 8000000 ...
##  $ cast_facebook_likes: int  4 109 995 824 352 229 2509 1862 1178 2037 ...
##  $ votes              : int  5 4546 7921 13269 143086 133348 291875 215340 90360 6304 ...
##  $ reviews            : int  2 107 162 164 331 349 746 863 252 119 ...
##  $ rating             : num  4.8 6.3 7.7 7.8 8.6 7.7 8.1 8.2 7.5 6.9 ...

En este data frame en concreto, la consola muestra 2961 observaciones y 11 variables.

Como curiosidad: aunque cada película durase solo una hora, tendrías que ver películas sin parar durante más de cuatro meses para verlas todas.

La consola también lista cada variable por su nombre, su clase y algunos ejemplos. Esto nos da una idea bastante clara de qué contiene el data frame, algo clave para cualquier análisis.

Otra función estupenda para un repaso rápido y de alto nivel es summary(). Fíjate en similitudes y diferencias con la salida de str().

summary(movies)
##                          title            genre    
##  Home                       :   3   Comedy   :848  
##  A Nightmare on Elm Street  :   2   Action   :738  
##  Across the Universe        :   2   Drama    :498  
##  Alice in Wonderland        :   2   Adventure:288  
##  Aloha                      :   2   Crime    :202  
##  Around the World in 80 Days:   2   Biography:135  
##  (Other)                    :2948   (Other)  :252  
##               director         year         duration    
##  Steven Spielberg :  23   Min.   :1920   Min.   : 37.0  
##  Clint Eastwood   :  19   1st Qu.:1999   1st Qu.: 95.0  
##  Martin Scorsese  :  16   Median :2004   Median :106.0  
##  Tim Burton       :  16   Mean   :2003   Mean   :109.6  
##  Spike Lee        :  15   3rd Qu.:2010   3rd Qu.:119.0  
##  Steven Soderbergh:  15   Max.   :2016   Max.   :330.0  
##  (Other)          :2857                                 
##      gross               budget          cast_facebook_likes
##  Min.   :      703   Min.   :      218   Min.   :     0     
##  1st Qu.: 12276810   1st Qu.: 11000000   1st Qu.:  2241     
##  Median : 34703228   Median : 26000000   Median :  4604     
##  Mean   : 58090401   Mean   : 40619384   Mean   : 12394     
##  3rd Qu.: 75590286   3rd Qu.: 55000000   3rd Qu.: 16926     
##  Max.   :760505847   Max.   :300000000   Max.   :656730     
##                                                             
##      votes            reviews           rating     
##  Min.   :      5   Min.   :   2.0   Min.   :1.600  
##  1st Qu.:  19918   1st Qu.: 199.0   1st Qu.:5.800  
##  Median :  55749   Median : 364.0   Median :6.500  
##  Mean   : 109308   Mean   : 503.3   Mean   :6.389  
##  3rd Qu.: 133348   3rd Qu.: 631.0   3rd Qu.:7.100  
##  Max.   :1689764   Max.   :5312.0   Max.   :9.300  
## 

Con un solo comando, R te devuelve información estadística clave de cada variable del data frame. Ahora que ya sabes con qué trabajas, ¡vamos a explorar un poco más!

Ingeniería de variables: calcular el beneficio

Al revisar las variables disponibles, parece que algunas numéricas se pueden combinar para aportar nuevas ideas sobre el data frame.

Por ejemplo, tienes gross y budget, así que ¿por qué no calcular el beneficio de cada película?

Puedes calcularlo con la fórmula profit = gross - budget. Pruébalo en el bloque de DataCamp Light de abajo.

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS9kY3dvb2RzMjcxNy9tb3ZpZXMuY3N2XCIpKSIsInNhbXBsZSI6IiMgRmlsbCBpbiB0aGUgYXBwcm9wcmlhdGUgdmFyaWFibGUgbmFtZXMgdG8gc3Vic2V0IVxucHJvZml0IDwtIG1vdmllcyQuLi4uLiAtIG1vdmllcyQuLi4uLlxuXG4jIENoZWNrIHRoZSByZXN1bHRcbnN1bW1hcnkocHJvZml0KSIsInNvbHV0aW9uIjoiIyBGaWxsIGluIHRoZSBhcHByb3ByaWF0ZSB2YXJpYWJsZSBuYW1lcyB0byBzdWJzZXQhXG5wcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldFxuXG4jIENoZWNrIHRoZSByZXN1bHRcbnN1bW1hcnkocHJvZml0KSIsInNjdCI6InRlc3Rfb2JqZWN0KFwicHJvZml0XCIsIHVuZGVmaW5lZF9tc2c9XCJEaWQgeW91IGNvcnJlY3RseSBkZWZpbmUgdGhlIHZhcmlhYmxlIGBwcm9maXRgP1wiLCBpbmNvcnJlY3RfbXNnID0gXCJOb3QgcXVpdGUhXCIpXG50ZXN0X2Vycm9yKClcbnN1Y2Nlc3NfbXNnKFwiRXhjZWxsZW50IVwiKSJ9

¡Genial!

Ves que en el data frame hay tanto éxitos de taquilla como auténticos pozos sin fondo.

El profit de las películas seguramente nos sirva para análisis interesantes más adelante, así que vamos a añadir profit como nueva columna al data frame.

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdihcImh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikiLCJzYW1wbGUiOiIjIEFkZCBhIGNvbHVtbiBmb3IgYHByb2ZpdGAgdG8gYG1vdmllc2AgXG5tb3ZpZXMkLi4uLi4gPC0gbW92aWVzJC4uLi4uIC0gbW92aWVzJC4uLi4uIiwic29sdXRpb24iOiIjIEFkZCBhIGNvbHVtbiBmb3IgYHByb2ZpdGAgdG8gYG1vdmllc2Bcbm1vdmllcyRwcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldCJ9

Correlación

Ahora que has añadido profit como nueva columna en el data frame, es momento de mirar más de cerca las relaciones entre variables.

Veamos cómo fluctúa profit en relación con el rating de cada película.

Para ello puedes usar las funciones integradas de R plot y abline. plot genera un diagrama de dispersión y abline dibuja una recta de regresión o "línea de mejor ajuste" gracias al modelo lineal que añadimos, como verás a continuación.

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS9kY3dvb2RzMjcxNy9tb3ZpZXMuY3N2XCIpKVxubW92aWVzJHByb2ZpdCA8LSBtb3ZpZXMkZ3Jvc3MgLSBtb3ZpZXMkYnVkZ2V0XG5vcHRpb25zKHNjaXBlbiA9IDk5OSkiLCJzYW1wbGUiOiIjIENyZWF0ZSB0aGUgc2NhdHRlciBwbG90IHdpdGggYHJhdGluZ3NgIG9uIHRoZSB4LWF4aXMgYW5kIGBwcm9maXRgIG9uIHRoZSB5LWF4aXNcbnBsb3QobW92aWVzJC4uLi4sIG1vdmllcyQuLi4uKVxuXG4jIEFkZCBhIHJlZ3Jlc3Npb24gbGluZXdpdGggdGhlIGZvcm0gYGFibGluZShsbSh5IH4geCkpYFxuXG5hYmxpbmUobG0obW92aWVzJC4uLi4gfiBtb3ZpZXMkLi4uLikpIiwic29sdXRpb24iOiIjIENyZWF0ZSB0aGUgc2NhdHRlciBwbG90IHdpdGggYHJhdGluZ3NgIG9uIHRoZSB4LWF4aXMgYW5kIGBwcm9maXRgIG9uIHRoZSB5LWF4aXNcbnBsb3QobW92aWVzJHJhdGluZywgbW92aWVzJHByb2ZpdClcblxuIyBBZGQgYSByZWdyZXNzaW9uIGxpbmUgd2l0aCB0aGUgZm9ybSBgYWJsaW5lKGxtKHkgfiB4KSlgIFxuYWJsaW5lKGxtKG1vdmllcyRwcm9maXQgfiBtb3ZpZXMkcmF0aW5nKSkifQ==

¿El resultado ha sido más o menos lo que esperabas?

R regression

En general, parece que a mayor rating, mayor profit. Otra forma de decirlo: existe una correlación positiva entre rating y profit, al menos en este data frame.

Dicho esto, con un simple vistazo verás que hay muchas películas muy bien valoradas que no fueron taquillazos, y también otras con grandes beneficios que recibieron valoraciones relativamente bajas.

¡Correlación no implica causalidad!

Un ejemplo para entender correlación frente a causalidad: tengo un puesto de helados en la playa. El número medio de peatones que cruzan fuera del paso de cebra en la ciudad aumenta cuando suben mis ventas de helado. ¿Significa eso que mi helado hace que la gente incumpla las normas de tráfico, o hay otro factor? Mi helado está riquísimo, sí, pero seguramente el sol tenga más que ver con que la gente quiera un helado y no quiera esperar al sol en el semáforo. Existe una relación (correlación) entre mis ventas y el número de peatones imprudentes, pero no podemos afirmar que sea causal.

Ten esto presente mientras avanzas por el tutorial.

Calcular la correlación en R

Entonces, ¿qué relaciones existen entre las variables de movies y cómo evaluarlas cuantitativamente?

Una forma es calcular correlaciones y matrices de correlación con cor():

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdihcImh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIilcbm1vdmllcyRwcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldFxub3B0aW9ucyhzY2lwZW4gPSA5OTkpIiwic2FtcGxlIjoiIyBDb21wdXRlIFBlYXJzb24gY29ycmVsYXRpb25cbmNvcihtb3ZpZXMkcmF0aW5nLCBtb3ZpZXMkcHJvZml0KVxuXG4jIENvcnJlbGF0aW9uIE1hdHJpeFxuY29yKG1vdmllc1ssNDoxMF0pIn0=

Nota: también puedes especificar el método para indicar qué coeficiente de correlación quieres calcular. Ojo con las suposiciones: los métodos Kendall y Spearman solo tienen sentido con entradas ordenadas. Es decir, tendrás que ordenar los datos antes de calcular el coeficiente.

Además, el método por defecto, la correlación de Pearson, asume que las variables se distribuyen normalmente, que existe una relación lineal entre ellas y que los datos se distribuyen normalmente alrededor de la recta de regresión.

También puedes usar rcorr(), del paquete Hmisc, para calcular los niveles de significación de las correlaciones de Pearson y Spearman.

Verás que la matriz de correlación es una tabla con los coeficientes entre pares de variables. Es una forma estupenda de empezar a ver qué relaciones hay en tu conjunto de datos, pero vamos un poco más allá en la siguiente sección.

Explorar la correlación visualmente: la matriz de correlación en R

Ahora vas a representar una matriz de correlación usando las variables de tu data frame movies. Este gráfico te permite ver rápidamente qué variables tienen correlación negativa, positiva, débil o fuerte con las demás.

Para ello usaremos el paquete GGally y su función ggcorr().

La llamada tiene la forma ggcorr(df), donde df es el data frame. La salida es una matriz triangular codificada por colores y etiquetada con los nombres de las variables. El coeficiente de correlación de cada par se obtiene leyendo a lo largo o hacia abajo de la matriz, según la posición.

Puede sonar lioso, pero en la práctica es muy sencillo. Pruébalo en el siguiente bloque de código.

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS8vZGN3b29kczI3MTcvbW92aWVzLmNzdlwiKSlcbm1vdmllcyRwcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldFxubGlicmFyeShcIkdHYWxseVwiKSIsInNhbXBsZSI6IiMgUmVwbGFjZSB0aGUgXCIuLi4uLlwiIHdpdGggdGhlIG5hbWUgb2YgdGhlIGRhdGEgZnJhbWUgXG5nZ2NvcnIoLi4uLi4pIiwic29sdXRpb24iOiIjIFJlcGxhY2UgdGhlIFwiLi4uLi5cIiB3aXRoIHRoZSBuYW1lIG9mIHRoZSBkYXRhIGZyYW1lIFxuZ2djb3JyKG1vdmllcykifQ==

correlation coefficient

En la matriz que acabas de crear (¡buen trabajo!), puedes ir a la fila o columna de una variable, como year, y ver su coeficiente según el color de la celda que cruza con otra variable.

Por ejemplo, para year observas una correlación positiva débil con budget y una correlación negativa también débil con rating.

Los coeficientes de correlación siempre están entre -1 y 1, ambos incluidos. Un coeficiente -1 indica un ajuste perfecto y negativo: los valores de y disminuyen al mismo ritmo que aumentan los de x. Un coeficiente 1 indica un ajuste perfecto y positivo: y crece al mismo ritmo que x.

En la mayoría de casos, como en el ejemplo de year, el coeficiente estará en algún punto intermedio.

¿Has notado algo raro en las variables que aparecen en la matriz?

¡No están todas las variables de movies!

Esto es porque no todas son numéricas. La función ggcorr ignora automáticamente las no numéricas, ahorrándote el "subsetting" previo a crear la matriz.

Si quieres que tu matriz tenga más impacto (o si eres un poco daltónico, como yo), puedes hacer unos ajustes sencillos para que sea más informativa y visual.

En el bloque que sigue, hemos añadido el argumento label, que puede ser TRUE o FALSE. Por defecto es FALSE, pero con label = TRUE se muestra el valor del coeficiente en cada celda. Así evitas estimarlo solo por el color.

El argumento label_alpha permite ajustar la opacidad de las etiquetas según la fuerza de la correlación. Muy útil para el análisis visual rápido.

No te fíes de mi palabra: ¡pruébalo!

Vamos a dibujar una matriz de correlación más clara:

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS8vZGN3b29kczI3MTcvbW92aWVzLmNzdlwiKSlcbm1vdmllcyRwcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldFxubGlicmFyeShcIkdHYWxseVwiKSIsInNhbXBsZSI6IiMgRmlsbCBpbiBcIlRSVUVcIiBvciBcIkZBTFNFXCIgdG8gc2VlIGhvdyB0aGUgY29ycmVsYXRpb24gbWF0cml4IGNoYW5nZXNcbmdnY29ycihtb3ZpZXMsIFxuICAgICAgIGxhYmVsID0gLi4uLi4sIFxuICAgICAgIGxhYmVsX2FscGhhID0gLi4uLi4pIiwic29sdXRpb24iOiIjIEZpbGwgaW4gXCJUUlVFXCIgb3IgXCJGQUxTRVwiIHRvIHNlZSBob3cgdGhlIGNvcnJlbGF0aW9uIG1hdHJpeCBjaGFuZ2VzXG5nZ2NvcnIobW92aWVzLCBcbiAgICAgICBsYWJlbCA9IFRSVUUsIFxuICAgICAgIGxhYmVsX2FscGhhID0gVFJVRSkifQ==

correlation coefficient

En los gráficos que verás a continuación, cuando haya una correlación "fuerte", la pendiente de la recta de regresión (x/y) estará más cerca de 1/1 o -1/1. Con una correlación "débil", la pendiente será casi plana. Una pendiente próxima a 1/1 o -1/1 sugiere que las dos variables están estrechamente relacionadas.

En el caso de movies, esa línea de regresión puede aportar información valiosa sobre la naturaleza de tus variables y apuntar a una posible interdependencia.

Por ejemplo, en tu gráfico de profit frente a rating has visto que la recta tenía una pendiente positiva moderada. Si miras de nuevo la matriz, el coeficiente de estas variables es 0,3.

Tiene sentido, ¿verdad?

Tipos de correlación

Veamos ahora más gráficos que ilustran los distintos tipos de correlaciones que acabas de ver.

Correlación fuerte: votos frente a reseñas

Empecemos representando dos variables con una correlación positiva fuerte.

En la matriz parece que votes frente a reviews cumple el criterio, con un coeficiente de 0,8. Eso implica una pendiente relativamente cercana a 1/1.

En este ejercicio y los siguientes usarás el paquete ggplot2, un conjunto de herramientas muy versátil para crear visualizaciones potentes.

En este caso aprovecharemos la función qplot de ggplot2, que puede generar distintos tipos de gráficos según el tipo pasado al argumento geom (geometría).

En el código siguiente, geom es un vector con dos geometrías, point y smooth: point genera el diagrama de dispersión y smooth añade una línea de tendencia. Además, method se ha fijado en lm, por lo que la línea será una recta de regresión, como la que creamos al representar profit frente a years antes.

En resumen, vas a ver lo fácil que es crear visualizaciones potentes en un momento.

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGxvdCB2b3RlcyB2cyByZXZpZXdzXG5xcGxvdChtb3ZpZXMkLi4uLi4sIFxuICAgICAgbW92aWVzJC4uLi4uLCBcbiAgICAgIGRhdGEgPSAuLi4uLiwgXG4gICAgICBnZW9tID0gYyhcInBvaW50XCIsIFwic21vb3RoXCIpLCBcbiAgICAgIG1ldGhvZCA9IFwibG1cIiwgXG4gICAgICBhbHBoYSA9IEkoMSAvIDUpLCBcbiAgICAgIHNlID0gRkFMU0UpIiwic29sdXRpb24iOiIjIFBsb3Qgdm90ZXMgdnMgcmV2aWV3c1xucXBsb3QobW92aWVzJHZvdGVzLCBcbiAgICAgIG1vdmllcyRyZXZpZXdzLCBcbiAgICAgIGRhdGEgPSBtb3ZpZXMsIFxuICAgICAgZ2VvbSA9IGMoXCJwb2ludFwiLCBcInNtb290aFwiKSwgXG4gICAgICBtZXRob2QgPSBcImxtXCIsIFxuICAgICAgYWxwaGEgPSBJKDEgLyA1KSwgXG4gICAgICBzZSA9IEZBTFNFKSJ9

positive R correlation

Tal vez te haya sonado el argumento alpha usado en qplot. alpha aplica un gradiente de opacidad a los puntos del diagrama de dispersión, de forma similar a como ajustaba la opacidad de las etiquetas en ggcorr.

Con la configuración usada, la opacidad total solo se alcanza cuando un punto queda cubierto por otros 5. Aumentar o reducir el denominador de alpha cambia cuántos solapes se necesitan para hacer más opaco un punto. Esta estética ayuda a identificar rápidamente concentraciones de puntos en el gráfico y, con un simple vistazo, descubrir nuevos patrones.

Trastea un poco con el código y compruébalo por ti mismo.

Correlación débil: beneficio a lo largo de los años

Ahora veamos cómo se ve una correlación negativa "débil" representando profit frente a years. Esta vez no se especifica method, así que la línea de tendencia se ajustará de forma curvilínea según los datos (una curva ajustada), que es el comportamiento por defecto. Verás una zona gris alrededor de la curva que aumenta o disminuye según el intervalo de confianza.

Si no te suena el concepto de intervalo de confianza, no te preocupes: R hará el trabajo y lo entenderás mejor tras el ejercicio.

De momento, completa los huecos con el código necesario y observa.

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGxvdCBwcm9maXQgb3ZlciB5ZWFyc1xucXBsb3QobW92aWVzJHllYXIsIFxuICAgICAgbW92aWVzJHByb2ZpdCwgXG4gICAgICBkYXRhID0gbW92aWVzLCBcbiAgICAgIGdlb20gPSBjKFwicG9pbnRcIiwgXCJzbW9vdGhcIiksIFxuICAgICAgYWxwaGEgPSBJKDEgLyA1KSkiLCJzb2x1dGlvbiI6IiMgUGxvdCBwcm9maXQgb3ZlciB5ZWFyc1xucXBsb3QobW92aWVzJHllYXIsIFxuICAgICAgbW92aWVzJHByb2ZpdCwgXG4gICAgICBkYXRhID0gbW92aWVzLCBcbiAgICAgIGdlb20gPSBjKFwicG9pbnRcIiwgXCJzbW9vdGhcIiksIFxuICAgICAgYWxwaGEgPSBJKDEgLyA1KSkifQ==

weak correlation

Ahora que has visto el intervalo de confianza y la curva de suavizado en acción, ¿qué observas?

  • Primero, al principio del gráfico, el profit parece aumentar cada year.
  • Segundo, la zona gris alrededor de la curva es inicialmente grande y hay pocos puntos (pocas observaciones).
  • Tercero, cuando la curva entra en zonas con más observaciones, la zona gris disminuye y prácticamente abraza la curva, que empieza a descender en los últimos years.

En conclusión, representar el intervalo de confianza junto a la curva de suavizado nos permite ver la incertidumbre asociada a la recta de regresión. Esa incertidumbre aumenta cuando hay pocas observaciones y disminuye cuando hay más.

Esto es muy útil para visualizar cómo cambia la relación entre variables a lo largo del data frame y cómo las concentraciones de observaciones alteran la curva.

El matiz aquí es que el gráfico puede ser algo equívoco, ya que cuesta ver a simple vista si la correlación es positiva o negativa.

Ahora representemos profit frente a year igual que hiciste con votes y reviews: sustituye los "….." en cada argumento para que year vaya en el eje x y profit en el eje y. No olvides indicar el data frame en el argumento "data".

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGxvdCB0aGUgeWVhcnMgb24gdGhlIHgtYXhpcywgcHJvZml0IG9uIHRoZSB5LWF4aXNcbnFwbG90KG1vdmllcyQuLi4uLiwgXG4gICAgICBtb3ZpZXMkLi4uLi4sIFxuICAgICAgZGF0YSA9IC4uLi4uLCBcbiAgICAgIGdlb20gPSBjKFwicG9pbnRcIiwgXCJzbW9vdGhcIiksIFxuICAgICAgbWV0aG9kID0gXCJsbVwiLCBcbiAgICAgIGFscGhhID0gSSgxIC8gNSksIFxuICAgICAgc2UgPSBGQUxTRSkiLCJzb2x1dGlvbiI6IiMgUGxvdCB0aGUgeWVhcnMgb24gdGhlIHgtYXhpcywgcHJvZml0IG9uIHRoZSB5LWF4aXNcbnFwbG90KG1vdmllcyR5ZWFyLCBcbiAgICAgIG1vdmllcyRwcm9maXQsIFxuICAgICAgZGF0YSA9IG1vdmllcywgXG4gICAgICBnZW9tID0gYyhcInBvaW50XCIsIFwic21vb3RoXCIpLCBcbiAgICAgIG1ldGhvZCA9IFwibG1cIiwgXG4gICAgICBhbHBoYSA9IEkoMSAvIDUpLCBcbiAgICAgIHNlID0gRkFMU0UpIn0=

negative correlation

Si vuelves a la matriz, verás que el coeficiente de profit y year es -0,1, algo que se aprecia mejor en el gráfico con línea de mejor ajuste que en el de curva ajustada.

Juntándolo todo

Ahora vamos a ver otra función potente de GGally llamada ggpairs. Es genial porque permite crear una matriz que muestra, a la vez, el coeficiente de correlación de varias variables, un diagrama de dispersión (con línea de mejor ajuste y su intervalo de confianza) y un gráfico de densidad.

Con una sola función, puedes condensar todo lo que hemos visto en este tutorial de una forma clara y fácil de entender.

En el siguiente bloque, elige tus tres variables favoritas del data frame (¡no hace falta "subsetear"!), añádelas y a jugar.

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5saWJyYXJ5KFwiR0dhbGx5XCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGx1ZyBpbiB5b3VyIHRocmVlIGZhdm9yaXRlIHZhcmlhYmxlcyBhbmQgdGlua2VyIGF3YXkhXG5nZ3BhaXJzKG1vdmllcywgXG4gICAgICAgIGNvbHVtbnMgPSBjKFwiLi4uLi5cIiwgXCIuLi4uLlwiLCBcIi4uLi4uXCIpLCBcbiAgICAgICAgdXBwZXIgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKFwiY29yXCIsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDEwKSksIFxuICAgICAgICBsb3dlciA9IGxpc3QoY29udGludW91cyA9IFwic21vb3RoXCIpKSIsInNvbHV0aW9uIjoiIyBQbHVnIGluIHlvdXIgdGhyZWUgZmF2b3JpdGUgdmFyaWFibGVzIGFuZCB0aW5rZXIgYXdheSFcbmdncGFpcnSobW92aWVzLCBcbiAgICAgICAgY29sdW1ucyA9IGMoXCJjYXN0X2ZhY2Vib29rX2xpa2VzXCIsIFwiYnVkZ2V0XCIsIFwicHJvZml0XCIpLCBcbiAgICAgICAgdXBwZXIgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKFwiY29yXCIsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDEwKSksIFxuICAgICAgICBsb3dlciA9IGxpc3QoY29udGludW91cyA9IFwic21vb3RoXCIpKSJ9

correlation R matrix

Como habrás imaginado, hay muchos casos en los que un tipo de gráfico es más adecuado que otro. La clave es conocer qué técnicas de visualización existen, cómo usarlas y qué significan sus resultados.

Próximos pasos

Has cubierto mucho terreno en este tutorial, así que enhorabuena por llegar al final.

Ojalá puedas poner estos conceptos en práctica en tus propios análisis. Esto son los fundamentos de la exploración de datos en R y hay muchísimo más que puedes hacer para familiarizarte con tus datos antes de analizarlos y modelizarlos. ¿Por qué no subir un peldaño y empezar el curso de DataCamp Exploratory Data Analysis?

Mientras tanto, te animo a pasarte por Kaggle y buscar un conjunto de datos interesante para explorar si no quieres seguir con el de movies.

Temas
R
Relacionado

Tutorial

Matriz de correlaciones en Excel: Guía completa para crear e interpretar

Aprende el concepto estadístico de correlación, y sigue el cálculo e interpretación de correlaciones para un conjunto de datos de muestra, en un tutorial paso a paso.
Arunn Thevapalan's photo

Arunn Thevapalan

9 min

Tutorial

Tutorial de regresión lineal en R

En este tutorial aprenderás los fundamentos de un modelo estadístico muy popular: la regresión lineal.

Eladio Montero Porras

15 min

Tutorial

Tutorial de tablas de contingencia en R

En este tutorial, aprenderás a crear tablas de contingencia y a probar y cuantificar las relaciones visibles en ellas.
Łukasz Deryło's photo

Łukasz Deryło

10 min

multiple linear regression

Tutorial

Regresión lineal múltiple en R: tutorial con ejemplos

Una visión completa para entender las regresiones lineales múltiples en R a través de ejemplos.
Zoumana Keita 's photo

Zoumana Keita

12 min

Tutorial

Tutorial de pruebas T en R: Aprende a realizar pruebas T

Determina si existe una diferencia significativa entre las medias de los dos grupos utilizando t.test() en R.
Abid Ali Awan's photo

Abid Ali Awan

10 min

Tutorial

Tutorial sobre cómo instalar R en Windows, Mac OS X y Ubuntu

Esta es una guía para principiantes diseñada para ahorrarte dolores de cabeza y un tiempo valioso si decides instalar R tú mismo.
Francisco Javier Carrera Arias's photo

Francisco Javier Carrera Arias

6 min

Ver MásVer Más