Este es el conjunto de datos de ventas de automóviles que incluye información sobre diferentes automóviles.
Carmot venta de coches S.A.C.
Este es el conjunto de datos de ventas de automóviles que incluye información sobre diferentes automóviles. Este conjunto de datos se está tomando de Analytixlabs con fines de predicción. El conjunto de datos de ventas de automóviles ofrece una valiosa base para realizar análisis predictivos y comprender mejor el mercado automotriz. Al aplicar diferentes técnicas de análisis y considerar las variables relevantes, se pueden obtener insights valiosos para tomar decisiones estratégicas en el ámbito de la venta de vehículos.
El objetivo principal del estudio es realizar análisis predictivos del mercado automotriz utilizando el conjunto de datos de ventas de automóviles Específicamente, se busca: Predecir el precio de venta de un vehículo: Pronosticar el valor probable por el que se venderá un vehículo en función de sus características y las condiciones del mercado. Identificar patrones de compra: Analizar las tendencias del mercado automotriz para comprender mejor el comportamiento de los consumidores y las preferencias por diferentes tipos de vehículos. Segmentar el mercado: Dividir el mercado en grupos específicos (por marca, precio, tipo de combustible, etc.) para identificar oportunidades de negocio y estrategias de marketing más efectivas. Evaluar la competencia: Comparar el rendimiento de diferentes marcas y modelos de vehículos para comprender su posicionamiento en el mercado y desarrollar estrategias competitivas. Analizar la estacionalidad: Estudiar si las ventas de automóviles varían a lo largo del año, identificando picos y valles en la demanda para optimizar la gestión del inventario y las estrategias de promoción.
La población de estudio está compuesta por todas las transacciones de ventas de automóviles registradas.
La muestra es un subconjunto de la población de estudio que se utiliza para representar a la población. La muestra debe ser representativa de la población para que los resultados del estudio sean válidos.
La unidad de análisis es cada transacción individual de venta de un automóvil. El conjunto de datos proporciona información específica para cada vehículo vendido, como marca, modelo, año, precio, kilometraje, tipo de combustible, transmisión, color, condición y fecha de venta.
banco <- read.csv("Car_sales.csv",
sep = ",", stringsAsFactors = TRUE)
head(banco)
library(agricolae)
tabla_frecuencia_Sales_in_thousands <- table.freq(hist(banco$Sales_in_thousands, breaks = "sturges", plot = FALSE))
tabla_frecuencia_Sales_in_thousands
library(agricolae)
tabla_frecuencia_X__year_resale_value <- table.freq(hist(banco$X__year_resale_value, breaks = "sturges", plot = FALSE))
tabla_frecuencia_X__year_resale_value
library(agricolae)
tabla_frecuencia_Price_in_thousands <- table.freq(hist(banco$Price_in_thousands, breaks = "sturges", plot = FALSE))
tabla_frecuencia_Price_in_thousands
library(agricolae)
tabla_frecuencia_Engine_size <- table.freq(hist(banco$Engine_size, breaks = "sturges", plot = FALSE))
tabla_frecuencia_Engine_size
library(agricolae)
tabla_frecuencia_Horsepower <- table.freq(hist(banco$Horsepower, breaks = "sturges", plot = FALSE))
tabla_frecuencia_Horsepower
library(agricolae)
tabla_frecuencia_Wheelbase <- table.freq(hist(banco$Wheelbase, breaks = "sturges", plot = FALSE))
tabla_frecuencia_Wheelbase
library(agricolae)
tabla_frecuencia_Width <- table.freq(hist(banco$Width, breaks = "sturges", plot = FALSE))
tabla_frecuencia_Width
library(agricolae)
tabla_frecuencia_Length <- table.freq(hist(banco$Length, breaks = "sturges", plot = FALSE))
tabla_frecuencia_Length
library(agricolae)
tabla_frecuencia_Curb_weight <- table.freq(hist(banco$Curb_weight, breaks = "sturges", plot = FALSE))
tabla_frecuencia_Curb_weight
library(agricolae)
tabla_frecuencia_Fuel_capacity <- table.freq(hist(banco$Fuel_capacity, breaks = "sturges", plot = FALSE))
tabla_frecuencia_Fuel_capacity
library(agricolae)
tabla_frecuencia_Fuel_efficiency <- table.freq(hist(banco$Fuel_efficiency, breaks = "sturges", plot = FALSE))
tabla_frecuencia_Fuel_efficiency
library(agricolae)
tabla_frecuencia_Power_perf_factor <- table.freq(hist(banco$Power_perf_factor, breaks = "sturges", plot = FALSE))
tabla_frecuencia_Power_perf_factor
library(ggplot2)
ggplot(data=banco, aes(x=Manufacturer))+
geom_bar()
library(ggplot2)
ggplot(data = banco, aes(x = Manufacturer, y = Sales_in_thousands)) +
geom_point() +
labs(x = "Nombre del producto", y = "Precio del producto")
ggplot(data=banco, aes(Vehicle_type, fill = Vehicle_type))+
geom_bar()+
coord_polar("x", start=0)
ggplot(data=banco, aes(Price_in_thousands))+
geom_bar()+
theme_classic()
ggplot(data=banco, aes(Engine_size))+
geom_bar()+
theme_classic()
ggplot(data=banco, aes(Horsepower))+
geom_bar()+
theme_classic()
ggplot(data=banco, aes(Wheelbase))+
geom_bar()+
theme_classic()
ggplot(data=banco, aes(Fuel_capacity))+
geom_bar()+
theme_classic()
ggplot(data=banco, aes(Fuel_efficiency))+
geom_bar()+
theme_classic()
ggplot(data=banco, aes(Power_perf_factor))+
geom_bar()+
theme_classic()
head(banco)
#Sales_in_thousands
Media
Sales_in_thousands <- banco$Sales_in_thousands
promedio = sum(Sales_in_thousands)/length(Sales_in_thousands)
promedio
## [1] 77.51759
Mediana
median(Sales_in_thousands)
## [1] 46.9405
Moda
library(modeest)
##
## Attaching package: 'modeest'
## The following object is masked from 'package:agricolae':
##
## skewness
mfv(Sales_in_thousands)
## [1] 3.334 6.375 9.126 12.698 12.855 13.462 20.380 22.925 24.072
## [10] 24.155 25.106 27.308 27.609 28.976 39.572 42.574 42.643 51.238
## [19] 54.158 55.557 65.119 68.411 73.203 76.029 79.853 80.556 84.087
## [28] 88.094 125.338 155.787 157.040 220.650 276.747 540.561
#Price_in_thousands
Media
Price_in_thousands <- banco$Price_in_thousands
promedio = sum(Price_in_thousands)/length(Price_in_thousands)
promedio
## [1] 27.6905
Mediana
median(Price_in_thousands)
## [1] 26.324
Moda
library(modeest)
mfv(Price_in_thousands)
## [1] 11.528 12.050 13.499 14.460 16.888 18.850 20.390 20.550 21.410 21.620
## [11] 22.288 22.368 22.510 22.799 25.635 26.000 26.249 26.399 26.600 26.895
## [21] 26.935 27.560 28.340 29.299 31.505 31.930 34.605 35.300 36.135 37.805
## [31] 42.660 46.305 54.005 60.105
#Horsepower
Media
Horsepower <- banco$Horsepower
promedio = sum(Horsepower)/length(Horsepower)
promedio
## [1] 191.4118
Mediana
median(Horsepower)
## [1] 197.5
Moda
library(modeest)
mfv(Horsepower)
## [1] 210
#Wheelbase
Media
Wheelbase <- banco$Wheelbase
promedio = sum(Wheelbase)/length(Wheelbase)
promedio
## [1] 919.9706
Mediana
median(Wheelbase)
## [1] 1061
Moda
library(modeest)
mfv(Wheelbase)
## [1] 1122
#Width
Media
Width <- banco$Width
promedio = sum(Width)/length(Width)
promedio
## [1] 71.98235
Mediana
median(Width)
## [1] 71.2
Moda
library(modeest)
mfv(Width)
## [1] 66.5 66.7 69.4 70.2 70.4 70.9 74.9
#Length
Media
Length <- banco$Length
promedio = sum(Length)/length(Length)
promedio
## [1] 188.5
Mediana
median(Length)
## [1] 189.65
Moda
library(modeest)
mfv(Length)
## [1] 189.2
#Curb_weight
Media
Curb_weight <- banco$Curb_weight
promedio = sum(Curb_weight)/length(Curb_weight)
promedio
## [1] 3.732029
Mediana
median(Curb_weight)
## [1] 3.791
Moda
library(modeest)
mfv(Curb_weight)
## [1] 3.876
#Fuel_capacity
Media
Fuel_capacity <- banco$Fuel_capacity
promedio = sum(Fuel_capacity)/length(Fuel_capacity)
promedio
## [1] 20.20588
Mediana
median(Fuel_capacity)
## [1] 20
Moda
library(modeest)
mfv(Fuel_capacity)
## [1] 20
#Fuel_efficiency
Media
Fuel_efficiency <- banco$Fuel_efficiency
promedio = sum(Fuel_efficiency)/length(Fuel_efficiency)
promedio
## [1] 21.20588
Mediana
median(Fuel_efficiency)
## [1] 21
Moda
library(modeest)
mfv(Fuel_efficiency)
## [1] 23
(cuartiles)
quantile(banco$Price_in_thousands)
## 0% 25% 50% 75% 100%
## 11.52800 21.46250 26.32400 31.82375 60.10500
Segun los resultados: El valor minimo de un auto es de: 11.52800
### Cuartil 1 \((Q_1)\) interpretación: es $ 21.46250; El 25% de los carros, su monto máximo es $ 21.46250
### Cuartil 2 \((Q_2)\) interpretación: es $ 26.32400; El 50% de los carros, su monto máximo es $ 26.32400
### Cuartil 3 \((Q_3)\) interpretación: es $ 31.82375; El 75% de los carros, su monto máximo es $ 31.82375
Dividir en 10 grupo (deciles)
quantile(banco$Price_in_thousands, probs = seq(0, 1, 0.1))
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
## 11.5280 15.1884 20.4860 22.2212 23.3662 26.3240 26.9270 29.5196 34.8830 41.2035
## 100%
## 60.1050
Dividir en 100 grupo (percentiles)
quantile(banco$Price_in_thousands, probs = seq(0, 1, 0.01))
## 0% 1% 2% 3% 4% 5% 6% 7%
## 11.52800 11.70026 11.87252 12.04478 12.51368 12.99185 13.47002 13.79691
## 8% 9% 10% 11% 12% 13% 14% 15%
## 14.11404 14.43117 15.18840 15.98964 16.79088 17.45698 18.10444 18.75190
## 16% 17% 18% 19% 20% 21% 22% 23%
## 19.28120 19.78940 20.29760 20.43320 20.48600 20.53880 20.77360 21.05740
## 24% 25% 26% 27% 28% 29% 30% 31%
## 21.34120 21.46250 21.53180 21.60110 21.78032 22.00076 22.22120 22.30640
## 32% 33% 34% 35% 36% 37% 38% 39%
## 22.33280 22.35920 22.39924 22.44610 22.49296 22.57069 22.66606 22.76143
## 40% 41% 42% 43% 44% 45% 46% 47%
## 23.36620 24.30208 25.23796 25.70435 25.82480 25.94525 26.04482 26.12699
## 48% 49% 50% 51% 52% 53% 54% 55%
## 26.20916 26.27450 26.32400 26.37350 26.43116 26.49749 26.56382 26.64425
## 56% 57% 58% 59% 60% 61% 62% 63%
## 26.74160 26.83895 26.90060 26.91380 26.92700 27.01625 27.22250 27.42875
## 64% 65% 66% 67% 68% 69% 70% 71%
## 27.65360 27.91100 28.16840 28.44549 28.76196 29.07843 29.51960 30.24758
## 72% 73% 74% 75% 76% 77% 78% 79%
## 30.97556 31.54325 31.68350 31.82375 32.14400 33.02675 33.90950 34.65365
## 80% 81% 82% 83% 84% 85% 86% 87%
## 34.88300 35.11235 35.35010 35.62565 35.90120 36.21850 36.76960 37.32070
## 88% 89% 90% 91% 92% 93% 94% 95%
## 37.99920 39.60135 41.20350 42.76935 43.97220 45.17505 46.45900 49.00000
## 96% 97% 98% 99% 100%
## 51.54100 54.06600 56.07900 58.09200 60.10500
Asimetría y curtosis
Asimetría
library(fBasics)
##
## Attaching package: 'fBasics'
## The following objects are masked from 'package:modeest':
##
## ghMode, ghtMode, gldMode, hypMode, nigMode, skewness
## The following objects are masked from 'package:agricolae':
##
## kurtosis, skewness
skewness(banco$Price_in_thousands)
## [1] 1.046977
## attr(,"method")
## [1] "moment"
Resultado: [1] 1.046977
hist(banco$Price_in_thousands)
Curtosis
kurtosis(banco$Price_in_thousands)
## [1] 0.9996178
## attr(,"method")
## [1] "excess"
# Cargar conjunto de datos
bancoTwo<-read.csv("Car_sales.csv",
sep = "," , stringsAsFactors = TRUE)
# Mostrar
head(bancoTwo)
str(bancoTwo)
## 'data.frame': 34 obs. of 16 variables:
## $ Manufacturer : Factor w/ 12 levels "Chrysler","Ford",..: 1 2 2 2 2 2 3 3 3 4 ...
## $ Model : Factor w/ 34 levels "4Runner","Altima",..: 12 7 32 6 24 8 4 21 20 33 ...
## $ Sales_in_thousands : num 13.5 276.7 155.8 125.3 220.7 ...
## $ X__year_resale_value: num 17.32 16.64 13.18 23.57 7.85 ...
## $ Vehicle_type : Factor w/ 2 levels "Car","Passenger": 2 1 1 1 1 1 1 1 1 1 ...
## $ Price_in_thousands : num 28.3 31.9 21.4 36.1 12.1 ...
## $ Engine_size : int 15 19 40 31 38 46 20 32 35 25 ...
## $ Horsepower : int 253 210 150 240 119 220 121 205 210 120 ...
## $ Wheelbase : int 113 1116 1207 119 1175 1385 1032 1094 1191 934 ...
## $ Width : num 74.4 70.2 76.6 78.7 69.4 79.1 68.9 70.4 75.6 66.7 ...
## $ Length : num 208 191 201 205 201 ...
## $ Curb_weight : num 3.56 3.88 3.76 4.81 3.09 ...
## $ Fuel_capacity : num 17 21 26 26 20 25.1 15.3 21.1 20 19 ...
## $ Fuel_efficiency : int 23 19 21 16 23 18 24 19 23 17 ...
## $ Latest_Launch : Factor w/ 31 levels "1/14/2012","1/24/2011",..: 23 20 13 30 1 27 15 7 14 17 ...
## $ Power_perf_factor : num 101.3 87.6 62.1 100 47.4 ...
Verificación de valores perdidos
# Verificar columnas con missing
which(colSums(is.na(bancoTwo))!= 0)
## X__year_resale_value
## 4
Realizar el análisis utilizando librerias
library(VIM)
library(mice)
resumen_missing <- aggr(bancoTwo, numbers=T)
summary(resumen_missing)
##
## Missings per variable:
## Variable Count
## Manufacturer 0
## Model 0
## Sales_in_thousands 0
## X__year_resale_value 1
## Vehicle_type 0
## Price_in_thousands 0
## Engine_size 0
## Horsepower 0
## Wheelbase 0
## Width 0
## Length 0
## Curb_weight 0
## Fuel_capacity 0
## Fuel_efficiency 0
## Latest_Launch 0
## Power_perf_factor 0
##
## Missings in combinations of variables:
## Combinations Count Percent
## 0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 33 97.058824
## 0:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0 1 2.941176
Para determinar mejor lo patrones de comportamiento de missing se puede utilizar la siguiente función
library(VIM)
matrixplot(bancoTwo)
otra representación
#Con librería mice
library(mice)
md.pattern(bancoTwo, rotate.names = TRUE)
## Manufacturer Model Sales_in_thousands Vehicle_type Price_in_thousands
## 33 1 1 1 1 1
## 1 1 1 1 1 1
## 0 0 0 0 0
## Engine_size Horsepower Wheelbase Width Length Curb_weight Fuel_capacity
## 33 1 1 1 1 1 1 1
## 1 1 1 1 1 1 1 1
## 0 0 0 0 0 0 0
## Fuel_efficiency Latest_Launch Power_perf_factor X__year_resale_value
## 33 1 1 1 1 0
## 1 1 1 1 0 1
## 0 0 0 1 1
La librería visdat permite visualizar missing pero los ordena por tipo de datos
library(visdat)
vis_dat(bancoTwo)
Para obtener columnas con porcentajes de missing
vis_miss(bancoTwo)
Corrección de missing
Eliminar filas o columnas con missin (es recomendable optar por eliminar columnas si el % de missing esta por arriba de 15% <para ralgunos expertos 30%>)
banco_corregido1 <- na.omit(bancoTwo)
str(banco_corregido1)
## 'data.frame': 33 obs. of 16 variables:
## $ Manufacturer : Factor w/ 12 levels "Chrysler","Ford",..: 1 2 2 2 2 2 3 3 3 4 ...
## $ Model : Factor w/ 34 levels "4Runner","Altima",..: 12 7 32 6 24 8 4 21 20 33 ...
## $ Sales_in_thousands : num 13.5 276.7 155.8 125.3 220.7 ...
## $ X__year_resale_value: num 17.32 16.64 13.18 23.57 7.85 ...
## $ Vehicle_type : Factor w/ 2 levels "Car","Passenger": 2 1 1 1 1 1 1 1 1 1 ...
## $ Price_in_thousands : num 28.3 31.9 21.4 36.1 12.1 ...
## $ Engine_size : int 15 19 40 31 38 46 20 32 35 25 ...
## $ Horsepower : int 253 210 150 240 119 220 121 205 210 120 ...
## $ Wheelbase : int 113 1116 1207 119 1175 1385 1032 1094 1191 934 ...
## $ Width : num 74.4 70.2 76.6 78.7 69.4 79.1 68.9 70.4 75.6 66.7 ...
## $ Length : num 208 191 201 205 201 ...
## $ Curb_weight : num 3.56 3.88 3.76 4.81 3.09 ...
## $ Fuel_capacity : num 17 21 26 26 20 25.1 15.3 21.1 20 19 ...
## $ Fuel_efficiency : int 23 19 21 16 23 18 24 19 23 17 ...
## $ Latest_Launch : Factor w/ 31 levels "1/14/2012","1/24/2011",..: 23 20 13 30 1 27 15 7 14 17 ...
## $ Power_perf_factor : num 101.3 87.6 62.1 100 47.4 ...
## - attr(*, "na.action")= 'omit' Named int 15
## ..- attr(*, "names")= chr "15"
# Verificar columnas con missing
which(colSums(is.na(banco_corregido1))!= 0)
## named integer(0)
Aplicando técnicas de imputación Imputación por medidas de tendencia central
library(DMwR2)
banco_corregido2<-centralImputation(bancoTwo) #DMwR, mediana (númerico), moda(no númerico)
str(banco_corregido2)
## 'data.frame': 34 obs. of 16 variables:
## $ Manufacturer : Factor w/ 12 levels "Chrysler","Ford",..: 1 2 2 2 2 2 3 3 3 4 ...
## $ Model : Factor w/ 34 levels "4Runner","Altima",..: 12 7 32 6 24 8 4 21 20 33 ...
## $ Sales_in_thousands : num 13.5 276.7 155.8 125.3 220.7 ...
## $ X__year_resale_value: num 17.32 16.64 13.18 23.57 7.85 ...
## $ Vehicle_type : Factor w/ 2 levels "Car","Passenger": 2 1 1 1 1 1 1 1 1 1 ...
## $ Price_in_thousands : num 28.3 31.9 21.4 36.1 12.1 ...
## $ Engine_size : int 15 19 40 31 38 46 20 32 35 25 ...
## $ Horsepower : int 253 210 150 240 119 220 121 205 210 120 ...
## $ Wheelbase : int 113 1116 1207 119 1175 1385 1032 1094 1191 934 ...
## $ Width : num 74.4 70.2 76.6 78.7 69.4 79.1 68.9 70.4 75.6 66.7 ...
## $ Length : num 208 191 201 205 201 ...
## $ Curb_weight : num 3.56 3.88 3.76 4.81 3.09 ...
## $ Fuel_capacity : num 17 21 26 26 20 25.1 15.3 21.1 20 19 ...
## $ Fuel_efficiency : int 23 19 21 16 23 18 24 19 23 17 ...
## $ Latest_Launch : Factor w/ 31 levels "1/14/2012","1/24/2011",..: 23 20 13 30 1 27 15 7 14 17 ...
## $ Power_perf_factor : num 101.3 87.6 62.1 100 47.4 ...
# Verificar columnas con missing
which(colSums(is.na(banco_corregido2))!= 0)
## named integer(0)
Utilizando otra librería para imputar datos
library(VIM)
banco_corregido3 <- initialise(bancoTwo, method = "median") #media (continuos) mediana (discretos), moda(no númerico)
str(banco_corregido3)
## 'data.frame': 34 obs. of 16 variables:
## $ Manufacturer : Factor w/ 12 levels "Chrysler","Ford",..: 1 2 2 2 2 2 3 3 3 4 ...
## $ Model : Factor w/ 34 levels "4Runner","Altima",..: 12 7 32 6 24 8 4 21 20 33 ...
## $ Sales_in_thousands : num 13.5 276.7 155.8 125.3 220.7 ...
## $ X__year_resale_value: num 17.32 16.64 13.18 23.57 7.85 ...
## $ Vehicle_type : Factor w/ 2 levels "Car","Passenger": 2 1 1 1 1 1 1 1 1 1 ...
## $ Price_in_thousands : num 28.3 31.9 21.4 36.1 12.1 ...
## $ Engine_size : num 15 19 40 31 38 46 20 32 35 25 ...
## $ Horsepower : num 253 210 150 240 119 220 121 205 210 120 ...
## $ Wheelbase : num 113 1116 1207 119 1175 ...
## $ Width : num 74.4 70.2 76.6 78.7 69.4 79.1 68.9 70.4 75.6 66.7 ...
## $ Length : num 208 191 201 205 201 ...
## $ Curb_weight : num 3.56 3.88 3.76 4.81 3.09 ...
## $ Fuel_capacity : num 17 21 26 26 20 25.1 15.3 21.1 20 19 ...
## $ Fuel_efficiency : num 23 19 21 16 23 18 24 19 23 17 ...
## $ Latest_Launch : Factor w/ 31 levels "1/14/2012","1/24/2011",..: 23 20 13 30 1 27 15 7 14 17 ...
## $ Power_perf_factor : num 101.3 87.6 62.1 100 47.4 ...
# Verificar columnas con missing
which(colSums(is.na(banco_corregido3))!= 0)
## named integer(0)
Imputación utilizando neighboor más cercanos
library(DMwR2)
banco_corregido4<-knnImputation(bancoTwo, k=10)
str(banco_corregido4)
## 'data.frame': 34 obs. of 16 variables:
## $ Manufacturer : Factor w/ 12 levels "Chrysler","Ford",..: 1 2 2 2 2 2 3 3 3 4 ...
## $ Model : Factor w/ 34 levels "4Runner","Altima",..: 12 7 32 6 24 8 4 21 20 33 ...
## $ Sales_in_thousands : num 13.5 276.7 155.8 125.3 220.7 ...
## $ X__year_resale_value: num 17.32 16.64 13.18 23.57 7.85 ...
## $ Vehicle_type : Factor w/ 2 levels "Car","Passenger": 2 1 1 1 1 1 1 1 1 1 ...
## $ Price_in_thousands : num 28.3 31.9 21.4 36.1 12.1 ...
## $ Engine_size : int 15 19 40 31 38 46 20 32 35 25 ...
## $ Horsepower : int 253 210 150 240 119 220 121 205 210 120 ...
## $ Wheelbase : int 113 1116 1207 119 1175 1385 1032 1094 1191 934 ...
## $ Width : num 74.4 70.2 76.6 78.7 69.4 79.1 68.9 70.4 75.6 66.7 ...
## $ Length : num 208 191 201 205 201 ...
## $ Curb_weight : num 3.56 3.88 3.76 4.81 3.09 ...
## $ Fuel_capacity : num 17 21 26 26 20 25.1 15.3 21.1 20 19 ...
## $ Fuel_efficiency : int 23 19 21 16 23 18 24 19 23 17 ...
## $ Latest_Launch : Factor w/ 31 levels "1/14/2012","1/24/2011",..: 23 20 13 30 1 27 15 7 14 17 ...
## $ Power_perf_factor : num 101.3 87.6 62.1 100 47.4 ...
# Verificar columnas con missing
which(colSums(is.na(banco_corregido4))!= 0)
## named integer(0)
banco <- read.csv("Car_sales.csv",
sep = ",", stringsAsFactors = TRUE)
# Mostrar datos
head(banco)
# Resumen
summary(banco)
## Manufacturer Model Sales_in_thousands X__year_resale_value
## Lexus :6 4Runner : 1 Min. : 3.334 Min. : 7.85
## Nissan :6 Altima : 1 1st Qu.: 24.093 1st Qu.:13.78
## Ford :5 Cherokee : 1 Median : 46.941 Median :17.71
## Toyota :4 CR-V : 1 Mean : 77.518 Mean :19.11
## Honda :3 ES300 : 1 3rd Qu.: 80.380 3rd Qu.:23.00
## Jeep :3 Expedition: 1 Max. :540.561 Max. :40.38
## (Other):7 (Other) :28 NA's :1
## Vehicle_type Price_in_thousands Engine_size Horsepower
## Car :18 Min. :11.53 Min. :15.00 Min. :110.0
## Passenger:16 1st Qu.:21.46 1st Qu.:21.00 1st Qu.:150.0
## Median :26.32 Median :30.00 Median :197.5
## Mean :27.69 Mean :29.32 Mean :191.4
## 3rd Qu.:31.82 3rd Qu.:34.50 3rd Qu.:220.0
## Max. :60.10 Max. :46.00 Max. :300.0
##
## Wheelbase Width Length Curb_weight Fuel_capacity
## Min. : 103 Min. :66.50 Min. :152.0 Min. :2.580 Min. :13.20
## 1st Qu.:1002 1st Qu.:69.60 1st Qu.:180.2 1st Qu.:3.314 1st Qu.:18.50
## Median :1061 Median :71.20 Median :189.7 Median :3.791 Median :20.00
## Mean : 920 Mean :71.98 Mean :188.5 Mean :3.732 Mean :20.21
## 3rd Qu.:1122 3rd Qu.:74.78 3rd Qu.:196.2 3rd Qu.:3.943 3rd Qu.:21.00
## Max. :1385 Max. :79.90 Max. :224.5 Max. :5.401 Max. :30.00
##
## Fuel_efficiency Latest_Launch Power_perf_factor
## Min. :15.00 10/5/2012: 2 Min. : 47.39
## 1st Qu.:19.00 3/7/2011 : 2 1st Qu.: 62.60
## Median :21.00 5/6/2011 : 2 Median : 79.21
## Mean :21.21 1/14/2012: 1 Mean : 80.08
## 3rd Qu.:23.00 1/24/2011: 1 3rd Qu.: 90.23
## Max. :30.00 1/4/2012 : 1 Max. :125.01
## (Other) :25
Para todas las columnas
boxplot(banco)
head(banco)
Para Sales_in_thousands
boxplot(banco$Sales_in_thousands)
Para X__year_resale_value
boxplot(banco$X__year_resale_value)
Para Price_in_thousands
#Gráfico de cajas y bigotes
boxplot(banco$Price_in_thousands)
Para Engine_size
boxplot(banco$Engine_size)
Para Horsepower
boxplot(banco$Horsepower)
Para Wheelbase
#Gráfico de cajas y bigotes
boxplot(banco$Wheelbase)
Para Width
boxplot(banco$Width)
Para Length
boxplot(banco$Length)
Para Curb_weight
#Gráfico de cajas y bigotes
boxplot(banco$Curb_weight)
Para Fuel_capacity
boxplot(banco$Fuel_capacity)
Para Fuel_efficiency
#Gráfico de cajas y bigotes
boxplot(banco$Fuel_efficiency)
Para Power_perf_factor
#Gráfico de cajas y bigotes
boxplot(banco$Power_perf_factor)
Según los resultados, se identifica valores atípicos. Vamos a identificarlo y plantear estrategia de corrección
# Calcular el RIC (RIC = Q3 - Q1)
q1 <- quantile(banco$Sales_in_thousands, 0.25)
q3 <- quantile(banco$Sales_in_thousands, 0.75)
RIC <- q3-q1
RIC
## 75%
## 56.2875
# Limites o bigotes (Superior e inferior)
bigote_inferior <- q1-1.5*RIC
bigote_inferior
## 25%
## -60.3385
bigote_superior <- q3+1.5*RIC
bigote_superior
## 75%
## 164.8115
# Identificar lo valores atípicos
outliers_det <- banco$Sales_in_thousands[banco$Sales_in_thousands < bigote_inferior | banco$Sales_in_thousands > bigote_superior]
outliers_det
## [1] 276.747 220.650 540.561
Correción
Eliminar los atípicos
telco_sin_atipicos <- banco[!banco$Sales_in_thousands %in% outliers_det,]
telco_sin_atipicos
Para confirmar vamos a realizar un gráfico de cajas con la nueva data
boxplot(telco_sin_atipicos$Sales_in_thousands)
La transformación y estandarización de variables son técnicas comunes utilizadas en el análisis de datos para mejorar la interpretación de los datos y garantizar que las variables sean comparables entre sí.
#
banco<-read.csv("Car_sales.csv", sep = ",", encoding = "latin1", stringsAsFactors = T)
head(banco)
Transformación de raíz cuadrada:
Esta transformación se utiliza para reducir la dispersión de los datos cuando estos tienen una distribución con una varianza que aumenta con el nivel medio de la variable. También puede ayudar a reducir la asimetría.
# Original
hist(banco$Horsepower, 12)
Para sacar la raiz cuadrada, simplemente se puede utilizar la función sqrt
sqrt(banco$Horsepower)
## [1] 15.90597 14.49138 12.24745 15.49193 10.90871 14.83240 11.00000 14.31782
## [9] 14.49138 10.95445 13.78405 13.96424 14.49138 15.00000 17.32051 17.02939
## [17] 15.16575 14.83240 17.32051 14.49138 13.03840 14.66288 11.83216 12.44990
## [25] 14.89966 10.48809 14.14214 10.48809 12.24745 13.60147 11.91638 13.92839
## [33] 12.12436 12.24745
Graficamente
hist(sqrt(banco$Horsepower))
Transformación de variables
Se aplica cuando los datos tienen una distribución sesgada hacia la izquierda (asimetría negativa). La transformación exponencial puede ayudar a corregir la asimetría y hacer que los datos se aproximen más a una distribución simétrica.
en r para poder obtener esta transformación, se debe utilizar la función exp()
exp(banco$Horsepower)
## [1] 7.524955e+109 1.591627e+91 1.393710e+65 1.700888e+104 4.797813e+51
## [6] 3.505791e+95 3.545131e+52 1.072430e+89 1.591627e+91 1.304181e+52
## [11] 3.280587e+82 4.868823e+84 1.591627e+91 5.203055e+97 1.942426e+130
## [16] 8.818602e+125 7.722018e+99 3.505791e+95 1.942426e+130 1.591627e+91
## [21] 6.761794e+73 2.362183e+93 6.327432e+60 2.068448e+67 2.590449e+96
## [26] 5.920972e+47 7.225974e+86 5.920972e+47 1.393710e+65 2.210442e+80
## [31] 4.675375e+61 1.791140e+84 6.938871e+63 1.393710e+65
para poder observarlo graficamente se tiene:
hist(exp(banco$Horsepower))
Forma 2
Horsepower_exp<- exp(banco$Horsepower)
hist(Horsepower_exp)
Transformación logarítmica:
Esta transformación se utiliza cuando los datos presentan una distribución sesgada hacia la derecha (asimetría positiva). La transformación logarítmica reduce la asimetría y puede facilitar la interpretación de los datos.
Para la transformación logaritmica, utilizar log (dentro de los argumentos se puede cambiar la base)
log(banco$Horsepower)
## [1] 5.533389 5.347108 5.010635 5.480639 4.779123 5.393628 4.795791 5.323010
## [9] 5.347108 4.787492 5.247024 5.273000 5.347108 5.416100 5.703782 5.669881
## [17] 5.438079 5.393628 5.703782 5.347108 5.135798 5.370638 4.941642 5.043425
## [25] 5.402677 4.700480 5.298317 4.700480 5.010635 5.220356 4.955827 5.267858
## [33] 4.990433 5.010635
graficamente
hist(log(banco$Horsepower))
Cambiar la base 2
log(banco$Horsepower, base=2)
## [1] 7.982994 7.714246 7.228819 7.906891 6.894818 7.781360 6.918863 7.679480
## [9] 7.714246 6.906891 7.569856 7.607330 7.714246 7.813781 8.228819 8.179909
## [17] 7.845490 7.781360 8.228819 7.714246 7.409391 7.748193 7.129283 7.276124
## [25] 7.794416 6.781360 7.643856 6.781360 7.228819 7.531381 7.149747 7.599913
## [33] 7.199672 7.228819
graficamente
hist(log(banco$Horsepower, base=2))
Comparación de transformaciones
#Obtener solo tranaformaciones
Horsepower_sqrt <- sqrt(banco$Horsepower)
Horsepower_exp <- exp(banco$Horsepower)
Horsepower_ln <- log(banco$Horsepower)
Horsepower_log2 <- log(banco$Horsepower, base=2)
Horsepower_log5 <- log(banco$Horsepower, base=5)
Ver graficamente cada una:
par(mfrow=c(3,2))
hist(banco$Horsepower)
hist(Horsepower_sqrt)
hist(Horsepower_exp)
hist(Horsepower_ln)
hist(Horsepower_log2)
hist(Horsepower_log5)
par(mfrow=c(1,1))
Este tipo de transformaciones, busca que los datos sean simétricos (distribución forma de campana) o que se cumpla un supuesto estadístico La visualización de la distribución puede mejorarse con la gráfica de densidad
par(mfrow=c(3,2))
plot(density(banco$Horsepower), main = "Distribución de caballos de fuerza originales")
plot(density(Horsepower_sqrt), main = "Distribución de caballos de fuerza transformadas - sqrt")
plot(density(Horsepower_exp), main = "Distribución de caballos de fuerza transformadas - exp")
plot(density(Horsepower_ln), main = "Distribución de caballos de fuerza transformadas - ln")
plot(density(Horsepower_log2), main = "Distribución de caballos de fuerza transformadas - log2")
plot(density(Horsepower_log5), main = "Distribución de caballos de fuerza transformadas - log5")
par(mfrow=c(1,1))
Se puede realizar un análisis general de las variables originales y verificar su comportmiento, a partir de allí se puede aplicar la transformación más adecuado según objetivo.
gráfica general
library(PerformanceAnalytics)
chart.Correlation(cor(banco[,7:9]), histogram = TRUE)
Estandarización de variables:
La estandarización de variables, también conocida como normalización, implica transformar los valores de una variable para que tengan una media de cero y una desviación estándar de uno. Esto se logra restando la media de la variable a cada valor y dividiendo por la desviación estándar.
La estandarización es útil cuando se desea comparar variables que están en diferentes escalas o unidades. Al estandarizar las variables, se eliminan las diferencias en las escalas y se asegura que todas las variables tengan la misma escala relativa.
Por ejemplo, si tienes un conjunto de variables con diferentes unidades de medida, como peso en kilogramos y altura en metros, puedes estandarizar ambas variables para que sean comparables y no se vean afectadas por las diferencias en las unidades.
Metodo 1: por partes
banco$Horsepower
## [1] 253 210 150 240 119 220 121 205 210 120 190 195 210 225 300 290 230 220 300
## [20] 210 170 215 140 155 222 110 200 110 150 185 142 194 147 150
media_Horsepower <- mean(banco$Horsepower)
media_Horsepower
## [1] 191.4118
desv_est <- sd(banco$Horsepower)
desv_est
## [1] 52.06239
Horsepower_estandar <- (banco$Horsepower-media_Horsepower) / desv_est
Horsepower_estandar
## [1] 1.18296991 0.35703772 -0.79542580 0.93326948 -1.39086529 0.54911497
## [7] -1.35244984 0.26099909 0.35703772 -1.37165756 -0.02711679 0.06892184
## [13] 0.35703772 0.64515360 2.08573300 1.89365574 0.74119222 0.54911497
## [19] 2.08573300 0.35703772 -0.41127130 0.45307634 -0.98750306 -0.69938718
## [25] 0.58753042 -1.56373482 0.16496046 -1.56373482 -0.79542580 -0.12315542
## [31] -0.94908760 0.04971411 -0.85304898 -0.79542580
Metodo 2: Directo
media_Horsepower_estandar2 <- (banco$Horsepower-mean(banco$Horsepower))/sd(banco$Horsepower)
media_Horsepower_estandar2
## [1] 1.18296991 0.35703772 -0.79542580 0.93326948 -1.39086529 0.54911497
## [7] -1.35244984 0.26099909 0.35703772 -1.37165756 -0.02711679 0.06892184
## [13] 0.35703772 0.64515360 2.08573300 1.89365574 0.74119222 0.54911497
## [19] 2.08573300 0.35703772 -0.41127130 0.45307634 -0.98750306 -0.69938718
## [25] 0.58753042 -1.56373482 0.16496046 -1.56373482 -0.79542580 -0.12315542
## [31] -0.94908760 0.04971411 -0.85304898 -0.79542580
Metodo 3: apoyarse en la funciones de R
R tiene multiple funciones para estandarizacion, la clasica es la funcion scale
Horsepower_estandar3 <- scale(banco$Horsepower)
Horsepower_estandar3
## [,1]
## [1,] 1.18296991
## [2,] 0.35703772
## [3,] -0.79542580
## [4,] 0.93326948
## [5,] -1.39086529
## [6,] 0.54911497
## [7,] -1.35244984
## [8,] 0.26099909
## [9,] 0.35703772
## [10,] -1.37165756
## [11,] -0.02711679
## [12,] 0.06892184
## [13,] 0.35703772
## [14,] 0.64515360
## [15,] 2.08573300
## [16,] 1.89365574
## [17,] 0.74119222
## [18,] 0.54911497
## [19,] 2.08573300
## [20,] 0.35703772
## [21,] -0.41127130
## [22,] 0.45307634
## [23,] -0.98750306
## [24,] -0.69938718
## [25,] 0.58753042
## [26,] -1.56373482
## [27,] 0.16496046
## [28,] -1.56373482
## [29,] -0.79542580
## [30,] -0.12315542
## [31,] -0.94908760
## [32,] 0.04971411
## [33,] -0.85304898
## [34,] -0.79542580
## attr(,"scaled:center")
## [1] 191.4118
## attr(,"scaled:scale")
## [1] 52.06239
La ventaja de la funcion de R, es que se puede enviar todo el caso
banco_cuanti_scale <- scale(banco[,7:9])
banco_cuanti_scale
## Engine_size Horsepower Wheelbase
## [1,] -1.75608734 1.18296991 -2.08683465
## [2,] -1.26568102 0.35703772 0.50693418
## [3,] 1.30895216 -0.79542580 0.74226116
## [4,] 0.20553794 0.93326948 -2.07131859
## [5,] 1.06374900 -1.39086529 0.65950881
## [6,] 2.04456164 0.54911497 1.20257108
## [7,] -1.14307944 -1.35244984 0.28970927
## [8,] 0.32813952 0.26099909 0.45004194
## [9,] 0.69594426 0.35703772 0.70088499
## [10,] -0.53007154 -1.37165756 0.03628021
## [11,] 1.30895216 -0.02711679 0.24316107
## [12,] 1.30895216 0.06892184 0.35953156
## [13,] 0.08293636 0.35703772 0.33884347
## [14,] 0.08293636 0.64515360 0.47073002
## [15,] 1.18635058 2.08573300 0.47073002
## [16,] 1.30895216 1.89365574 0.52245024
## [17,] 1.43155374 0.74119222 0.52245024
## [18,] -1.14307944 0.54911497 -2.11269476
## [19,] 0.08293636 2.08573300 -2.07131859
## [20,] -1.14307944 0.35703772 0.50693418
## [21,] 0.08293636 -0.41127130 0.52245024
## [22,] -0.28486838 0.45307634 -2.09200668
## [23,] -1.38828260 -0.98750306 0.20178490
## [24,] -1.14307944 -0.69938718 0.28712326
## [25,] 0.08293636 0.58753042 0.42159582
## [26,] 0.45074110 -1.56373482 0.52245024
## [27,] 0.45074110 0.16496046 0.36987560
## [28,] 0.45074110 -1.56373482 0.31815539
## [29,] -0.65267312 -0.79542580 0.55089636
## [30,] -0.65267312 -0.12315542 -2.06873258
## [31,] -0.65267312 -0.94908760 0.29229528
## [32,] 0.08293636 0.04971411 0.57417046
## [33,] -1.14307944 -0.85304898 0.07507037
## [34,] -1.14307944 -0.79542580 0.34401550
## attr(,"scaled:center")
## Engine_size Horsepower Wheelbase
## 29.32353 191.41176 919.97059
## attr(,"scaled:scale")
## Engine_size Horsepower Wheelbase
## 8.156502 52.062385 386.695988
boxplot(banco_cuanti_scale)
\[ X_{norm}=\frac{\left(X_i-X_{\min }\right)}{X_{\max }-X_{\min }} \] Metodo 1:
Horsepower_normal <- (banco$Horsepower-min(banco$Horsepower))/(max(banco$Horsepower)-min(banco$Horsepower))
Horsepower_normal
## [1] 0.75263158 0.52631579 0.21052632 0.68421053 0.04736842 0.57894737
## [7] 0.05789474 0.50000000 0.52631579 0.05263158 0.42105263 0.44736842
## [13] 0.52631579 0.60526316 1.00000000 0.94736842 0.63157895 0.57894737
## [19] 1.00000000 0.52631579 0.31578947 0.55263158 0.15789474 0.23684211
## [25] 0.58947368 0.00000000 0.47368421 0.00000000 0.21052632 0.39473684
## [31] 0.16842105 0.44210526 0.19473684 0.21052632
Metodo 2:
library(scales)
rescale(banco$Horsepower)
## [1] 0.75263158 0.52631579 0.21052632 0.68421053 0.04736842 0.57894737
## [7] 0.05789474 0.50000000 0.52631579 0.05263158 0.42105263 0.44736842
## [13] 0.52631579 0.60526316 1.00000000 0.94736842 0.63157895 0.57894737
## [19] 1.00000000 0.52631579 0.31578947 0.55263158 0.15789474 0.23684211
## [25] 0.58947368 0.00000000 0.47368421 0.00000000 0.21052632 0.39473684
## [31] 0.16842105 0.44210526 0.19473684 0.21052632
Aplicando a todo el caso (var cuantitativas) la funcion rescale solo se permite aplicarse a vectores, no es posible directamente apicar al data frame.
library(caret)
## Loading required package: lattice
pre_procesamiento <- preProcess(banco[,4:9]) # Asi por defecto muestra la estandarizacion z
predict(pre_procesamiento, banco[,4:9])
library(caret)
pre_procesamiento <- preProcess(banco[,4:9], method = "range") # Asi por defecto muestra la estandarizacion z
predict(pre_procesamiento, banco[,4:9])
Que es regresión lineal simple?
La regresión lineal simple (RLS) es un modelo estadístico que se utiliza para predecir una variable dependiente continua (Y) a partir de una única variable independiente (X). La RLS busca establecer una relación lineal entre las dos variables.
Ingresamos los datos
datos <- read.csv("Car_sales.csv")
# Seleccionar las columnas
dataPredic <- datos[, c("Wheelbase", "Engine_size")]
# Ver el data frame
str(datos)
## 'data.frame': 34 obs. of 16 variables:
## $ Manufacturer : chr "Chrysler" "Ford" "Ford" "Ford" ...
## $ Model : chr "LHS" "Explorer" "Windstar" "Expedition" ...
## $ Sales_in_thousands : num 13.5 276.7 155.8 125.3 220.7 ...
## $ X__year_resale_value: num 17.32 16.64 13.18 23.57 7.85 ...
## $ Vehicle_type : chr "Passenger" "Car" "Car" "Car" ...
## $ Price_in_thousands : num 28.3 31.9 21.4 36.1 12.1 ...
## $ Engine_size : int 15 19 40 31 38 46 20 32 35 25 ...
## $ Horsepower : int 253 210 150 240 119 220 121 205 210 120 ...
## $ Wheelbase : int 113 1116 1207 119 1175 1385 1032 1094 1191 934 ...
## $ Width : num 74.4 70.2 76.6 78.7 69.4 79.1 68.9 70.4 75.6 66.7 ...
## $ Length : num 208 191 201 205 201 ...
## $ Curb_weight : num 3.56 3.88 3.76 4.81 3.09 ...
## $ Fuel_capacity : num 17 21 26 26 20 25.1 15.3 21.1 20 19 ...
## $ Fuel_efficiency : int 23 19 21 16 23 18 24 19 23 17 ...
## $ Latest_Launch : chr "5/8/2012" "4/25/2012" "2/25/2012" "9/14/2012" ...
## $ Power_perf_factor : num 101.3 87.6 62.1 100 47.4 ...
head(datos)
Pasos para construir un modelo de regresión:
Paso 1: Determinar las variables X,Y
* Variable independiente (X): Inversión * Variable dependiente (y): ganancia
Paso 2: Evaluar la relación entre variables (Correlación) graficamente
Diagrama de dispersión o puntos
plot(x=dataPredic$Wheelbase,y=dataPredic$Engine_size)
pairs(dataPredic)
Coeficiente de correlación
# Mediante la función cor
cor(dataPredic) # Matriz de correlaciones
## Wheelbase Engine_size
## Wheelbase 1.0000000 0.3789151
## Engine_size 0.3789151 1.0000000
r = 0.3789151
Interpretación: Existe correlación positiva
entre la Wheelbase y la Engine_size
Como en este caso el coeficiente de correlación es superior a 0.35, es viable la regresión.
Paso 3: Regresión
Regresión lineal simple
Para obtener el modelo, se va a utilizar una función de R > lm
# lm, notación: Y ~ X, data=
modelo1 <- lm(Wheelbase ~ Engine_size , data=dataPredic)
# Resumen de resultados
summary(modelo1)
##
## Call:
## lm(formula = Wheelbase ~ Engine_size, data = dataPredic)
##
## Residuals:
## Min 1Q Median 3Q Max
## -831.09 -3.75 122.41 205.63 381.48
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 393.197 235.817 1.667 0.1052
## Engine_size 17.964 7.756 2.316 0.0271 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 363.4 on 32 degrees of freedom
## Multiple R-squared: 0.1436, Adjusted R-squared: 0.1168
## F-statistic: 5.365 on 1 and 32 DF, p-value: 0.02711
#Coefficients:
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 393.197 235.817 1.667 0.1052
#Engine_size 17.964 7.756 2.316 0.0271 *
#---
#Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
#Residual standard error: 363.4 on 32 degrees of freedom
#Multiple R-squared: 0.1436, Adjusted R-squared: 0.1168
#F-statistic: 5.365 on 1 and 32 DF, p-value: 0.02711
Modelo final con los resultados:
Modelo general
$ = 393.197 +17.964 X $
Modelo para el caso:
\(\hat{ganancia} = 393.197 + 17.964 Inversión\)
# lm, notación: Y ~ X, data=
modeloMulti <- lm(banco$Engine_size ~ banco$Wheelbase + banco$Horsepower)
# Resumen de resultados
summary(modeloMulti)
##
## Call:
## lm(formula = banco$Engine_size ~ banco$Wheelbase + banco$Horsepower)
##
## Residuals:
## Min 1Q Median 3Q Max
## -13.6653 -4.5908 0.0269 6.3067 10.5936
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.884339 6.628314 1.039 0.3070
## banco$Wheelbase 0.010897 0.003371 3.233 0.0029 **
## banco$Horsepower 0.064855 0.025036 2.590 0.0145 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.061 on 31 degrees of freedom
## Multiple R-squared: 0.296, Adjusted R-squared: 0.2506
## F-statistic: 6.516 on 2 and 31 DF, p-value: 0.004341
#Coefficients:
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 33.847570 15.846124 2.136 0.0407 *
#banco$Wheelbase -0.013571 0.007661 -1.771 0.0863 .
#banco$Horsepower -0.003086 0.060851 -0.051 0.9599
#---
#Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
#Residual standard error: 16.07 on 31 degrees of freedom
#Multiple R-squared: 0.1003, Adjusted R-squared: 0.04227
#F-statistic: 1.728 on 2 and 31 DF, p-value: 0.1943
#Coefficients:
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 33.847570 15.846124 2.136 0.0407 *
#banco$Wheelbase -0.013571 0.007661 -1.771 0.0863 .
#banco$Horsepower -0.003086 0.060851 -0.051 0.9599
#---
#Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
#Residual standard error: 16.07 on 31 degrees of freedom
#Multiple R-squared: 0.1003, Adjusted R-squared: 0.04227
#F-statistic: 1.728 on 2 and 31 DF, p-value: 0.1943