Estadística Descriptiva

Gráficos de barras

Datos: Ranking de empresas en Florida central 2003

  • ¿Qué empresas ocuparon los primeros puestos en Florida central en 2003?
library(ggplot2)
df <- data.frame(Empresa = 
                   c("Disney World", 
                      "Florida Hospital", 
                      "Publix Supermarkets Inc",
                      "Walmart Stores Ind",
                      "Univaersal Orlando"), 
                 Asalariados = 
                   c(51600,
                     19283,
                     14995,
                     14995,
                     12000))
knitr::kable(df)
Empresa Asalariados
Disney World 51600
Florida Hospital 19283
Publix Supermarkets Inc 14995
Walmart Stores Ind 14995
Univaersal Orlando 12000
head(df)
##                   Empresa Asalariados
## 1            Disney World       51600
## 2        Florida Hospital       19283
## 3 Publix Supermarkets Inc       14995
## 4      Walmart Stores Ind       14995
## 5      Univaersal Orlando       12000
ggplot(data=df, aes(x=Empresa, y=Asalariados)) + geom_bar(stat="identity")

ggplot(data=df, aes(x=Empresa, y=Asalariados)) + geom_bar(stat="identity",color="black",fill="purple") + coord_flip()

ggplot(data=df, aes(x=Empresa, y=Asalariados)) + geom_bar(stat="identity", width=0.2,color="black",fill="green")

ggplot(data=df, aes(x=Empresa, y=Asalariados)) + geom_bar(stat="identity", color="yellow", fill="black")

p <- ggplot(data=df, aes(x=Empresa, y=Asalariados)) + geom_bar(stat="identity", fill="red") + theme_minimal()
p

Gráfico de barras agrupado

library(ggplot2)
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
specie <- c(rep("sorgho" , 3), 
            rep("poacee" , 3), 
            rep("banana" , 3), 
            rep("triticum" , 3))
condition <- rep(c("normal" , "stress" , "Nitrogen") , 4)
value <- abs(rnorm(12 , 0 , 15))
data <- data.frame(specie, condition, value)

knitr::kable(data)
specie condition value
sorgho normal 16.0127228
sorgho stress 1.0145524
sorgho Nitrogen 7.4345405
poacee normal 1.9944443
poacee stress 1.0868085
poacee Nitrogen 16.4123330
banana normal 0.8233801
banana stress 3.7371138
banana Nitrogen 4.0052454
triticum normal 4.7391906
triticum stress 3.8393015
triticum Nitrogen 21.4766935
head(data)
##   specie condition     value
## 1 sorgho    normal 16.012723
## 2 sorgho    stress  1.014552
## 3 sorgho  Nitrogen  7.434541
## 4 poacee    normal  1.994444
## 5 poacee    stress  1.086809
## 6 poacee  Nitrogen 16.412333
ggplot(data, aes(fill=condition, y=value, x=specie)) +
  geom_bar(position="dodge", stat="identity",color="black")

Gráfico de barras apilado

ggplot(data, aes(fill=condition, y=value, x=specie)) + 
  geom_bar(position="stack", stat="identity",color="black")

  • Ejemplo:Número de estudiantes matriculados en tres especialidades de administración de empresas, 2000 y 2005. Creamos un data frame a partir de la tabla de frecuencias que contenga tres columnas, cada una representando la especialidad, el año, y el número de matriculados.
df <- data.frame(Especialidad = c(rep("Finanzas", 2), 
                                  rep("Marketing", 2), 
                                  rep("Contabilidad", 2)),
                 Año = rep(c(2000, 2005), 3),
                 Matriculados = c(160, 250,
                                  140, 200,
                                  100, 150))
knitr::kable(df)
Especialidad Año Matriculados
Finanzas 2000 160
Finanzas 2005 250
Marketing 2000 140
Marketing 2005 200
Contabilidad 2000 100
Contabilidad 2005 150
head(df)
##   Especialidad  Año Matriculados
## 1     Finanzas 2000          160
## 2     Finanzas 2005          250
## 3    Marketing 2000          140
## 4    Marketing 2005          200
## 5 Contabilidad 2000          100
## 6 Contabilidad 2005          150
  • Los siguientes son los gráficos de barras agrupados y apilados respectivamente
