# Cargar el archivo utilizando read.csv()
datos_ecommerce <- read.csv("C:/Users/joseb/OneDrive/Escritorio/A/R/Ecommerce.txt", header = TRUE)

# Ver las primeras líneas de los datos
head(datos_ecommerce)
##                           Email
## 1     mstephenson@fernandez.com
## 2             hduke@hotmail.com
## 3              pallen@yahoo.com
## 4       riverarebecca@gmail.com
## 5 mstephens@davidson-herman.com
## 6        alvareznancy@lucas.biz
##                                                      Address           Avatar
## 1               835 Frank Tunnel\nWrightmouth, MI 82180-9605           Violet
## 2             4547 Archer Common\nDiazchester, CA 06566-8576        DarkGreen
## 3 24645 Valerie Unions Suite 582\nCobbborough, DC 99414-7564           Bisque
## 4           1414 David Throughway\nPort Jason, OH 22070-1220      SaddleBrown
## 5    14023 Rodriguez Passage\nPort Jacobville, PR 37242-1057 MediumAquaMarine
## 6    645 Martha Park Apt. 611\nJeffreychester, MN 67218-7250      FloralWhite
##   Avg..Session.Length Time.on.App Time.on.Website Length.of.Membership
## 1            34.49727    12.65565        39.57767             4.082621
## 2            31.92627    11.10946        37.26896             2.664034
## 3            33.00091    11.33028        37.11060             4.104543
## 4            34.30556    13.71751        36.72128             3.120179
## 5            33.33067    12.79519        37.53665             4.446308
## 6            33.87104    12.02693        34.47688             5.493507
##   Yearly.Amount.Spent
## 1            587.9511
## 2            392.2049
## 3            487.5475
## 4            581.8523
## 5            599.4061
## 6            637.1024
# De esta forma busco y borro filas que tengan información vacia

datos_ecommerce[!complete.cases(datos_ecommerce),]
## [1] Email                Address              Avatar              
## [4] Avg..Session.Length  Time.on.App          Time.on.Website     
## [7] Length.of.Membership Yearly.Amount.Spent 
## <0 rows> (or 0-length row.names)
#no se observan filas vacias o con falta de informacion
# Veré qué tipo de variables tiene la data

str(datos_ecommerce)
## 'data.frame':    500 obs. of  8 variables:
##  $ Email               : chr  "mstephenson@fernandez.com" "hduke@hotmail.com" "pallen@yahoo.com" "riverarebecca@gmail.com" ...
##  $ Address             : chr  "835 Frank Tunnel\nWrightmouth, MI 82180-9605" "4547 Archer Common\nDiazchester, CA 06566-8576" "24645 Valerie Unions Suite 582\nCobbborough, DC 99414-7564" "1414 David Throughway\nPort Jason, OH 22070-1220" ...
##  $ Avatar              : chr  "Violet" "DarkGreen" "Bisque" "SaddleBrown" ...
##  $ Avg..Session.Length : num  34.5 31.9 33 34.3 33.3 ...
##  $ Time.on.App         : num  12.7 11.1 11.3 13.7 12.8 ...
##  $ Time.on.Website     : num  39.6 37.3 37.1 36.7 37.5 ...
##  $ Length.of.Membership: num  4.08 2.66 4.1 3.12 4.45 ...
##  $ Yearly.Amount.Spent : num  588 392 488 582 599 ...
# Email:
# Tipo: Carácter (chr).
# Descripción: Parece ser la dirección de correo electrónico de los usuarios.
# Address:
# Tipo: Carácter (chr).
# Descripción: Direcciones postales de los usuarios.
# Avatar:
# Tipo: Carácter (chr).
# Descripción: Posiblemente se refiere a algún tipo de identificación visual o color asociado al usuario.
# Avg. Session Length:
# Tipo: Numérico (num).
# Descripción: Promedio de la duración de las sesiones de los usuarios.
# Time on App:
# Tipo: Numérico (num).
# Descripción: Tiempo promedio que los usuarios pasan en una aplicación.
# Time on Website:
# Tipo: Numérico (num).
# Descripción: Tiempo promedio que los usuarios pasan en un sitio web.
# Length of Membership:
# Tipo: Numérico (num).
# Descripción: Duración de la membresía del usuario, probablemente en años.
# Yearly Amount Spent:
# Tipo: Numérico (num).
# Descripción: Cantidad gastada por el usuario en un año.
# 3.- Realiza una estadística descriptiva de las variables en estudio (excluyendo email, Address y Avatar). Para las variables cuantitativas utiliza medidas de localización, dispersión y forma. Interpreta los resultados.

