Librerias

library(readxl)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.0.4     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(corrplot)
## corrplot 0.92 loaded
library(ggplot2)
library(gtsummary)
library(gtable)
library(ISLR)
library(sjPlot)
## Install package "strengejacke" from GitHub (`devtools::install_github("strengejacke/strengejacke")`) to load all sj-packages at once!
library(psych)
## 
## Attaching package: 'psych'
## 
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha

Carga de base de datos

dataY <- read_excel("~/Documents/HAROLD/SERGIO ARBOLEDA/TOMA DE DS1/Talleres/youtube.xlsx")
head(dataY, 10)

Respuestas:

1. Haga un procesamiento de los datos para identificar errores de digitación. En caso de encontrarlos corríjalos.

Rta:.

2. Haga un procesamiento de los datos para identificar los datos faltantes. En caso de encontrarlos implemente una de las estrategias vistas en clase para manejarlos.

Rta:.

Las columnas correspondientes a “likes” y “Comments” contienen celdas vacias, ya que son variables numericas se corrigio y a las celdas vacias se les asigno el valor de cero (0).

3. Calcule estadísticas descriptivas para cada una de las variables. También, construya gráficos adecuados para analizar su comportamiento. Comente lo encontrado para cada una de ellas.

2. Estadísticas Descriptivas

summary(dataY)
##     duration           height           width          frame_rate   
##  Min.   :  241.0   Min.   : 140.0   Min.   :  96.0   Min.   : 6.00  
##  1st Qu.:  295.0   1st Qu.: 480.0   1st Qu.: 360.0   1st Qu.:25.00  
##  Median :  391.0   Median : 640.0   Median : 480.0   Median :29.97  
##  Mean   :  623.2   Mean   : 832.3   Mean   : 527.2   Mean   :27.01  
##  3rd Qu.:  591.0   3rd Qu.:1280.0   3rd Qu.: 720.0   3rd Qu.:29.97  
##  Max.   :25845.0   Max.   :1920.0   Max.   :1214.0   Max.   :47.75  
##    category             views               likes           comments       
##  Length:1533        Min.   :        0   Min.   :     0   Min.   :    0.00  
##  Class :character   1st Qu.:     1880   1st Qu.:     7   1st Qu.:    0.00  
##  Mode  :character   Median :     5171   Median :    21   Median :    3.00  
##                     Mean   :   277555   Mean   :  1327   Mean   :   76.95  
##                     3rd Qu.:    21711   3rd Qu.:   102   3rd Qu.:   16.00  
##                     Max.   :160295630   Max.   :836981   Max.   :16634.00
describe(dataY)

Distribución de la duración

ggplot(dataY, aes(x = duration)) +
  geom_histogram(binwidth = 800, fill = "skyblue", color = "black") +
  labs(title = "Distribución de duración de videos", x = "Duración (segundos)", y = "Frecuencia")

Vistas por categoría

ggplot(dataY, aes(x = category, y = views)) +
  geom_boxplot(fill = "orange") +
  scale_y_log10() +
  labs(title = "Vistas por categoría", x = "Categoría", y = "Vistas (escala log)")
## Warning in scale_y_log10(): log-10 transformation introduced infinite values.
## Warning: Removed 32 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

Relación entre duración y vistas

ggplot(dataY, aes(x = duration, y = views)) +
  geom_point(alpha = 0.5, color = "blue") +
  geom_smooth(method = "lm", se = FALSE, color = "red") +
  labs(title = "Duración vs Vistas", x = "Duración (segundos)", y = "Vistas")
## `geom_smooth()` using formula = 'y ~ x'

##Likes y vistas según categoría

ggplot(dataY, aes(x = views, y = likes, color = category)) +
  geom_point(alpha = 0.6) +
  scale_x_log10() + scale_y_log10() +
  labs(title = "Likes vs Vistas por categoría", x = "Vistas (log)", y = "Likes (log)")
## Warning in scale_x_log10(): log-10 transformation introduced infinite values.
## Warning in scale_y_log10(): log-10 transformation introduced infinite values.

dataY %>% filter(likes != 0) %>% 
  count(category) %>%
  ggplot(aes(x = reorder(category, n), y = n, fill = category)) +
  geom_col() +
  coord_flip() +
  labs(title = "Videos sin likes por categoría", x = "Categoría", y = "Cantidad")

Likes por categoria

library(dplyr)
library(ggplot2)

dataY %>%
  group_by(category) %>%
  summarise(total_likes = sum(likes, na.rm = TRUE)) %>%
  ggplot(aes(x = reorder(category, total_likes), y = total_likes, fill = category)) +
  geom_col() +
  coord_flip() +
  labs(title = "Total de likes por categoría",
       x = "Categoría",
       y = "Total de likes") +
  theme_minimal() + guides(fill = "none")