ggplot(df, aes(fill = Especialidad, y = Matriculados, x = Año)) +
  geom_bar(position="dodge", stat="identity",color="black")

ggplot(df, aes(fill = Especialidad, y = Matriculados, x = Año)) +
  geom_bar(position="stack", stat="identity",color="black")

Gráfico circular

  • El gerente de una universidad pidió una desagregación de los gastos de viaje de los profesores que asistían a diversas reuniones profesionales. Se observó que el 31 por ciento de los gastos estaba representado por los costes de transporte, el 25 por ciento por los costes de alojamiento, el 12 por ciento por los gastos de alimentación, el 20 por ciento por los gastos de matrícula y el resto por costes varios. Mas adelante se Representa gráficamente estos datos.
library(ggplot2)
library(dplyr)

data <- data.frame(group = 
                     c("Transporte", 
                       "Alojamiento", 
                       "Alimentaión", 
                       "Gastos de matricula",
                       "Varios"), 
                   value = c(31, 25, 12, 20, 12))
knitr::kable(data)
group value
Transporte 31
Alojamiento 25
Alimentaión 12
Gastos de matricula 20
Varios 12
head(data)
##                 group value
## 1          Transporte    31
## 2         Alojamiento    25
## 3         Alimentaión    12
## 4 Gastos de matricula    20
## 5              Varios    12
ggplot(data, aes(x = "", y = value, fill=group)) +
  geom_bar(stat = "identity", width = 1,color="black") +
  coord_polar("y", start = 0)

library(ggplot2)
library(dplyr)

data <- data %>% 
  arrange(desc(group)) %>%
  mutate(prop = value / sum(data$value) *100) %>%
  mutate(ypos = cumsum(prop)- 0.5*prop )
require(scales)
## Loading required package: scales

Gráfico circular porcentual

ggplot(data, aes(x="", y = prop, fill=group)) +
  geom_bar(stat="identity", width=1, color="black") +
  coord_polar("y", start=0) +
  theme_void() + 
  theme(legend.position="none") +
  
  geom_text(aes(y = ypos, label = percent(value/100)), color = "white", size=6) +
  scale_fill_brewer(palette="Set1")

Diagrama de pareto

  • Identificar las principales causas de los problemas e intentar corregirlas rápidamente con un coste mínimo a menudo
df <- data.frame(Error =
                   c("Códigos de procedimientos y diagnósticos",
                     "Información de proveedor", 
                     "Información del paciente",
                     "Tablas de precios",
                     "Solicitudes de contratos",
                     "Ajustes de los proveedores",
                     "Otros"), 
                 Frecuencia = 
                   c(40, 9, 6, 17, 37, 7, 4))
knitr::kable(df)
Error Frecuencia
Códigos de procedimientos y diagnósticos 40
Información de proveedor 9
Información del paciente 6
Tablas de precios 17
Solicitudes de contratos 37
Ajustes de los proveedores 7
Otros 4
head(df)
##                                      Error Frecuencia
## 1 Códigos de procedimientos y diagnósticos         40
## 2                 Información de proveedor          9
## 3                 Información del paciente          6
## 4                        Tablas de precios         17
## 5                 Solicitudes de contratos         37
## 6               Ajustes de los proveedores          7
library(ggQC)
library(ggplot2)

ggplot(df, aes(x = Error, y = Frecuencia)) +
  stat_pareto(point.color = "red",
              point.size = 3,
              line.color = "black",
              bars.fill = c("blue", "orange")) +
  theme(axis.text.x = element_text(angle = 10))

Diagrama de tallo y hojas

  • De los apuntes de clase relacionado con la colección de 25 calificaciones en un examen de álgebra. Nótese que el resultado es similar al de los apuntes, las única diferencia es que stem() organiza las hojas de menor a mayor.
df <- data.frame(calificaciones = c(78, 67, 65, 87, 75, 65, 71, 54, 94, 64, 84, 82, 81, 
                                    68, 85, 76, 89, 98, 59, 57, 79, 65, 59, 80, 67))
