1. Carga y Limpieza de Datos Carga nuevamente el
archivo Auto.csv en un objeto llamado datos.
Asegúrese de especificar que los signos de interrogación
(?) deben ser tratados como valores faltantes
(NA). Una vez cargado, utilice la función
na.omit() para eliminar las filas con datos faltantes y
utilice la función dim() para reportar cuántas
observaciones y variables quedaron en el conjunto de datos limpio.
datos <- read.csv("Auto.csv", header = TRUE, na.strings = "?")
# read.csv() sirve para cargar una base de datos en formato .csv
# "header = TRUE" indica que la primera fila tiene los nombres de las variables
# "na.strings = '?'" le dice a R que los signos ? los considere como datos faltantes (NA)
datos <- na.omit(datos)
# na.omit() elimina todas las filas que tengan al menos un NA
# Esto limpia la base para que no haya problemas al calcular estadísticas
#antes habían 397 observacione, ahora quedan 392. Es decir habían 5 filas con observaciones faltantes.
dim(datos)
## [1] 392 9
# dim() muestra las dimensiones del objeto:
# Primero el número de filas (observaciones)
# Segundo el número de columnas (variables)
2. Indexación y Subconjuntos Basándote en los datos
limpios del ejercicio anterior, crea una nueva matriz u objeto que
contenga solamente las columnas correspondientes a
mpg, horsepower y weight. De este
nuevo objeto, selecciona y guarda únicamente las primeras 20 filas.
Imprime el resultado en pantalla.
#RECUERDA: Antes de la coma = filas
#RECUERDA: Después de la coma = columnas
#Si antes de la coma está vacío, significa "todas las filas"
#c() considera o junta las columnas que queremos. Esto crea un subconjunto de la base original.
Nmatriz <- datos[, c("mpg", "horsepower", "weight")]
#para agarrar ahora las primeras 20 filas (fila antes de la coma)...
Nmatriz <- datos[1:20, c("mpg", "horsepower", "weight")]
Nmatriz
## mpg horsepower weight
## 1 18 130 3504
## 2 15 165 3693
## 3 18 150 3436
## 4 16 150 3433
## 5 17 140 3449
## 6 15 198 4341
## 7 14 220 4354
## 8 14 215 4312
## 9 14 225 4425
## 10 15 190 3850
## 11 15 170 3563
## 12 14 160 3609
## 13 15 150 3761
## 14 14 225 3086
## 15 24 95 2372
## 16 22 95 2833
## 17 18 97 2774
## 18 21 85 2587
## 19 27 88 2130
## 20 26 46 1835
3. Estadística Descriptiva Utilizando el conjunto de
datos completo y limpio: a) Calcula la media (mean) de la
variable weight. b) Calcula la desviación estándar
(sd) de la variable mpg. c) Calcula la
varianza (var) de ambas variables para observar las
diferencias en magnitud y dispersión.
datos <- read.csv("Auto.csv", header = TRUE, na.strings = "?")
datos <- na.omit(datos)
dim(datos)
## [1] 392 9
# mean() calcula el promedio
# datos$weight significa:"toma datos de la columna weight del data frame "datos"
mean(datos$weight)#El símbolo $ sirve para acceder a una variable específica dentro del data frame.
## [1] 2977.584
# sd() calcula la desviación estándar
# Mide qué tan dispersos están los datos respecto a la media
sd(datos$mpg)
## [1] 7.805007
# var() calcula la varianza
# Es la desviación estándar al cuadrado
# Mide la variabilidad de los datos
var(datos$weight)
## [1] 721484.7
var(datos$mpg)
## [1] 60.91814
4. Gráficos Personalizados Genera un gráfico de
dispersión (plot) para visualizar la relación entre la
potencia (horsepower) en el eje X y el rendimiento
(mpg) en el eje Y. El gráfico debe incluir:
Un título principal (main) que diga: “Relación
Potencia vs Consumo”.
Etiqueta del eje X (xlab): “Caballos de
Fuerza”.
Etiqueta del eje Y (ylab): “Millas por
Galón”.
# plot(x, y) crea un gráfico de dispersión
# x = eje horizontal
# y = eje vertical
plot(datos$horsepower, datos$mpg, main = "Relación Potencia vs Consumo", xlab = "Caballos de Fuerza", ylab = "Millas por Galón")
#main = título del gráfico
#xlab = etiqueta del eje X
#ylab = etiqueta del eje Y
5. Correlación y Simulación Primero, calcula la
correlación real entre horsepower y mpg
utilizando la función cor(). Segundo, realiza una
simulación para comparar:
Fija la semilla en 50 usando set.seed(50).
Genera un vector de variables normales aleatorias
(rnorm) del mismo tamaño que su conjunto de datos limpio
(recuerda usar dim() o nrow() para saber el
tamaño).
Calcula la correlación entre este vector de ruido aleatorio y la
variable mpg.
Pregunta: ¿Esperabas que esta correlación fuera alta o baja? ¿Por qué?
# cor(x, y) calcula la correlación entre dos variables
# La correlación mide la fuerza y dirección de la relación lineal
cor(datos$horsepower, datos$mpg)
## [1] -0.7784268
##Cerca de 1 –> relación positiva fuerte ##Cerca de -1 –> relación negativa fuerte ##Cerca de 0 –> no hay relación lineal
# set.seed() fija una semilla
# Esto hace que los números aleatorios sean reproducibles
# Si otra persona usa la misma semilla, obtiene los mismos números. Tipo dejan de ser tan aleatorios
set.seed(50)
# nrow(datos) devuelve el número de filas del data frame. Es decir, el número de observaciones que tiene la base
nrow(datos)
## [1] 392
#dim() devuelve filas y columnas
#nrow() devuelve SOLO el número de filas
ruido_aleatorio <- rnorm(nrow(datos))
# rnorm(n) genera n números aleatorios con distribución normal
# Aquí generamos tantos números como observaciones tenga la base
#Para qué esto? Queremos que el vector ruido tenga el mismo tamaño que mpg porque para calcular correlación, ambos vectores deben tener la misma longitud
#ahpra sí,calculamos la correlación entre el ruido y mpg
cor(ruido_aleatorio, datos$mpg)
## [1] -0.05537666
##Si esperaba que saliera cerca de 0 porque como ruido es aleatorio, no debería tener relación con mpg. ##RESUMEN: Para que cor(x, y) funcione:Ambos vectores deben tener el mismo número de observacione. Por eso usamos nrow(datos). Si tuvieran diferente tamaño, R marcaría error.