EJEMPLO

Utilizaremos el conjunto de datos mtcars que viene incorporado en R, que es un conjunto de datos muy conocido que contiene información sobre diversos aspectos de automóviles.

1. Realizar un gráfico de dispersión con ggplot

Primero, vamos a crear un gráfico de dispersión para visualizar la relación entre las millas por galón (mpg) y el peso del coche (wt).



library(ggplot2)

data(mtcars)  # Cargamos el conjunto de datos
# Crear un gráfico de dispersión con ggplot
ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point() +
  labs(title = "Gráfico de dispersión de MPG vs Peso",
       x = "Peso (1000 lbs)",
       y = "Millas por galón") +
  theme_minimal()


## 2. Ajustar un modelo de regresión

Ahora, ajustaremos un modelo de regresión lineal para predecir mpg a partir de wt.
Error: unexpected ',' in "Ahora,"

# Ajustar modelo de regresión lineal
modelo <- lm(mpg ~ wt, data = mtcars)
summary(modelo)

3. Calcular el coeficiente de determinación

El coeficiente de determinación (R²) se puede extraer del resumen del modelo, pero también lo podemos calcular explícitamente para que sea más didáctico.

# Calcular el coeficiente de determinación R^2
r_cuadrado <- summary(modelo)$r.squared
print(paste("Coeficiente de determinación R^2:", r_cuadrado))

4. Realizar un pronóstico

Finalmente, usaremos el modelo ajustado para hacer un pronóstico. Por ejemplo, predeciremos el mpg para un coche con un peso de 3.000 lbs.

# Pronóstico para un coche con un peso de 3000 lbs
peso_nuevo <- data.frame(wt = 3)
prediccion <- predict(modelo, newdata = peso_nuevo)
print(paste("Predicción de MPG para un coche de 3000 lbs:", prediccion))

Este código proporciona un flujo de trabajo completo desde la visualización de datos hasta la modelización y la predicción en R.

# TALLER

**Objetivo**: Los estudiantes aplicarán técnicas de regresión lineal para explorar la relación entre variables. El taller incluirá visualización de datos, ajuste del modelo de regresión, cálculo de coeficiente de determinación y realización de pronósticos.

## PUNTO 1: AIR QUALITY

Este conjunto de datos contiene mediciones diarias de la calidad del aire de Nueva York de mayo a septiembre de 1973. Incluye variables como la concentración de ozono, la temperatura, la velocidad del viento, etc.

A continuación se presenta el dataset y las primeras filas del conjunto de datos.
data(airquality)
head(airquality)
summary(airquality)

Puntos a desarrollar:

  • Crear un gráfico de dispersión para visualizar la relación entre la Temp (temperatura) y el Ozone (concentración de ozono).
ggplot(airquality, aes(x = Temp, y = Ozone)) +
  geom_point() +
  labs(title = "Gráfico de dispersión de Ozone vs Temp",
       x = "Ozone",
       y = "") +
  theme_minimal()
  • Ajustar un modelo lineal para predecir la concentración de ozono en función de la temperatura.
modelo <- lm(Ozone ~ Temp, data = airquality)
summary(modelo)
  • Calcular el coeficiente de determinación y realizar un análisis sobre la utilidad del modelo con esta información.
r_cuadrado <- summary(modelo)$r.squared
print(paste("Coeficiente de determinación R^2:", r_cuadrado))

No se puede realizar el pronostico debido a que presentamos un R^2 menor al 65% que es el estandar que determinamos para saber si un un modelo esta bien ajustado.

  • Utilizar el modelo para predecir la concentración de ozono a diferentes temperaturas, realizar una predicción para una temperatura de 85 grados Fahrenheit.

PUNTO 2: CARS

Este conjunto de datos tiene mediciones de la velocidad de los automóviles y las distancias que toman para detenerse. Este taller permitirá a los estudiantes explorar cómo la velocidad afecta la distancia de frenado de un automóvil, utilizando técnicas de regresión lineal.

A continuación se presenta el dataset y las primeras filas del conjunto de datos.

data(cars)
head(cars)
summary(cars)

Puntos a desarrollar:

  • Crear un gráfico de dispersión para visualizar la relación entre la speed (velocidad) y la dist (distancia de frenado).
ggplot(cars, aes(x = speed, y = dist)) +
  geom_point() +
  labs(title = "Gráfico de dispersión de dist vs speed",
       x = "speed",
       y = "dist") +
  theme_minimal()
  • Ajustar un modelo lineal para predecir la distancia de frenado a partir de la velocidad.