# Cargo las bibliotecas necesarias
library(moments)  # para calcular skewness y kurtosis

# Seleccionamos las columnas de interés
vars_of_interest <- datos_ecommerce[, c("Avg..Session.Length", "Time.on.App", "Time.on.Website", "Length.of.Membership", "Yearly.Amount.Spent")]

# CalculO las medidas
measures <- data.frame(
  Variable = colnames(vars_of_interest),
  Mean = sapply(vars_of_interest, mean),
  Median = sapply(vars_of_interest, median),
  Std.Dev = sapply(vars_of_interest, sd),
  Variance = sapply(vars_of_interest, var),
  Range = sapply(vars_of_interest, function(x) max(x) - min(x)),
  Skewness = sapply(vars_of_interest, skewness),
  Kurtosis = sapply(vars_of_interest, kurtosis)
)

measures
##                                  Variable       Mean     Median    Std.Dev
## Avg..Session.Length   Avg..Session.Length  33.053194  33.082008  0.9925631
## Time.on.App                   Time.on.App  12.052488  11.983231  0.9942156
## Time.on.Website           Time.on.Website  37.060445  37.069367  1.0104889
## Length.of.Membership Length.of.Membership   3.533462   3.533975  0.9992775
## Yearly.Amount.Spent   Yearly.Amount.Spent 499.314038 498.887875 79.3147815
##                          Variance      Range    Skewness Kurtosis
## Avg..Session.Length     0.9851815   6.607234 -0.03207820 2.999767
## Time.on.App             0.9884647   6.618842 -0.08885351 3.111858
## Time.on.Website         1.0210878   6.091334  0.01210542 2.890717
## Length.of.Membership    0.9985555   6.652788 -0.10628796 3.333553
## Yearly.Amount.Spent  6290.8345723 508.847880  0.03468573 3.447373
# estadísticas descriptivas para las variables cuantitativas del dataframe datos_ecommerce.

# Medidas de localización: Estas medidas nos proporcionan una idea de la "ubicación" de los datos en una escala numérica. Las medidas más comunes son la media y la mediana.
# Medidas de dispersión: Nos indican cuán "dispersos" o "esparcidos" están los datos alrededor de una medida central. Las más comunes son la varianza, la desviación estándar y el rango.
# Medidas de forma: Estas medidas describen la forma de la distribución de los datos, como la asimetría (skewness) y la curtosis (kurtosis).


# Avg. Session Length:

# Media: 33.053. Indica que el tiempo promedio de sesión es de aproximadamente 33 unidades (posiblemente minutos).
# Mediana: 33.082. Similar a la media, lo que sugiere una distribución bastante simétrica.
# Desviación estándar: 0.993. Las sesiones varían, en promedio, alrededor de un minuto respecto a la media.
# Skewness: -0.032. Cercano a cero, sugiere una distribución simétrica.
# Kurtosis: 2.999. Cercano a 3, sugiere una forma similar a la de una distribución normal.

# Time on App:

# Media: 12.052. Los usuarios pasan en promedio alrededor de 12 unidades de tiempo en la aplicación.
# Mediana: 11.983. Similar a la media, lo que sugiere simetría.
# Desviación estándar: 0.994. Las sesiones varían, en promedio, alrededor de un minuto respecto a la media.
# Skewness: -0.089. Cercano a cero, sugiere una distribución bastante simétrica.
# Kurtosis: 3.112. Un poco más de 3, lo que podría indicar colas un poco más pesadas que una distribución normal.

# Time on Website:

# Media: 37.060. Los usuarios pasan en promedio alrededor de 37 unidades de tiempo en el sitio web.
# Desviación estándar: 1.010. Hay una variación de aproximadamente una unidad respecto a la media.
# Skewness: 0.012. Muy cercano a cero, indicando simetría.
# Kurtosis: 2.891. Un poco menos que 3, lo que indica colas ligeramente más ligeras que una distribución normal.

