La directora de marketing de una importante compañía de telefonía móvil, obtuvo los registros de los minutos consumidos por una muestra aleatoria de 150 abonados al plan más barato de la empresa (400 minutos mensuales). La siguiente tabla contiene una lista de los minutos consumidos por cada abonado de la muestra durante un mes. ¿Qué indican los datos?.
#se crea table como txt
minutos <-read.table("C:/Users/Rodrigo Aros/Desktop/minutos_consum.txt",header=T)
# muestro los primeros registros con head
head(minutos)
## min_consumidos
## 1 394
## 2 264
## 3 362
## 4 378
## 5 332
## 6 313
Para responder a la pregunta de interés: ¿qué indican los datos?, utilizando el software R, deberá realizar un análisis descriptivo de esta muestra, que incluya gráficos apropiados y medidas descriptivas (tendencia central, posición, dispersión y forma); interpretando los resultados obtenidos (en el contexto del problema).
Para ver algunas medidas descriptivas uso summary. En donde obtengo valores como:min = 261, max = 456 y mediana = 348.5.- Esto quiere decir, que existe usuarios que consumen mas de 400 minutos en este plan y que como promedio de los 150 usuarios, el promedio de consumo en minutos es de 348.9 minutos.
summary(minutos)
## min_consumidos
## Min. :261.0
## 1st Qu.:327.5
## Median :348.5
## Mean :348.9
## 3rd Qu.:369.8
## Max. :456.0
Creo grafico de tallo y , para comprender de forma rapida la distribución, que aparentemente tiene dsitribución normal.
x=minutos$min_consumidos
stem(x)
##
## The decimal point is 1 digit(s) to the right of the |
##
## 26 | 14
## 27 | 56
## 28 | 2899
## 29 | 00122559
## 30 | 3457899
## 31 | 1223459
## 32 | 125555679
## 33 | 22333455666777789
## 34 | 00233334445566777889
## 35 | 001223344556899
## 36 | 112234444455555556689
## 37 | 002234444778
## 38 | 23367899
## 39 | 33445688
## 40 | 00367
## 41 |
## 42 | 169
## 43 |
## 44 |
## 45 | 56
De mejor mas certera, utilizo funciones para realizar histograma y box plot. En donde es posible apreciar la distribución.
# con funcion puedo configurar graficos con su numero de columnas.
par(mfrow=c(3,2))
hist(x)
boxplot(x)
Según lo que se puede apreciar en la Tabla de Frecuencias aproximadamente el 10 % de los usuarios de este plan consumen mas de 393,7 minutos. El 90 % restantes fluctuan entre 261 a 397 minutos.
library(fdth)
tabla1=fdt(x,breaks="Sturges")
tabla1
## Class limits f rf rf(%) cf cf(%)
## [258.39,280.853) 4 0.03 2.67 4 2.67
## [280.853,303.317) 13 0.09 8.67 17 11.33
## [303.317,325.78) 19 0.13 12.67 36 24.00
## [325.78,348.243) 39 0.26 26.00 75 50.00
## [348.243,370.707) 39 0.26 26.00 114 76.00
## [370.707,393.17) 20 0.13 13.33 134 89.33
## [393.17,415.633) 11 0.07 7.33 145 96.67
## [415.633,438.097) 3 0.02 2.00 148 98.67
## [438.097,460.56) 2 0.01 1.33 150 100.00
plot(tabla1, type="fh")
plot(tabla1, type="cfh")
Presento estadisticos que me ayudan a comprender de mejor forma distribución de los datos
var(x)
## [1] 1293.509
sd(x)
## [1] 35.96538
quantile(x,seq(0.1,0.9,by=0.1))
## 10% 20% 30% 40% 50% 60% 70% 80% 90%
## 298.6 320.6 334.7 343.0 348.5 359.0 365.0 374.0 394.0
library(e1071)
skewness(x)
## [1] 0.08801444
kurtosis(x)
## [1] 0.2325985
Una compañía local de energía eléctrica seleccionó una resistencia típica para desarrollar un modelo empírico para el consumo de energía (en kilowatts por día) como una función de la temperatura promedio diaria durante los meses de invierno. Se obtuvo la siguiente información durante un período de 15 días.
x=c(0,8,7.5,13.5,14,8.5,4.5,-11,7.5,8.5,1.5,0.5,2,-6,-4)
y=c(70,57,60,63,57,66,67,107,96,88,80,64,79,82,97)
par(mfrow=c(3,2))
Ajuste del modelo
modelo <- lm(y ~ x)
Resumen del Modelo
summary(modelo)
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -16.149 -8.784 -2.489 5.944 26.054
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 80.8773 3.6639 22.07 1.09e-11 ***
## x -1.4575 0.4733 -3.08 0.00879 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 12.5 on 13 degrees of freedom
## Multiple R-squared: 0.4218, Adjusted R-squared: 0.3773
## F-statistic: 9.484 on 1 and 13 DF, p-value: 0.008786
Gráfico de dispersión con línea de regresión
plot(x, y, main = "Gráfico de dispersión con línea de regresión", xlab = "Temperatura", ylab = "Consumo Energia")
abline(modelo, col = "red")
Interpretación de las constantes del modelo
coeficientes <- coef(modelo)
intercepto <- coeficientes[1]
pendiente <- coeficientes[2]
print(paste("Intercepto:", intercepto))
## [1] "Intercepto: 80.8773422562141"
print(paste("Pendiente:", pendiente))
## [1] "Pendiente: -1.45745697896749"
El “intercepto” en el modelo de regresión lineal es el valor de la variable dependiente (en este caso, y), cuando todas las variables independientes (en este caso, x) son iguales a cero. En otras palabras, el intercepto es el valor de y cuando x es cero. Para el modelo de regresión lineal expresado. Considerando que x = Temperatura e y = Consumo de Energía, el “Intercepto: 80.8773422562141” significa que cuando la temperatura es igual a cero, el valor estimado de Consumo de Energía es aproximadamente 80.88.-
La “pendiente” en el modelo, nos indica en cuánto cambia la variable dependiente (en este caso, y = Consumo de Energía) cuando la variable independiente (Temperatura) aumenta en una unidad. En otras palabras, la pendiente representa la tasa de cambio en y con respecto a x.En este modelo de regresión lineal, la “Pendiente: -1.45745697896749” significa que por cada unidad que aumenta , el valor estimado de y disminuye en aproximadamente 1.46 unidades.
En resumen se puede apreciar que cuando la temperatura diaria aumenta, el consumo de energìa disminuye; al contrario cuando la temeperatura diaria disminuye, el consumo energetico aumenta. Por tanto hay una relación inversa.
Para calcular estimacion puntual en -2.5ºC y 20ºC, utilizo funcion predict:
modelo <- lm(y ~ x)
temperaturas <- c(-2.5, 20)
estimaciones <- predict(modelo, newdata = data.frame(x = temperaturas))
# Mostrar las estimaciones
for(i in 1:length(temperaturas)) {
cat("Estimación puntual para temperatura", temperaturas[i], "°C:", estimaciones[i], "\n")
}
## Estimación puntual para temperatura -2.5 °C: 84.52098
## Estimación puntual para temperatura 20 °C: 51.7282
Para la variación promedio en el consumo de energía cuando la temperatura media es de 0ºC., su aplicara el siguiente codigo:
modelo <- lm(y ~ x)
temperatura_media <- 0
# Se crea un nuevo conjunto de datos con la temperatura media deseada
nuevo_datos <- data.frame(x = temperatura_media)
# Calcular la predicción del consumo de energía para la temperatura media deseada
prediccion <- predict(modelo, newdata = nuevo_datos, interval = "confidence", level = 0.99)
# Resultado para la prediccion consultada
print(prediccion)
## fit lwr upr
## 1 80.87734 69.84074 91.91395
fit: Este es el valor estimado del consumo de energía promedio cuando la temperatura media es de 0°C. En este caso, el valor estimado es de aproximadamente 80.88 unidades.
lwr: Este es el límite inferior del intervalo de confianza del 99%. Indica el valor más bajo que se espera que tenga el consumo de energía promedio cuando la temperatura media es de 0°C. En este caso, el límite inferior es aproximadamente 69.84 unidades.
upr: Este es el límite superior del intervalo de confianza del 99%. Indica el valor más alto que se espera que tenga el consumo de energía promedio cuando la temperatura media es de 0°C. En este caso, el límite superior es aproximadamente 91.91 unidades.
En resumen estamos 99% seguros de que el consumo de energía promedio, cuando la temperatura media es de 0°C, estará entre aproximadamente 69.84 y 91.91 unidades.
Respecto al cambio esperado en el consumo de energía que corresponde a un aumento de 1 (ºC) en la temperatura.
# Modelo de regresión lineal ya ajustado
modelo <- lm(y ~ x)
# Realizar prueba t sobre el coeficiente de x
prueba_t <- summary(modelo)$coefficients["x", "t value"]
# Calcular el p-valor de la prueba t
p_valor <- 2 * pt(abs(prueba_t), df = length(x) - 2, lower.tail = FALSE)
# Imprimir el resultado de la prueba t
print(p_valor)
## [1] 0.008785643