head(df)
##   calificaciones
## 1             78
## 2             67
## 3             65
## 4             87
## 5             75
## 6             65
knitr::kable(head(df))
calificaciones
78
67
65
87
75
65
stem(df$calificaciones)
## 
##   The decimal point is 1 digit(s) to the right of the |
## 
##   5 | 4799
##   6 | 4555778
##   7 | 15689
##   8 | 0124579
##   9 | 48
  • Al observar el d. de t. h. anterior podemos concluir que:
    • La calificación más alta es 98.
    • La menor es 54.
    • Las calificaciones varían de 54 a 98.
    • El tallo 9 tiene menos hojas.
    • Los tallos 6 y 8 contienen más hojas, siete en cada uno.
    • El número total de hojas representa el tamaño de la muestra.
head(ChickWeight)
##   weight Time Chick Diet
## 1     42    0     1    1
## 2     51    2     1    1
## 3     59    4     1    1
## 4     64    6     1    1
## 5     76    8     1    1
## 6     93   10     1    1
knitr::kable(head(ChickWeight))
weight Time Chick Diet
42 0 1 1
51 2 1 1
59 4 1 1
64 6 1 1
76 8 1 1
93 10 1 1
stem(ChickWeight$weight)
## 
##   The decimal point is 1 digit(s) to the right of the |
## 
##    2 | 599999999
##    4 | 00000111111111111111111112222222222222223333456678888888899999999999+38
##    6 | 00111111122222222333334444455555666677777888888900111111222222333334+8
##    8 | 00112223344444455555566777788999990001223333566666788888889
##   10 | 0000111122233333334566667778889901122223445555667789
##   12 | 00002223333344445555667788890113444555566788889
##   14 | 11123444455556666677788890011234444555666777777789
##   16 | 00002233334444466788990000134445555789
##   18 | 12244444555677782225677778889999
##   20 | 0123444555557900245578
##   22 | 0012357701123344556788
##   24 | 08001699
##   26 | 12344569259
##   28 | 01780145
##   30 | 355798
##   32 | 12712
##   34 | 1
##   36 | 13
  • Se puede observar que la salida no es igual a los datos del ejemplo. Esto se debe a que los tallos están agrupados (el primer tallo es para 2 y 3, el segundo para 4 y 5, etc.). Para resolver este problema, se debe cambiar la altura del diagrama con el argumento scale de la siguiente manera:
stem(ChickWeight$weight, scale = 2)
## 
##   The decimal point is 1 digit(s) to the right of the |
## 
##    3 | 599999999
##    4 | 00000111111111111111111112222222222222223333456678888888899999999999
##    5 | 000000111111112222333334445555566667778888899999
##    6 | 001111111222222223333344444555556666777778888889
##    7 | 0011111122222233333444444446667778889999
##    8 | 0011222334444445555556677778899999
##    9 | 0001223333566666788888889
##   10 | 00001111222333333345666677788899
##   11 | 01122223445555667789
##   12 | 0000222333334444555566778889
##   13 | 0113444555566788889
##   14 | 1112344445555666667778889
##   15 | 0011234444555666777777789
##   16 | 0000223333444446678899
##   17 | 0000134445555789
##   18 | 1224444455567778
##   19 | 2225677778889999
##   20 | 01234445555579
##   21 | 00245578
##   22 | 00123577
##   23 | 01123344556788
##   24 | 08
##   25 | 001699
##   26 | 12344569
##   27 | 259
##   28 | 0178
##   29 | 0145
##   30 | 35579
##   31 | 8
##   32 | 127
##   33 | 12
##   34 | 1
##   35 | 
##   36 | 1
##   37 | 3

Gráfico de series temporales

library(readr)
## 
## Attaching package: 'readr'
## The following object is masked from 'package:scales':
## 
##     col_factor
library(knitr)  

df <- read_csv("https://raw.githubusercontent.com/lihkir/AnalisisEstadisticoUN/main/Data/annual_csv.csv")
## Rows: 274 Columns: 3
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): Source
## dbl (2): Year, Mean
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
knitr::kable(head(df))
Source Year Mean
GCAG 2016 0.9363
GISTEMP 2016 0.9900
GCAG 2015 0.8998
GISTEMP 2015 0.8700
GCAG 2014 0.7408
GISTEMP 2014 0.7400
library(ggplot2)
library(dplyr)

ggplot(df, aes(x = Year, y = Mean)) +
  geom_line(color="red",size = 1) +
  xlab("Year")