# Length of Membership:

# Media: 3.533. Los usuarios han sido miembros por un promedio de aproximadamente 3.5 unidades de tiempo.
# Desviación estándar: 0.999. La duración de la membresía varía alrededor de una unidad respecto a la media.
# Skewness: -0.106. Un pequeño sesgo negativo, indicando que hay más datos a la izquierda de la media.
# Kurtosis: 3.334. Ligeramente superior a 3, indicando colas un poco más pesadas.

# Yearly Amount Spent:

# Media: 499.314. En promedio, los usuarios gastan alrededor de 499 unidades monetarias al año.
# Desviación estándar: 79.315. Gran variabilidad en el gasto anual de los usuarios.
# Skewness: 0.035. Cercano a cero, sugiere simetría.
# Kurtosis: 3.447. Superior a 3, lo que indica colas un poco más pesadas.

# Conclusión: En general, las distribuciones de estas variables parecen ser bastante simétricas, con pequeñas desviaciones en la asimetría y la kurtosis. La variable con la mayor variabilidad en relación a su media es "Yearly Amount Spent", mientras que las otras variables tienen desviaciones estándar que son aproximadamente 1/30 o 1/40 de sus medias. Es probable que la cantidad gastada anualmente por los usuarios tenga una relación directa con las otras variables, como el tiempo que pasan en la aplicación o el sitio web, o la duración de su membresía.
# 4.- Construye gráficos univariados para todas las variables cuantitativas. Luego, construye gráficos bivariados (dispersión) entre la variable “Yearly Amount Spentr” y cada una de las variables restantes. Interpreta los resultados.

# Graficos Univariados

par(mfrow=c(2,3)) # Configura el área de trazado para mostrar varios gráficos en la misma ventana.

hist(datos_ecommerce$Avg..Session.Length, main="Avg. Session Length", xlab="Length", col="lightblue", border="black")
hist(datos_ecommerce$Time.on.App, main="Time on App", xlab="Time", col="lightgreen", border="black")
hist(datos_ecommerce$Time.on.Website, main="Time on Website", xlab="Time", col="lightcoral", border="black")
hist(datos_ecommerce$Length.of.Membership, main="Length of Membership", xlab="Length", col="lightyellow", border="black")
hist(datos_ecommerce$Yearly.Amount.Spent, main="Yearly Amount Spent", xlab="Amount", col="lightpink", border="black")

# Gráficos Bivariados

par(mfrow=c(2,2))

plot(datos_ecommerce$Avg..Session.Length, datos_ecommerce$Yearly.Amount.Spent, xlab="Avg. Session Length", ylab="Yearly Amount Spent", main="Scatterplot of Avg. Session Length vs. Yearly Amount Spent")
plot(datos_ecommerce$Time.on.App, datos_ecommerce$Yearly.Amount.Spent, xlab="Time on App", ylab="Yearly Amount Spent", main="Scatterplot of Time on App vs. Yearly Amount Spent")
plot(datos_ecommerce$Time.on.Website, datos_ecommerce$Yearly.Amount.Spent, xlab="Time on Website", ylab="Yearly Amount Spent", main="Scatterplot of Time on Website vs. Yearly Amount Spent")
plot(datos_ecommerce$Length.of.Membership, datos_ecommerce$Yearly.Amount.Spent, xlab="Length of Membership", ylab="Yearly Amount Spent", main="Scatterplot of Length of Membership vs. Yearly Amount Spent")

# 5.- Construye la variable “AvgSessionGroup” a partir de la variable “Avg. Session Length:”, con rangos [29, 32), [32, 33), [33, 34), y [34, 36.2). Descríbela desde la perspectiva de una variable de agrupación, realiza un gráfico adecuado, y para cada una de las nuevas categorías determina la media, la mediana y la desviación estándar de la variable “Yearly Amount Spentr”. Comenta tus resultados.

datos_ecommerce$AvgSessionGroup <- cut(datos_ecommerce$Avg..Session.Length, 
                                       breaks = c(29, 32, 33, 34, 36.2),
                                       labels = c("[29, 32)", "[32, 33)", "[33, 34)", "[34, 36.2)"),
                                       right = FALSE)
