Cargue el archivo unemploymentClaims.csv proveido por el profesor en el siguiente link(Debe hacerlo directamente desde la función read.csv:
library(dplyr)
library(lubridate)
library(dlookr)
library(scales)
library(dplyr)
claims <- read.csv('https://raw.githubusercontent.com/DFJL/Datasets/master/unemploymentClaims.csv', sep = ";")
head(claims)
## State Filed.week.ended Continued.Claims Covered.Employment
## 1 Alabama 1/4/2020 18523 1923741
## 2 Alabama 1/11/2020 21143 1923741
## 3 Alabama 01/18/2020 17402 1923741
## 4 Alabama 01/25/2020 1839 1923741
## 5 Alabama 2/1/2020 17284 1923741
## 6 Alabama 2/8/2020 16745 1923741
Resuma el dataframe con el siguiente código
#Previanmente he cargado el archivo con el nombre de claims
claims$date <- as.Date(claims$Filed.week.ended, format = '%m/%d/%Y')
claims2 <- claims %>%
mutate(year= year(date),
month= month(date)) %>%
filter(year==2020) %>%
group_by(State,year,month,date) %>%
summarise(claims= sum(Continued.Claims),
TotalEmployment=sum(Covered.Employment)) %>%
ungroup()
## `summarise()` regrouping output by 'State', 'year', 'month' (override with `.groups` argument)
Escoja un estado y filtre los datos en un nuevo dataframe. Seleccionamos el estado Arizona
claimsArizona <- claims2%>%
filter (State == 'Arizona')
claimsArizona
## # A tibble: 17 x 6
## State year month date claims TotalEmployment
## <chr> <dbl> <dbl> <date> <int> <int>
## 1 Arizona 2020 1 2020-01-04 17991 2864180
## 2 Arizona 2020 1 2020-01-11 18259 2864180
## 3 Arizona 2020 1 2020-01-18 18421 2864180
## 4 Arizona 2020 1 2020-01-25 18401 2864180
## 5 Arizona 2020 2 2020-02-01 18854 2864180
## 6 Arizona 2020 2 2020-02-08 18461 2864180
## 7 Arizona 2020 2 2020-02-15 18516 2864180
## 8 Arizona 2020 2 2020-02-22 18217 2864180
## 9 Arizona 2020 2 2020-02-29 18137 2864180
## 10 Arizona 2020 3 2020-03-07 17593 2864180
## 11 Arizona 2020 3 2020-03-14 17595 2864180
## 12 Arizona 2020 3 2020-03-21 18108 2864180
## 13 Arizona 2020 3 2020-03-28 26387 2864180
## 14 Arizona 2020 4 2020-04-04 62597 2864180
## 15 Arizona 2020 4 2020-04-11 120592 2864180
## 16 Arizona 2020 4 2020-04-18 170262 2885408
## 17 Arizona 2020 4 2020-04-25 196401 2885408
Cree un boxplot por la variable month para la variable claims.
boxplotclaimsArizona<- boxplot(claims~month,
data=claimsArizona,
main="Claims por mes",
xlab="Mes",
ylab="Cambio Porcentual",
col="orange",
border="brown"
)
print(boxplotclaimsArizona)
## $stats
## [,1] [,2] [,3] [,4]
## [1,] 17991 18137 17593.0 62597.0
## [2,] 18125 18217 17594.0 91594.5
## [3,] 18330 18461 17851.5 145427.0
## [4,] 18411 18516 22247.5 183331.5
## [5,] 18421 18854 26387.0 196401.0
## attr(,"class")
## 1
## "integer"
##
## $n
## [1] 4 5 4 4
##
## $conf
## [,1] [,2] [,3] [,4]
## [1,] 18104.06 18249.73 14175.24 72954.77
## [2,] 18555.94 18672.27 21527.76 217899.23
##
## $out
## numeric(0)
##
## $group
## numeric(0)
##
## $names
## [1] "1" "2" "3" "4"
Realice un diagnostico de outliers.
#Diagnóstico de outliers
outliersClaimsArizona <- diagnose_outlier(claimsArizona)
outliersClaimsArizona
## # A tibble: 4 x 6
## variables outliers_cnt outliers_ratio outliers_mean with_mean without_mean
## <chr> <int> <dbl> <dbl> <dbl> <dbl>
## 1 year 0 0 NaN 2.02e3 2020
## 2 month 0 0 NaN 2.47e0 2.47
## 3 claims 4 23.5 137463 4.68e4 18842.
## 4 TotalEmploym… 2 11.8 2885408 2.87e6 2864180
#Diagnóstico de outliers con ratio porcentual
outliersClaimsArizonaratio <- diagnose_outlier(claimsArizona) %>%
mutate(outliers_ratio= percent(outliers_ratio/100,accuracy = 2))
outliersClaimsArizonaratio
## # A tibble: 4 x 6
## variables outliers_cnt outliers_ratio outliers_mean with_mean without_mean
## <chr> <int> <chr> <dbl> <dbl> <dbl>
## 1 year 0 0% NaN 2.02e3 2020
## 2 month 0 0% NaN 2.47e0 2.47
## 3 claims 4 24% 137463 4.68e4 18842.
## 4 TotalEmploym… 2 12% 2885408 2.87e6 2864180
Corrija la columna with_mean y without_mean en caso de ser necesario, para que el resultado se muestre en notación numérica( Investigue la función format)
outlier <- diagnose_outlier(claimsArizona)%>%
mutate(with_mean= format(with_mean,digits = 0,scientific = FALSE),
without_mean= format(without_mean,digits = 0,scientific = FALSE))
outlier
## # A tibble: 4 x 6
## variables outliers_cnt outliers_ratio outliers_mean with_mean without_mean
## <chr> <int> <dbl> <dbl> <chr> <chr>
## 1 year 0 0 NaN " 2020" " 2020"
## 2 month 0 0 NaN " 2" " 2"
## 3 claims 4 23.5 137463 " 46752" " 18842"
## 4 TotalEmploym… 2 11.8 2885408 "2866677" "2864180"
Grafique el diagnóstico de outliers para la variable claims.
outlierD <- outlier %>%
filter(outliers_ratio >= 20) %>%
select(variables) %>%
unlist()
plot_outlier(claimsArizona, all_of(outlierD))
Analice los resultados de outliers.
Variable Claims
Vemos que la mayoría de valores se concentran entre los 0 - 50000 claims. Sin embargo hay outliers que correspondone a valores mucho mayores que 50000, estos valores extremos corresponden a los outliers. En la tabla diagnóstico se nos indica que hay 4 outliers, y estos corresponden a los puntos del gráfico with outliers
Al realizar el análisis without outliers se eliminan algunos outliers sin embargo siempre queda un punto outlier como se muestra en el gráfico, un valor considerablemente mayor a los demás. Los valores aislados no se eliminaron del todo.
Realice un análisis de la curtosis de la distribución, según la clasificación dada en clase.
claimsArizona %>%
describe() %>%
select(variable, skewness,kurtosis, mean, p25, p50, p75) %>%
filter(!is.na(skewness)) %>%
arrange(desc(abs(skewness)))
## # A tibble: 3 x 7
## variable skewness kurtosis mean p25 p50 p75
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 TotalEmployment 2.61 5.44 2866677. 2864180 2864180 2864180
## 2 claims 1.96 2.62 46752. 18137 18421 26387
## 3 month 0.0827 -1.31 2.47 2 2 3
Curtosis
Realice un análisis de la asimetría de la distribución, según la clasificación dada en clase.