6. Resuelve

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:

# 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

##Este gráfico muestra la relación entre dos variables cuantitativas.–> Si los puntos bajan es una relación negativa pero si suben es una relación positiva.

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:

# 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.