table(datos_ecommerce$AvgSessionGroup)
## 
##   [29, 32)   [32, 33)   [33, 34) [34, 36.2) 
##         69        167        179         85
# Basándome en los resultados proporcionados para cada grupo de AvgSessionGroup, puedo realizar las siguientes interpretaciones:

# [29, 32):

#Media del Monto Gastado Anualmente: 452.74 unidades.
#Mediana del Monto Gastado Anualmente: 446.42 unidades.
#Desviación Estándar del Monto Gastado Anualmente: 72.45 unidades.
#Interpretación: Los usuarios que tienen una duración promedio de sesión entre 29 y 32 minutos gastan en promedio 452.74 unidades al año. La mediana indica que el 50% de estos usuarios gasta por debajo de 446.42 unidades y el otro 50% por encima. La desviación estándar sugiere que hay una variabilidad moderada en los gastos de estos usuarios.

# [32, 33):

#Media: 484.30 unidades.
#Mediana: 486.84 unidades.
#Desviación Estándar: 74.87 unidades.
#Interpretación: Los usuarios con duraciones de sesión entre 32 y 33 minutos gastan un poco más en promedio que el grupo anterior. La mediana cercana a la media sugiere una distribución simétrica del gasto. La desviación estándar es ligeramente superior al grupo anterior, lo que indica una variabilidad similar en los gastos.

# [33, 34):

# Media: 509.40 unidades.
# Mediana: 505.77 unidades.
# Desviación Estándar: 71.11 unidades.
# Interpretación: A medida que la duración promedio de la sesión aumenta, también lo hace el gasto anual. Aunque la desviación estándar es ligeramente menor en comparación con el segundo grupo, la variabilidad sigue siendo considerable.

# [34, 36.2):

# Media: 545.39 unidades.
# Mediana: 548.52 unidades.
# Desviación Estándar: 82.07 unidades.
# Interpretación: Este grupo, que tiene las sesiones más largas, también presenta el gasto anual más alto en promedio. La desviación estándar es la más alta entre los grupos, lo que indica que hay una mayor variabilidad en los gastos de estos usuarios.

# Conclusion:
# Se observa una tendencia clara a medida que la duración promedio de la sesión aumenta, también lo hace el gasto anual promedio de los usuarios. Esto podría sugerir que aquellos usuarios que pasan más tiempo en la plataforma tienden a gastar más, posiblemente porque están más comprometidos, interesados o satisfechos con la plataforma o los servicios que ofrece. Sin embargo, es esencial recordar que correlación no implica causalidad. Estos resultados simplemente muestran una relación entre la duración de la sesión y el gasto, pero no necesariamente significa que sesiones más prolongadas causen un mayor gasto. Se deben investigar otros factores o realizar análisis adicionales para comprender mejor esta relación.
barplot(table(datos_ecommerce$AvgSessionGroup), main = "Distribución de Avg. Session Length por Grupo", xlab = "Grupos", ylab = "Frecuencia")

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
datos_ecommerce %>%
  group_by(AvgSessionGroup) %>%
  summarise(
    Mean_Yearly_Amount_Spent = mean(Yearly.Amount.Spent),
    Median_Yearly_Amount_Spent = median(Yearly.Amount.Spent),
    StdDev_Yearly_Amount_Spent = sd(Yearly.Amount.Spent)
  )
## # A tibble: 4 × 4
##   AvgSessionGroup Mean_Yearly_Amount_Spent Median_Yearly_Amount_Spent
##   <fct>                              <dbl>                      <dbl>
## 1 [29, 32)                            453.                       446.
## 2 [32, 33)                            484.                       487.
## 3 [33, 34)                            509.                       506.
## 4 [34, 36.2)                          545.                       549.
## # ℹ 1 more variable: StdDev_Yearly_Amount_Spent <dbl>
#Estadísticas descriptivas para cada categoría:
# 6.- Para cada una de las categorías de la variable “AvgSessionGroup”, genera un boxplot de la variable “Yearly Amount Spentr” e interpreta cada uno de ellos.

library(ggplot2)

#  
ggplot(datos_ecommerce, aes(x = AvgSessionGroup, y = Yearly.Amount.Spent)) +
  geom_boxplot() +
  xlab("AvgSessionGroup") +
  ylab("Yearly Amount Spent") +
  ggtitle("Boxplot de Yearly Amount Spent por AvgSessionGroup")