modelo <- lm(dist ~ speed, data = cars)
summary(modelo)
  • Calcular el coeficiente de determinación y realizar un análisis sobre la utilidad del modelo con esta información.
r_cuadrado <- summary(modelo)$r.squared
print(paste("Coeficiente de determinación R^2:", r_cuadrado))
  • Utilizar el modelo para hacer predicciones de la distancia de frenado a diferentes velocidades., realizar una predicción para para una velocidad de 30 mph.
# Pronóstico para un coche con un peso de 3000 lbs
dist_nuevo <- data.frame(speed = 30)
prediccion <- predict(modelo, newdata = dist_nuevo)
print(paste("Predicción de dist para una velocidad de 30mph:", prediccion))
LS0tDQp0aXRsZTogIlRhbGxlciA0IC0gUmVncmVzacOzbiBMaW5lYWwgU2ltcGxlIg0KYXV0aG9yOiAiTWF1cmljaW8gR2lyYWxkbyINCmRhdGU6ICIyMDI0LTA0LTE5Ig0Kb3V0cHV0OiAgaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiBgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkgDQpgYGANCg0KDQojIEVKRU1QTE8NCg0KVXRpbGl6YXJlbW9zIGVsIGNvbmp1bnRvIGRlIGRhdG9zIG10Y2FycyBxdWUgdmllbmUgaW5jb3Jwb3JhZG8gZW4gUiwgcXVlIGVzIHVuIGNvbmp1bnRvIGRlIGRhdG9zIG11eSBjb25vY2lkbyBxdWUgY29udGllbmUgaW5mb3JtYWNpw7NuIHNvYnJlIGRpdmVyc29zIGFzcGVjdG9zIGRlIGF1dG9tw7N2aWxlcy4NCg0KDQoNCiMjIDEuIFJlYWxpemFyIHVuIGdyw6FmaWNvIGRlIGRpc3BlcnNpw7NuIGNvbiBnZ3Bsb3QNCg0KDQpQcmltZXJvLCB2YW1vcyBhIGNyZWFyIHVuIGdyw6FmaWNvIGRlIGRpc3BlcnNpw7NuIHBhcmEgdmlzdWFsaXphciBsYSByZWxhY2nDs24gZW50cmUgbGFzIG1pbGxhcyBwb3IgZ2Fsw7NuIChtcGcpIHkgZWwgcGVzbyBkZWwgY29jaGUgKHd0KS4NCg0KDQpgYGB7cn0NCg0KDQpsaWJyYXJ5KGdncGxvdDIpDQoNCmRhdGEobXRjYXJzKSAgIyBDYXJnYW1vcyBlbCBjb25qdW50byBkZSBkYXRvcw0KIyBDcmVhciB1biBncsOhZmljbyBkZSBkaXNwZXJzacOzbiBjb24gZ2dwbG90DQpnZ3Bsb3QobXRjYXJzLCBhZXMoeCA9IHd0LCB5ID0gbXBnKSkgKw0KICBnZW9tX3BvaW50KCkgKw0KICBsYWJzKHRpdGxlID0gIkdyw6FmaWNvIGRlIGRpc3BlcnNpw7NuIGRlIE1QRyB2cyBQZXNvIiwNCiAgICAgICB4ID0gIlBlc28gKDEwMDAgbGJzKSIsDQogICAgICAgeSA9ICJNaWxsYXMgcG9yIGdhbMOzbiIpICsNCiAgdGhlbWVfbWluaW1hbCgpDQoNCiMjIDIuIEFqdXN0YXIgdW4gbW9kZWxvIGRlIHJlZ3Jlc2nDs24NCg0KQWhvcmEsIGFqdXN0YXJlbW9zIHVuIG1vZGVsbyBkZSByZWdyZXNpw7NuIGxpbmVhbCBwYXJhIHByZWRlY2lyIG1wZyBhIHBhcnRpciBkZSB3dC4NCg0KYGBge3J9DQoNCiMgQWp1c3RhciBtb2RlbG8gZGUgcmVncmVzacOzbiBsaW5lYWwNCm1vZGVsbyA8LSBsbShtcGcgfiB3dCwgZGF0YSA9IG10Y2FycykNCnN1bW1hcnkobW9kZWxvKQ0KDQpgYGANCg0KIyMgMy4gQ2FsY3VsYXIgZWwgY29lZmljaWVudGUgZGUgZGV0ZXJtaW5hY2nDs24NCg0KRWwgY29lZmljaWVudGUgZGUgZGV0ZXJtaW5hY2nDs24gKFLCsikgc2UgcHVlZGUgZXh0cmFlciBkZWwgcmVzdW1lbiBkZWwgbW9kZWxvLCBwZXJvIHRhbWJpw6luIGxvIHBvZGVtb3MgY2FsY3VsYXIgZXhwbMOtY2l0YW1lbnRlIHBhcmEgcXVlIHNlYSBtw6FzIGRpZMOhY3RpY28uDQoNCmBgYHtyfQ0KIyBDYWxjdWxhciBlbCBjb2VmaWNpZW50ZSBkZSBkZXRlcm1pbmFjacOzbiBSXjINCnJfY3VhZHJhZG8gPC0gc3VtbWFyeShtb2RlbG8pJHIuc3F1YXJlZA0KcHJpbnQocGFzdGUoIkNvZWZpY2llbnRlIGRlIGRldGVybWluYWNpw7NuIFJeMjoiLCByX2N1YWRyYWRvKSkNCmBgYA0KIyMgNC4gUmVhbGl6YXIgdW4gcHJvbsOzc3RpY28NCg0KRmluYWxtZW50ZSwgdXNhcmVtb3MgZWwgbW9kZWxvIGFqdXN0YWRvIHBhcmEgaGFjZXIgdW4gcHJvbsOzc3RpY28uIFBvciBlamVtcGxvLCBwcmVkZWNpcmVtb3MgZWwgbXBnIHBhcmEgdW4gY29jaGUgY29uIHVuIHBlc28gZGUgMy4wMDAgbGJzLg0KDQpgYGB7cn0NCiMgUHJvbsOzc3RpY28gcGFyYSB1biBjb2NoZSBjb24gdW4gcGVzbyBkZSAzMDAwIGxicw0KcGVzb19udWV2byA8LSBkYXRhLmZyYW1lKHd0ID0gMykNCnByZWRpY2Npb24gPC0gcHJlZGljdChtb2RlbG8sIG5ld2RhdGEgPSBwZXNvX251ZXZvKQ0KcHJpbnQocGFzdGUoIlByZWRpY2Npw7NuIGRlIE1QRyBwYXJhIHVuIGNvY2hlIGRlIDMwMDAgbGJzOiIsIHByZWRpY2Npb24pKQ0KDQpFc3RlIGPDs2RpZ28gcHJvcG9yY2lvbmEgdW4gZmx1am8gZGUgdHJhYmFqbyBjb21wbGV0byBkZXNkZSBsYSB2aXN1YWxpemFjacOzbiBkZSBkYXRvcyBoYXN0YSBsYSBtb2RlbGl6YWNpw7NuIHkgbGEgcHJlZGljY2nDs24gZW4gUi4NCg0KIyBUQUxMRVINCg0KKipPYmpldGl2byoqOiBMb3MgZXN0dWRpYW50ZXMgYXBsaWNhcsOhbiB0w6ljbmljYXMgZGUgcmVncmVzacOzbiBsaW5lYWwgcGFyYSBleHBsb3JhciBsYSByZWxhY2nDs24gZW50cmUgdmFyaWFibGVzLiBFbCB0YWxsZXIgaW5jbHVpcsOhIHZpc3VhbGl6YWNpw7NuIGRlIGRhdG9zLCBhanVzdGUgZGVsIG1vZGVsbyBkZSByZWdyZXNpw7NuLCBjw6FsY3VsbyBkZSBjb2VmaWNpZW50ZSBkZSBkZXRlcm1pbmFjacOzbiB5IHJlYWxpemFjacOzbiBkZSBwcm9uw7NzdGljb3MuDQoNCiMjIFBVTlRPIDE6IEFJUiBRVUFMSVRZDQoNCkVzdGUgY29uanVudG8gZGUgZGF0b3MgY29udGllbmUgbWVkaWNpb25lcyBkaWFyaWFzIGRlIGxhIGNhbGlkYWQgZGVsIGFpcmUgZGUgTnVldmEgWW9yayBkZSBtYXlvIGEgc2VwdGllbWJyZSBkZSAxOTczLiBJbmNsdXllIHZhcmlhYmxlcyBjb21vIGxhIGNvbmNlbnRyYWNpw7NuIGRlIG96b25vLCBsYSB0ZW1wZXJhdHVyYSwgbGEgdmVsb2NpZGFkIGRlbCB2aWVudG8sIGV0Yy4NCg0KQSBjb250aW51YWNpw7NuIHNlIHByZXNlbnRhIGVsIGRhdGFzZXQgeSBsYXMgcHJpbWVyYXMgZmlsYXMgZGVsIGNvbmp1bnRvIGRlIGRhdG9zLg0KDQpgYGB7cn0NCmRhdGEoYWlycXVhbGl0eSkNCmhlYWQoYWlycXVhbGl0eSkNCnN1bW1hcnkoYWlycXVhbGl0eSkNCmBgYA0KDQoqKlB1bnRvcyBhIGRlc2Fycm9sbGFyOioqDQogIA0KICAtICAgQ3JlYXIgdW4gZ3LDoWZpY28gZGUgZGlzcGVyc2nDs24gcGFyYSB2aXN1YWxpemFyIGxhIHJlbGFjacOzbiBlbnRyZSBsYSBUZW1wICh0ZW1wZXJhdHVyYSkgeSBlbCBPem9uZSAoY29uY2VudHJhY2nDs24gZGUgb3pvbm8pLg0KDQpgYGB7cn0NCmdncGxvdChhaXJxdWFsaXR5LCBhZXMoeCA9IFRlbXAsIHkgPSBPem9uZSkpICsNCiAgZ2VvbV9wb2ludCgpICsNCiAgbGFicyh0aXRsZSA9ICJHcsOhZmljbyBkZSBkaXNwZXJzacOzbiBkZSBPem9uZSB2cyBUZW1wIiwNCiAgICAgICB4ID0gIk96b25lIiwNCiAgICAgICB5ID0gIiIpICsNCiAgdGhlbWVfbWluaW1hbCgpDQoNCmBgYA0KLSAgIEFqdXN0YXIgdW4gbW9kZWxvIGxpbmVhbCBwYXJhIHByZWRlY2lyIGxhIGNvbmNlbnRyYWNpw7NuIGRlIG96b25vIGVuIGZ1bmNpw7NuIGRlIGxhIHRlbXBlcmF0dXJhLg0KDQpgYGB7cn0NCm1vZGVsbyA8LSBsbShPem9uZSB+IFRlbXAsIGRhdGEgPSBhaXJxdWFsaXR5KQ0Kc3VtbWFyeShtb2RlbG8pDQoNCmBgYA0KDQotICAgQ2FsY3VsYXIgZWwgY29lZmljaWVudGUgZGUgZGV0ZXJtaW5hY2nDs24geSByZWFsaXphciB1biBhbsOhbGlzaXMgc29icmUgbGEgdXRpbGlkYWQgZGVsIG1vZGVsbyBjb24gZXN0YSBpbmZvcm1hY2nDs24uDQoNCmBgYHtyfQ0Kcl9jdWFkcmFkbyA8LSBzdW1tYXJ5KG1vZGVsbykkci5zcXVhcmVkDQpwcmludChwYXN0ZSgiQ29lZmljaWVudGUgZGUgZGV0ZXJtaW5hY2nDs24gUl4yOiIsIHJfY3VhZHJhZG8pKQ0KDQpgYGANCg0KTm8gc2UgcHVlZGUgcmVhbGl6YXIgZWwgcHJvbm9zdGljbyBkZWJpZG8gYSBxdWUgcHJlc2VudGFtb3MgdW4gUlxeMiBtZW5vciBhbCA2NSUgcXVlIGVzIGVsIGVzdGFuZGFyIHF1ZSBkZXRlcm1pbmFtb3MgcGFyYSBzYWJlciBzaSB1biB1biBtb2RlbG8gZXN0YSBiaWVuIGFqdXN0YWRvLg0KDQotICAgVXRpbGl6YXIgZWwgbW9kZWxvIHBhcmEgcHJlZGVjaXIgbGEgY29uY2VudHJhY2nDs24gZGUgb3pvbm8gYSBkaWZlcmVudGVzIHRlbXBlcmF0dXJhcywgcmVhbGl6YXIgdW5hIHByZWRpY2Npw7NuIHBhcmEgdW5hIHRlbXBlcmF0dXJhIGRlIDg1IGdyYWRvcyBGYWhyZW5oZWl0Lg0KDQpgYGB7cn0NCg0KYGBgDQoNCiMjIFBVTlRPIDI6IENBUlMNCg0KRXN0ZSBjb25qdW50byBkZSBkYXRvcyB0aWVuZSBtZWRpY2lvbmVzIGRlIGxhIHZlbG9jaWRhZCBkZSBsb3MgYXV0b23Ds3ZpbGVzIHkgbGFzIGRpc3RhbmNpYXMgcXVlIHRvbWFuIHBhcmEgZGV0ZW5lcnNlLiBFc3RlIHRhbGxlciBwZXJtaXRpcsOhIGEgbG9zIGVzdHVkaWFudGVzIGV4cGxvcmFyIGPDs21vIGxhIHZlbG9jaWRhZCBhZmVjdGEgbGEgZGlzdGFuY2lhIGRlIGZyZW5hZG8gZGUgdW4gYXV0b23Ds3ZpbCwgdXRpbGl6YW5kbyB0w6ljbmljYXMgZGUgcmVncmVzacOzbiBsaW5lYWwuDQoNCkEgY29udGludWFjacOzbiBzZSBwcmVzZW50YSBlbCBkYXRhc2V0IHkgbGFzIHByaW1lcmFzIGZpbGFzIGRlbCBjb25qdW50byBkZSBkYXRvcy4NCg0KYGBge3J9DQpkYXRhKGNhcnMpDQpoZWFkKGNhcnMpDQpzdW1tYXJ5KGNhcnMpDQoNCmBgYA0KDQoqKlB1bnRvcyBhIGRlc2Fycm9sbGFyOioqDQogIA0KICAtICAgQ3JlYXIgdW4gZ3LDoWZpY28gZGUgZGlzcGVyc2nDs24gcGFyYSB2aXN1YWxpemFyIGxhIHJlbGFjacOzbiBlbnRyZSBsYSBzcGVlZCAodmVsb2NpZGFkKSB5IGxhIGRpc3QgKGRpc3RhbmNpYSBkZSBmcmVuYWRvKS4NCg0KYGBge3J9DQpnZ3Bsb3QoY2FycywgYWVzKHggPSBzcGVlZCwgeSA9IGRpc3QpKSArDQogIGdlb21fcG9pbnQoKSArDQogIGxhYnModGl0bGUgPSAiR3LDoWZpY28gZGUgZGlzcGVyc2nDs24gZGUgZGlzdCB2cyBzcGVlZCIsDQogICAgICAgeCA9ICJzcGVlZCIsDQogICAgICAgeSA9ICJkaXN0IikgKw0KICB0aGVtZV9taW5pbWFsKCkNCg0KYGBgDQoNCi0gICBBanVzdGFyIHVuIG1vZGVsbyBsaW5lYWwgcGFyYSBwcmVkZWNpciBsYSBkaXN0YW5jaWEgZGUgZnJlbmFkbyBhIHBhcnRpciBkZSBsYSB2ZWxvY2lkYWQuDQoNCmBgYHtyfQ0KbW9kZWxvIDwtIGxtKGRpc3QgfiBzcGVlZCwgZGF0YSA9IGNhcnMpDQpzdW1tYXJ5KG1vZGVsbykNCmBgYA0KDQotICAgQ2FsY3VsYXIgZWwgY29lZmljaWVudGUgZGUgZGV0ZXJtaW5hY2nDs24geSByZWFsaXphciB1biBhbsOhbGlzaXMgc29icmUgbGEgdXRpbGlkYWQgZGVsIG1vZGVsbyBjb24gZXN0YSBpbmZvcm1hY2nDs24uDQoNCmBgYHtyfQ0Kcl9jdWFkcmFkbyA8LSBzdW1tYXJ5KG1vZGVsbykkci5zcXVhcmVkDQpwcmludChwYXN0ZSgiQ29lZmljaWVudGUgZGUgZGV0ZXJtaW5hY2nDs24gUl4yOiIsIHJfY3VhZHJhZG8pKQ0KYGBgDQoNCi0gICBVdGlsaXphciBlbCBtb2RlbG8gcGFyYSBoYWNlciBwcmVkaWNjaW9uZXMgZGUgbGEgZGlzdGFuY2lhIGRlIGZyZW5hZG8gYSBkaWZlcmVudGVzIHZlbG9jaWRhZGVzLiwgcmVhbGl6YXIgdW5hIHByZWRpY2Npw7NuIHBhcmEgcGFyYSB1bmEgdmVsb2NpZGFkIGRlIDMwIG1waC4NCg0KYGBge3J9DQojIFByb27Ds3N0aWNvIHBhcmEgdW4gY29jaGUgY29uIHVuIHBlc28gZGUgMzAwMCBsYnMNCmRpc3RfbnVldm8gPC0gZGF0YS5mcmFtZShzcGVlZCA9IDMwKQ0KcHJlZGljY2lvbiA8LSBwcmVkaWN0KG1vZGVsbywgbmV3ZGF0YSA9IGRpc3RfbnVldm8pDQpwcmludChwYXN0ZSgiUHJlZGljY2nDs24gZGUgZGlzdCBwYXJhIHVuYSB2ZWxvY2lkYWQgZGUgMzBtcGg6IiwgcHJlZGljY2lvbikp