paquetes <- library(help = "datasets") # Guarda información del paquete "datasets" en la variable 'paquetes'
head(paquetes$info[[2]]) # Muestra parte de esa información (lista de datasets disponibles)
## [1] "AirPassengers Monthly Airline Passenger Numbers 1949-1960"
## [2] "BJsales Sales Data with Leading Indicator"
## [3] "BOD Biochemical Oxygen Demand"
## [4] "CO2 Carbon Dioxide Uptake in Grass Plants"
## [5] "ChickWeight Weight versus age of chicks on different diets"
## [6] "DNase Elisa assay of DNase"
library(MASS)
data("Cars93")
datos <- Cars93
?Cars93
## starting httpd help server ... done
head(datos)
## Manufacturer Model Type Min.Price Price Max.Price MPG.city MPG.highway
## 1 Acura Integra Small 12.9 15.9 18.8 25 31
## 2 Acura Legend Midsize 29.2 33.9 38.7 18 25
## 3 Audi 90 Compact 25.9 29.1 32.3 20 26
## 4 Audi 100 Midsize 30.8 37.7 44.6 19 26
## 5 BMW 535i Midsize 23.7 30.0 36.2 22 30
## 6 Buick Century Midsize 14.2 15.7 17.3 22 31
## AirBags DriveTrain Cylinders EngineSize Horsepower RPM
## 1 None Front 4 1.8 140 6300
## 2 Driver & Passenger Front 6 3.2 200 5500
## 3 Driver only Front 6 2.8 172 5500
## 4 Driver & Passenger Front 6 2.8 172 5500
## 5 Driver only Rear 4 3.5 208 5700
## 6 Driver only Front 4 2.2 110 5200
## Rev.per.mile Man.trans.avail Fuel.tank.capacity Passengers Length Wheelbase
## 1 2890 Yes 13.2 5 177 102
## 2 2335 Yes 18.0 5 195 115
## 3 2280 Yes 16.9 5 180 102
## 4 2535 Yes 21.1 6 193 106
## 5 2545 Yes 21.1 4 186 109
## 6 2565 No 16.4 6 189 105
## Width Turn.circle Rear.seat.room Luggage.room Weight Origin Make
## 1 68 37 26.5 11 2705 non-USA Acura Integra
## 2 71 38 30.0 15 3560 non-USA Acura Legend
## 3 67 37 28.0 14 3375 non-USA Audi 90
## 4 70 37 31.0 17 3405 non-USA Audi 100
## 5 69 39 27.0 13 3640 non-USA BMW 535i
## 6 69 41 28.0 16 2880 USA Buick Century
str(datos)
## 'data.frame': 93 obs. of 27 variables:
## $ Manufacturer : Factor w/ 32 levels "Acura","Audi",..: 1 1 2 2 3 4 4 4 4 5 ...
## $ Model : Factor w/ 93 levels "100","190E","240",..: 49 56 9 1 6 24 54 74 73 35 ...
## $ Type : Factor w/ 6 levels "Compact","Large",..: 4 3 1 3 3 3 2 2 3 2 ...
## $ Min.Price : num 12.9 29.2 25.9 30.8 23.7 14.2 19.9 22.6 26.3 33 ...
## $ Price : num 15.9 33.9 29.1 37.7 30 15.7 20.8 23.7 26.3 34.7 ...
## $ Max.Price : num 18.8 38.7 32.3 44.6 36.2 17.3 21.7 24.9 26.3 36.3 ...
## $ MPG.city : int 25 18 20 19 22 22 19 16 19 16 ...
## $ MPG.highway : int 31 25 26 26 30 31 28 25 27 25 ...
## $ AirBags : Factor w/ 3 levels "Driver & Passenger",..: 3 1 2 1 2 2 2 2 2 2 ...
## $ DriveTrain : Factor w/ 3 levels "4WD","Front",..: 2 2 2 2 3 2 2 3 2 2 ...
## $ Cylinders : Factor w/ 6 levels "3","4","5","6",..: 2 4 4 4 2 2 4 4 4 5 ...
## $ EngineSize : num 1.8 3.2 2.8 2.8 3.5 2.2 3.8 5.7 3.8 4.9 ...
## $ Horsepower : int 140 200 172 172 208 110 170 180 170 200 ...
## $ RPM : int 6300 5500 5500 5500 5700 5200 4800 4000 4800 4100 ...
## $ Rev.per.mile : int 2890 2335 2280 2535 2545 2565 1570 1320 1690 1510 ...
## $ Man.trans.avail : Factor w/ 2 levels "No","Yes": 2 2 2 2 2 1 1 1 1 1 ...
## $ Fuel.tank.capacity: num 13.2 18 16.9 21.1 21.1 16.4 18 23 18.8 18 ...
## $ Passengers : int 5 5 5 6 4 6 6 6 5 6 ...
## $ Length : int 177 195 180 193 186 189 200 216 198 206 ...
## $ Wheelbase : int 102 115 102 106 109 105 111 116 108 114 ...
## $ Width : int 68 71 67 70 69 69 74 78 73 73 ...
## $ Turn.circle : int 37 38 37 37 39 41 42 45 41 43 ...
## $ Rear.seat.room : num 26.5 30 28 31 27 28 30.5 30.5 26.5 35 ...
## $ Luggage.room : int 11 15 14 17 13 16 17 21 14 18 ...
## $ Weight : int 2705 3560 3375 3405 3640 2880 3470 4105 3495 3620 ...
## $ Origin : Factor w/ 2 levels "USA","non-USA": 2 2 2 2 2 1 1 1 1 1 ...
## $ Make : Factor w/ 93 levels "Acura Integra",..: 1 2 4 3 5 6 7 9 8 10 ...
Los nombres de las variables son:
Manufacturer Model Type Min.Price Price Max.Price MPG.city MPG.highway AirBags DriveTrain Cylinders EngineSize Horsepower RPM Rev.per.mile Man.trans.avail Fuel.tank.capacity Passengers Length Wheelbase Width Turn.circle Rear.seat.room Luggage.room Weight Origin Make
dim(datos)
## [1] 93 27
Hay 93 filas y 27 columnas, es decir, son 27 variables y 93 observaciones.
X1<-datos$EngineSize
Y<-datos$MPG.city
hist(X1,
main = "Histograma de EngineSize",
xlab = "EngineSize",
col = "skyblue",
border = "white")
Notamos una leve asimetría a la derecha, ya que vemos una mayor concentración en los valores más pequeños. Vemos la mayor frecuencia entre motores de tamaño 2 y 3 en unidades de litros. Hay una menor frecuencia en entre 4 y 6 litros. El 6 podría considerarse ya un valor atípico porque está muy alejado, esto podría afectar a la media.
hist(Y,
main = "Histograma de MPG city",
xlab = "MPG city",
col = "skyblue",
border = "white")
En MPG city es mucho más evidente la asimetría a la derecha, los valores están concentrados en millas por galón más pequeñas, ya que la mayor frecuencia son las de 15 millas por galón y va bajando, cuando llega a 50 millas por galón observamos muy baja frecuencia. Podríamos considerar valores atípicos entre el 45 y 50.
summary(X1)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 1.800 2.400 2.668 3.300 5.700
sd(X1)
## [1] 1.037363
IQR(X1)
## [1] 1.5
Vemos que los tamaños de motor oscilan entre 1 (mínimo) y 5.7 (máximo). Hay una media de 2.668 litros con una desviación estándar de +- 1.037 litros. También observamos una mediana de 2.4 con un rango intercuartílico de 1.5 litros. Vemos que la media es mayor que la mediana, por tanto hay valores atípicos que la estan subiendo. El cuartil uno es el 1.8 es decir el 25% de los autos tienen a lo más 1.8 litros en cuanto al tamaño del motor. Mientras que el 75% (cuartil 3), de los autos tienen un tienen a lo más 3.3 litros.
summary(Y)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 15.00 18.00 21.00 22.37 25.00 46.00
sd(Y)
## [1] 5.619812
IQR(Y)
## [1] 7
Vemos que las millas por galón en ciudad oscilan entre 15 (mínimo) y 46 millas (máximo). Hay una media de 22.37 millas por galón con una desviación estándar de +- 5.6 millas por galón. También observamos una mediana de 21 con un rango intercuartílico de 7 millas por galón. Vemos que la media es mayor que la mediana, por tanto hay valores atípicos que la estan subiendo. El cuartil uno es el 18 es decir el 25% de los autos consumen a lo más 18 millas por galón en ciudad. Mientras que el 75% (cuartil 3), de los autos tienen consumen a lo más 25 millas por galón en ciudad.
X: EngineSize (variable explicativa) Y: MPG city (variable respuesta)
with(datos, plot(EngineSize, MPG.city))
En el gráfico de dispersión se osberva una correlación negativa entre el tamaño del motor y las millas por galón en ciudad, ya que al aumentar el tamaño del motor, las millas por galón en ciudad parecen disminuir; sin embargo, vamos a realizar las pruebas estadísticas correspondientes para confirmarlo.
Verifiquemos que los datos sean normales, utilizando el test de shapiro pues los datos son menores a 50.
shapiro.test(X1)
##
## Shapiro-Wilk normality test
##
## data: X1
## W = 0.9361, p-value = 0.000199
shapiro.test(Y)
##
## Shapiro-Wilk normality test
##
## data: Y
## W = 0.85831, p-value = 5.763e-08
Para verificar el supuesto de normalidad se uso la prueba Shapiro-Wilk obteniendo un p-valor menor que 0.05 en el tamaño del motor y las millas por galón en ciudad, lo que indica que estas no siguen una distribución aproximadamente normal.
#Tamaño de muestra
N = nrow(datos)
#Medias
x1m = mean(X1)
ym = mean(Y)
#Covarianza
Cov = sum((X1 - x1m) * (Y - ym) / (N - 1))
Cov
## [1] -4.139165
cov(X1,Y)
## [1] -4.139165
Observamos una covarianza negativa, lo que indica que el coeficiente de correlación lineal será negativo. Sin embargo, como la covarianza no es adimensional, no podemos usarla para medir la fuerza de la relación ni compararla con otros estudios.
Como observamos previamente, los datos no son normales, por tanto, calculamos el coeficiente de correlación de Spearman de la siguiente forma:
R1 = cor(X1, Y,method = "spearman")
R1
## [1] -0.821208
Obtuvimos un coeficiente de correlación de -0.82. Por tanto, existe una correlación negativa fuerte entre el tamaño del motor y las millas por galón en ciudad. Es decir, a medida que el tamaño del motor aumenta, las millas por galón en ciudad disminuyen.
Ho: Ρ = 0 H1: Ρ ≠ 0
cor.test(X1, Y, method = "spearman")
## Warning in cor.test.default(X1, Y, method = "spearman"): Cannot compute exact
## p-value with ties
##
## Spearman's rank correlation rho
##
## data: X1 and Y
## S = 244122, p-value < 2.2e-16
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## -0.821208
Dado que el p-valor es menor a 0.05, rechazamos la hipótesis nula. Esto indica que hay evidencia estadística suficiente para afirmar que existe una correlación significativa entre el tamaño del motor y las millas por galón en ciudad.
# Sumas de x, y, xy
sum_x1 <- sum(X1)
sum_y <- sum(Y)
sum_x1y <- sum(X1 * Y)
# Cálculo de Sxy
Sxy <- sum_x1y - (sum_x1 * sum_y) / N
# Suma de cuadrados
sum_x1_sq <- sum(X1^2)
sum_y_sq <- sum(Y^2)
# Sumas al cuadrado (del tipo (sumx)^2)
sum_x1_squared <- sum_x1^2
sum_y_squared <- sum_y^2
# Cálculo de Sxx y Syy
Sxx <- sum_x1_sq - (sum_x1_squared / N)
Syy <- sum_y_sq - (sum_y_squared / N)
#Realizamos la estimación de Bo y B1
B1<-((sum_x1*ym)-sum_x1y)/((sum_x1*x1m)-sum_x1_sq)
B1
## [1] -3.846372
B0<-ym -B1*x1m
B0
## [1] 32.62672
#lm linear model (y~x)
M1 = lm(Y ~ X1)
summary(M1)
##
## Call:
## lm(formula = Y ~ X1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10.6264 -2.7032 -0.5491 2.1428 17.2197
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 32.6267 1.1439 28.523 < 2e-16 ***
## X1 -3.8464 0.3999 -9.618 1.61e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.979 on 91 degrees of freedom
## Multiple R-squared: 0.5041, Adjusted R-squared: 0.4987
## F-statistic: 92.51 on 1 and 91 DF, p-value: 1.606e-15
La ecuación quedaría de la siguiente manera:
\[ y = 32.63 - 3.84x \]
La recta de regresión obtenida representa el mejor ajuste lineal posible para modelar la relación entre las diferencias y el número de errores, según el método de mínimos cuadrados. Al interpretarla analizamos que por cada litro que aumenta en términos del tamaño del motor, las millas por galón en ciudad disminuyen en promedio a 3.84. Por otro lado, el intercepto no es interpretable, pues si el tamaño del motor fuera 0, no habría carro que analizar, no existe carro sin motor. Su gráfica es la siguiente:
# Graficar la relación con la línea de regresión
plot(datos$EngineSize, datos$MPG.city,
main = "Regresión Lineal: MPG.city vs enginesize",
xlab = "engine size", ylab = "mpg city", pch = 19, col = "blue")
abline(M1, col = "red", lwd = 2) # Línea de regresión
R12 <- (cor(X1, Y,method = "spearman"))^2
R12
## [1] 0.6743826
El 67.43% de la variabilidad observada las millas por galón en ciudad se debe al tamaño del motor y el 32.57% restante se debe a otros facroees que no han sido incluidas en el estudio. De todas formas, como el coeficiente de determinación es menor a 70%, no podemos afirmar que el modelo tiene una buena capacidad predictoria, sin embargo, está cerca.
p_2 <- (sum((Y - mean(Y))^2) - sum((Y - M1$fitted.values)^2)) / sum((Y - mean(Y))^2)
p_2
## [1] 0.5041045