# Estos valores corresponden a los cinco números que describen el boxplot para cada categoría:

#Mínimo: Es el valor más bajo, no considerando los outliers.
#Primer Cuartil (Q1): Es el valor por debajo del cual se encuentra el 25% de los datos.
#Mediana (Q2): Es el valor que divide el conjunto de datos en dos partes iguales.
#Tercer Cuartil (Q3): Es el valor por debajo del cual se encuentra el 75% de los datos.
#Máximo: Es el valor más alto, no considerando los outliers.

# Interpretación de resultados:

# [29, 32)
#Mínimo: 319.93
#Q1: 416.36
#Mediana: 446.42
#Q3: 494.64
#Máximo: 591.78
#Esta categoría tiene una mediana de gasto anual de 446.42. Los datos están bastante concentrados, ya que el rango intercuartílico (Q3-Q1) es de solo 78.28. No hay outliers por encima o por debajo, ya que el mínimo y el máximo están dentro de la caja.

# [32, 33)
#Mínimo: 314.44
#Q1: 440.16
#Mediana: 486.84
#Q3: 532.72
#Máximo: 662.96
#Los clientes en esta categoría tienden a gastar un poco más anualmente en comparación con la categoría anterior. Además, hay una mayor dispersión de los datos, con un rango intercuartílico de 92.56.

# [33, 34)
#Mínimo: 357.59
#Q1: 460.59
#Mediana: 505.77
#Q3: 558.29
#Máximo: 689.79
#El gasto anual en esta categoría sigue siendo mayor que en las dos anteriores. El rango intercuartílico es de 97.70, lo que indica una dispersión un poco mayor que en la categoría [32, 33).

# [34, 36.2)
#Mínimo: 402.17
#Q1: 506.13
#Mediana: 548.52
#Q3: 584.11
#Máximo: 700.92
#Esta es la categoría con el gasto anual más alto, con una mediana de 548.52. El rango intercuartílico es de 77.98, similar a la categoría [29, 32).

# Conclusión:
#A medida que la "AvgSessionGroup" aumenta, también lo hace el gasto anual, indicando una relación positiva entre la duración promedio de la sesión y la cantidad gastada anualmente. Además, la dispersión de los datos varía entre categorías, pero no muestra un patrón consistente de aumento o disminución con la duración de la sesión.
categories <- levels(datos_ecommerce$AvgSessionGroup)

list_stats <- lapply(categories, function(cat) {
  data_subset <- datos_ecommerce$Yearly.Amount.Spent[datos_ecommerce$AvgSessionGroup == cat]
  boxplot.stats(data_subset)$stats
})

names(list_stats) <- categories
list_stats
## $`[29, 32)`
## [1] 319.9289 416.3584 446.4187 494.6386 591.7811
## 
## $`[32, 33)`
## [1] 314.4385 440.1572 486.8389 532.7211 662.9611
## 
## $`[33, 34)`
## [1] 357.5914 460.5868 505.7711 558.2911 689.7876
## 
## $`[34, 36.2)`
## [1] 402.1671 506.1323 548.5185 584.1059 700.9171
# 7.-Para todas las variables cuantitativas, calcula la matriz de las correlaciones. Interpreta la magnitud de las correlaciones de las variables cuantitativas con la variable “Yearly Amount Spentr”.

cor_matrix <- cor(datos_ecommerce[, c('Avg..Session.Length', 'Time.on.App', 'Time.on.Website', 'Length.of.Membership', 'Yearly.Amount.Spent')])
print(cor_matrix)
##                      Avg..Session.Length Time.on.App Time.on.Website
## Avg..Session.Length           1.00000000 -0.02782598    -0.034986900
## Time.on.App                  -0.02782598  1.00000000     0.082388273
## Time.on.Website              -0.03498690  0.08238827     1.000000000
## Length.of.Membership          0.06024739  0.02914256    -0.047581819
## Yearly.Amount.Spent           0.35508829  0.49932777    -0.002640845
##                      Length.of.Membership Yearly.Amount.Spent
## Avg..Session.Length            0.06024739         0.355088295
## Time.on.App                    0.02914256         0.499327770
## Time.on.Website               -0.04758182        -0.002640845
## Length.of.Membership           1.00000000         0.809083568
## Yearly.Amount.Spent            0.80908357         1.000000000
#Interpretación general de coeficientes de correlación:

#Cercano a 1: Correlación positiva fuerte.
#Cercano a -1: Correlación negativa fuerte.
#Cercano a 0: No hay correlación o correlación muy débil.


#Avg. Session Length y Yearly Amount Spent (0.355088295):

#Existe una correlación positiva moderada entre la duración promedio de la sesión y el gasto anual. Esto sugiere que los clientes que pasan más tiempo en sus sesiones tienden a gastar más anualmente.

#Time on App y Yearly Amount Spent (0.499327770):

#La correlación entre el tiempo en la aplicación y el gasto anual es positiva y más fuerte que la correlación con la duración promedio de la sesión. Esto indica que el tiempo que un cliente pasa en la aplicación tiene una influencia notable en cuánto gasta anualmente.

#Time on Website y Yearly Amount Spent (-0.002640845):

#La correlación es muy cercana a cero, lo que sugiere que el tiempo que un cliente pasa en el sitio web tiene un efecto mínimo o nulo en su gasto anual.

#Length of Membership y Yearly Amount Spent (0.809083568):

#Existe una correlación positiva muy fuerte entre la duración de la membresía y el gasto anual. Esto indica que aquellos clientes que han sido miembros por más tiempo tienden a gastar más anualmente, lo que puede sugerir un efecto de lealtad o que los clientes satisfechos permanecen más tiempo y gastan más.

#Otros puntos interesantes:

#Time on App y Time on Website (0.082388273):

#Hay una correlación positiva muy débil entre el tiempo en la aplicación y el tiempo en el sitio web. Esto podría indicar que generalmente, aquellos que pasan más tiempo en la aplicación no necesariamente pasan mucho tiempo en el sitio web y viceversa.

#Length of Membership y Time on Website (-0.047581819):

#La correlación negativa, aunque débil, entre la duración de la membresía y el tiempo en el sitio web podría sugerir que aquellos que han sido miembros por más tiempo no necesariamente pasan más tiempo en el sitio web. Sin embargo, es una relación débil y no necesariamente significativa.
#En general, la "Length of Membership" es el factor más correlacionado con el "Yearly Amount Spent", lo que sugiere que mantener a los clientes por más tiempo puede ser clave para aumentar los ingresos. También vale la pena invertir en la experiencia de la aplicación, ya que el "Time on App" también muestra una correlación positiva significativa con el gasto anual.
# 8.-Supón que se desea realizar un modelo de regresión lineal múltiple considerando como variable respuesta “Yearly Amount Spentr” y como variables independientes:


if(!is.data.frame(datos_ecommerce)) {
  datos_ecommerce <- as.data.frame(datos_ecommerce)
}

# Ahora, ejecuto el modelo de regresión lineal
lm_result <- lm(Yearly.Amount.Spent ~ Avg..Session.Length + Time.on.App + Time.on.Website + Length.of.Membership, data=datos_ecommerce)

# Mostramos el resumen del modelo
summary(lm_result)
## 
## Call:
## lm(formula = Yearly.Amount.Spent ~ Avg..Session.Length + Time.on.App + 
##     Time.on.Website + Length.of.Membership, data = datos_ecommerce)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -30.4059  -6.2191  -0.1364   6.6048  30.3085 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          -1051.5943    22.9925 -45.736   <2e-16 ***
## Avg..Session.Length     25.7343     0.4510  57.057   <2e-16 ***
## Time.on.App             38.7092     0.4510  85.828   <2e-16 ***
## Time.on.Website          0.4367     0.4441   0.983    0.326    
## Length.of.Membership    61.5773     0.4483 137.346   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.973 on 495 degrees of freedom
## Multiple R-squared:  0.9843, Adjusted R-squared:  0.9842 
## F-statistic:  7766 on 4 and 495 DF,  p-value: < 2.2e-16
#Los resultados del análisis de regresión se pueden interpretar de la siguiente manera:

#Modelo Global:

#El R2 (R-cuadrado) es de 0.9843. Esto significa que el modelo puede explicar el 98.43% de la variabilidad en "Yearly.Amount.Spent" usando las variables predictoras seleccionadas. Este es un R2 excepcionalmente alto, lo que indica que el modelo ajusta muy bien a los datos.

#El estadístico F es 7766, con un p-valor de menos de 2.2e-16. Esto significa que, a nivel global, las variables del modelo son significativamente diferentes de cero y, por lo tanto, son relevantes para predecir la "Yearly.Amount.Spent".

#Coeficientes:

#(Intercept) / Ordenada al origen: El valor esperado de "Yearly.Amount.Spent" es de -1051.5943 cuando todas las otras variables predictoras son 0. Aunque esto no tiene mucho sentido en el contexto práctico, es un componente necesario del modelo.

#Avg..Session.Length: Por cada unidad adicional en el "Avg..Session.Length", se espera que "Yearly.Amount.Spent" aumente en 25.7343 unidades, manteniendo constantes las otras variables.

#Time.on.App: Por cada unidad adicional en "Time.on.App", se espera que "Yearly.Amount.Spent" aumente en 38.7092 unidades, manteniendo constantes las otras variables. Notarás que este coeficiente es estadísticamente significativo con un p-valor muy cercano a cero.

#Time.on.Website: El coeficiente de esta variable es 0.4367, lo que significa que por cada unidad adicional en "Time.on.Website", "Yearly.Amount.Spent" aumentaría en 0.4367 unidades. Sin embargo, este coeficiente no es estadísticamente significativo (p-valor = 0.326). Esto sugiere que el tiempo en el sitio web puede no ser una variable predictiva importante para el gasto anual en este modelo.

#Length.of.Membership: Por cada unidad adicional en "Length.of.Membership", se espera que "Yearly.Amount.Spent" aumente en 61.5773 unidades. Es la variable con el coeficiente más alto, lo que indica que es la más influyente de las incluidas en el modelo.

#Residuales:

#Los residuos representan la diferencia entre los valores observados y los valores predichos por el modelo. Desde el mínimo hasta el máximo, los residuos varían entre -30.41 y 30.31. Es útil inspeccionar los residuales para verificar la adecuación del modelo.

#Conclusión:

#Las variables "Avg..Session.Length", "Time.on.App", y "Length.of.Membership" parecen ser fuertes predictores de "Yearly.Amount.Spent" basándonos en sus coeficientes y significancias estadísticas. En cambio, "Time.on.Website" parece no ser un buen predictor en este modelo. Las empresas podrían considerar invertir más en sus aplicaciones móviles que en sus sitios web, dado que el tiempo en la aplicación tiene un impacto significativamente mayor en el gasto anual que el tiempo en el sitio web.
#9- Finalmente, para comunicar tus resultados elabora un reporte con la librería flexdashboard, en donde la respuesta completa de cada pregunta/inciso debe estar en una hoja aparte: por ejemplo, una hoja con la tabla de estadísticas y el texto de interpretación del inciso 3, otra con lo correspondiente del inciso 4, etc. La orientación y orden dentro de cada hoja queda a disposición tuya. Las restricciones son que los gráficos deben ser interactivos, las tablas deben poder verse completas (si son muy largas, debe ser posible arrastrar) y no debe tener problemas de exportación por errores en el código al crear el reporte.

#install.packages(c("flexdashboard", "plotly", "dplyr", "broom"))
library(flexdashboard)
library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(dplyr)
library(broom)
# Cargando los datos
# Asegúrate de tenerlos cargados o ajusta la ruta según corresponda
datos_ecommerce <- read.csv("C:/Users/joseb/OneDrive/Escritorio/A/R/Ecommerce.txt")

# Ajustando el modelo
model <- lm(Yearly.Amount.Spent ~ Avg..Session.Length + Time.on.App + Time.on.Website + Length.of.Membership, data = datos_ecommerce)
# Convertir el resumen del modelo a un dataframe para una mejor visualización
tidy_model <- broom::tidy(model)
tidy_model %>% 
  plot_ly(type = 'table', 
          header = list(values = names(tidy_model)), 
          cells = list(values = as.list(tidy_model)))
# Gráfica de residuos
residual_plot <- plot_ly(datos_ecommerce, x = ~fitted(model), y = ~resid(model), type = "scatter", mode = "markers") %>%
  layout(title = "Residuos vs Valores Ajustados",
         xaxis = list(title = "Valores Ajustados"),
         yaxis = list(title = "Residuos"))
residual_plot