2017

Contenido

  • Estadística descriptiva o exploratoria
  • Organización de la información
  • Bases de datos
    • Modelos
    • Matriz de datos
  • Importar datos en R
    • Valores separados por comas csv
    • Texto plano txt
    • Excel xlsx
  • Exportar datos en R

  • Manipulación de datos en R
    • Bibliotecas
    • Resumen de datos
    • Biblioteca tidyr y dplyr
    • Ejemplo con tidyr y dplyr
  • Gráficos

Estadística descriptiva

Estadística descriptiva o exploratoria

  • Tradicionalmente se ha entendido como un conjunto de herramientas, formado por coeficientes y técnicas, que tratan de resumir la información contenida en un conjunto de datos.

  • Se constituye como parte fundamental de cualquier análisis estadístico complejo, en el que se empiezan a tomar decisiones que afectarían el problema de interés.

  • Proporciona información sobre la estructura de la población que se estudia, indicando, por ejemplo, si ésta es simétrica, si realmente se trata de una única población o hay una superposición de poblaciones, detección de valores atípicos, etc.

Organización de la información

  • Los datos constituyen la materia prima de la Estadística, logrando establecer distintas clasificaciones en función de la forma en que éstos vengan dados.

  • Se obtienen datos al realizar cualquier tipo de prueba, experimento, valoración, medición, observación.

Bases de datos

  • Representación informática (o conjunto estructurado de datos) pertenecientes a un mismo contexto y almacenados sistemáticamente.

  • Sistemas de gestion de bases de datos (SGBD)
    • Centralizado
    • Distribuido
    • Cliente - Servidor.

Bases de datos

Modelos

Un modelo de datos es una serie de conceptos que puede utilizarse para describir un conjunto de datos y las operaciones para manipularlos. Algunos de los modelos de datos son:

  - Base de datos jerarquica
  - Base de datos relacional    
  - Base de datos de red
  - Base de datos entidad - relación
  - Base de datos multidimensional
  - Base de datos orientada a objetos

Matriz de datos

  • Al conjunto de individuos físicos considerados en un análisis se le denomina Colectivo o Población.

  • También se utilizarán esos mismos términos para referirse a la(s) característica(s) de esos individuos que son objeto de estudio.

  • Matriz de datos: Los datos son organizados en una matriz de \(n*p\) donde cada fila representa a un individuo o registro y las columnas a las características observadas.

Manipulación de datos con R

Importar datos en R

  • Lectura de datos en R:
# Formato "csv"
denPoblac <- read.csv(file = "DenPobla05_10.csv", header = TRUE, sep = ",", dec = ".")

# Formato "csv2"
huevos <- read.csv2(file = "Huevos.csv", header = TRUE, sep = ";", dec = ",")

# Formato "txt"
olimpicos <- read.table(file = "ColOlimpicos.txt", header = TRUE, sep = ",", dec = ".")

Exportar datos en R

  • Guardar conjunto de datos en el directorio de trabajo:
# Formato "csv"
write.csv(denPoblac, file = "DensidadPoblacional.csv")

# Formato "csv2"
write.csv2(olimpicos, file = "ProdHuevos.csv")

# Formato "txt"
write.table(olimpicos, file = "Olimpicos.txt")

Importar y exportar Excel

  • Instalar y cargar bibliotecas
library(readxl)
library(xlsx)
## Loading required package: rJava
## Loading required package: xlsxjars
  • Lectura y exportación de datos:
# Formato "xlsx" (Instalar previamente biblioteca "readxl")
salarios <- read_xlsx("Salarios.xlsx")

# Formato "xlsx" (Instalar previamente biblioteca "xlsx")
write.xlsx(salarios, "Salarios2.xlsx")

Bibliotecas para manejo de datos

  • reshape2: facilita la transformación de marcos de datos (data.frame) y matrices.

  • plyr: manipulación de datos.

  • dplyr:implementa una sintaxis en cadena (%>%) que da lugar a un código mucho más fácil de leer y entender que la sintaxis anidada habitual.

  • tidyr: manipulación de datos más fácil y eficiente.

Resumen de datos

Densidad poblacional mundial 2005 - 2010

head(denPoblac, n = 5) #Retorna los primeros 5 registros de la base de datos
##   Country.code Country.name  X2010  X2009     X2008  X2007  X2006  X2005
## 1          ABW        ARUBA 564428 563433 563022.00 562328 560167 555728
## 2          AFG  AFGHANISTAN  43549  42491  41455.00  40407  39306  38125
## 3          AGO       ANGOLA  15681  15181     14.69  14208  13734  13271
## 4          AIA     ANGUILLA 151297 149132 146868.00 144451 141791 138868
## 5          ALB      ALBANIA 109578 109614 109803.00 110137 110602 111177
names(denPoblac)       #Retorna el nombre de las variables (columnas)
## [1] "Country.code" "Country.name" "X2010"        "X2009"       
## [5] "X2008"        "X2007"        "X2006"        "X2005"

tail(denPoblac, n = 5) #Retorna los últimos 5 registros de la base de datos
##     Country.code Country.name X2010 X2009 X2008    X2007 X2006    X2005
## 226          WSM        SAMOA 65711 65243 64798 64373.00 63961 63556.00
## 227          YEM        YEMEN 43114 42104 41108    40.12 39134 38146.00
## 228          ZAF SOUTH AFRICA 42138 41677 41168 40623.00 40064 39504.00
## 229          ZMB       ZAMBIA 17561 17041 16551    16.09 15654    15.24
## 230          ZWE     ZIMBABWE 33466 32984 32716 32604.00 32563 32528.00
str(denPoblac)         #Retorna la estructura de un objeto R
## 'data.frame':    230 obs. of  8 variables:
##  $ Country.code: Factor w/ 230 levels "ABW","AFG","AGO",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ Country.name: Factor w/ 230 levels "AFGHANISTAN",..: 11 1 6 7 2 5 216 9 10 4 ...
##  $ X2010       : num  564428 43549 15681 151297 109578 ...
##  $ X2009       : num  563433 42491 15181 149132 109614 ...
##  $ X2008       : num  563022 41455 14.7 146868 109803 ...
##  $ X2007       : num  562328 40407 14208 144451 110137 ...
##  $ X2006       : num  560167 39306 13734 141791 110602 ...
##  $ X2005       : num  555728 38125 13271 138868 111177 ...

dim(denPoblac)                 #Retorna la dimensión del marco de datos
## [1] 230   8
length(denPoblac)              #Retorna la longitud del marco de datos
## [1] 8
class(denPoblac)               #Retorna la clase atómica de "denPoblac"
## [1] "data.frame"
class(denPoblac$Country.name)  #Retorna la clase atómica de "Country.name"
## [1] "factor"

summary(denPoblac) #Retorna un resumen numérico del conjunto de datos
##   Country.code         Country.name     X2010              X2009         
##  ABW    :  1   AFGHANISTAN   :  1   Min.   :       4   Min.   :       3  
##  AFG    :  1   ALBANIA       :  1   1st Qu.:   15729   1st Qu.:   16244  
##  AGO    :  1   ALGERIA       :  1   Median :   68354   Median :   68003  
##  AIA    :  1   AMERICAN SAMOA:  1   Mean   :  380407   Mean   :  416609  
##  ALB    :  1   ANDORRA       :  1   3rd Qu.:  181872   3rd Qu.:  173882  
##  AND    :  1   ANGOLA        :  1   Max.   :24728188   Max.   :24371812  
##  (Other):224   (Other)       :224                                        
##      X2008              X2007              X2006         
##  Min.   :       3   Min.   :       6   Min.   :       4  
##  1st Qu.:   18338   1st Qu.:   15206   1st Qu.:   14563  
##  Median :   72714   Median :   65206   Median :   64342  
##  Mean   :  410848   Mean   :  374120   Mean   :  399178  
##  3rd Qu.:  187676   3rd Qu.:  163087   3rd Qu.:  180998  
##  Max.   :23950336   Max.   :23498658   Max.   :23066443  
##                                                          
##      X2005         
##  Min.   :       8  
##  1st Qu.:   19266  
##  Median :   69124  
##  Mean   :  391460  
##  3rd Qu.:  176174  
##  Max.   :22689933  
## 

Medidas estadísticas

mean(denPoblac$X2010)     #Retorna la media
## [1] 380406.8
median(denPoblac$X2010)   #Retorna la mediana
## [1] 68353.5
min(denPoblac$X2010)      #Retorna el valor mínimo
## [1] 3.52
max(denPoblac$X2010)      #Retorna el valor máximo
## [1] 24728188

range(denPoblac$X2010)    #Retorna el rango
## [1]        3.52 24728188.00
quantile(denPoblac$X2010) #Retorna los cuantiles
##          0%         25%         50%         75%        100% 
##        3.52    15729.25    68353.50   181872.00 24728188.00
sd(denPoblac$X2010)       #Retorna la desviación estándar
## [1] 2168787
var(denPoblac$X2010)      #Retorna la varianza
## [1] 4.703637e+12

Biblioteca tidyr

  • Usos de la biblioteca tidyr:

    • gather(): pasar de formato ancho a largo.
    • spread(): pasar de formato largo a ancho.
  • Verbos útiles de la biblioteca dplyr:

    • select(): selecciona columnas.
    • filter(): selecciona filas.
    • arrange(): reordena filas.
    • mutate(): crea o modifcia columnas.
    • group_by(): operaciones por grupo.
    • summarise(): resumen de datos.

Ejemplo tidyr - dplyr

Densidad poblacional mundial 2005 - 2010

names(denPoblac) <- c("CodPaís","País", "2010", "2009", "2008", "2007", "2006", "2005")
names(denPoblac)
## [1] "CodPaís" "País"    "2010"    "2009"    "2008"    "2007"    "2006"   
## [8] "2005"
head(denPoblac, n = 4)
##   CodPaís        País   2010   2009      2008   2007   2006   2005
## 1     ABW       ARUBA 564428 563433 563022.00 562328 560167 555728
## 2     AFG AFGHANISTAN  43549  42491  41455.00  40407  39306  38125
## 3     AGO      ANGOLA  15681  15181     14.69  14208  13734  13271
## 4     AIA    ANGUILLA 151297 149132 146868.00 144451 141791 138868
dim(denPoblac)
## [1] 230   8

Uso de gather()

#Pasar a formato largo
denPoblacLargo <- denPoblac %>%
                    gather(key = Año,
                           value = Densidad,
                           -c(CodPaís:País))

head(denPoblacLargo, n = 5)
##   CodPaís        País  Año Densidad
## 1     ABW       ARUBA 2010   564428
## 2     AFG AFGHANISTAN 2010    43549
## 3     AGO      ANGOLA 2010    15681
## 4     AIA    ANGUILLA 2010   151297
## 5     ALB     ALBANIA 2010   109578
dim(denPoblacLargo)
## [1] 1380    4

Uso de spread()

#Pasar a formato ancho de nuevo
denPoblacAncho <- denPoblacLargo %>%
                    spread(key = Año,
                           value = Densidad)

head(denPoblacAncho, n = 5)
##   CodPaís        País   2005   2006   2007      2008   2009   2010
## 1     ABW       ARUBA 555728 560167 562328 563022.00 563433 564428
## 2     AFG AFGHANISTAN  38125  39306  40407  41455.00  42491  43549
## 3     AGO      ANGOLA  13271  13734  14208     14.69  15181  15681
## 4     AIA    ANGUILLA 138868 141791 144451 146868.00 149132 151297
## 5     ALB     ALBANIA 111177 110602 110137 109803.00 109614 109578
dim(denPoblacAncho)
## [1] 230   8

Uso de select()

denPoblacSelect  <- select(denPoblac, 1:3)
denPoblacSelect2 <- select(denPoblac, CodPaís:País)
denPoblacSelect3 <- select(denPoblac, contains(c("P")))

head(denPoblacSelect, n = 1)
##   CodPaís  País   2010
## 1     ABW ARUBA 564428
head(denPoblacSelect2, n = 1)
##   CodPaís  País
## 1     ABW ARUBA
head(denPoblacSelect3, n = 1)
##   CodPaís  País
## 1     ABW ARUBA

Uso de filter()

denPoblacLargo2 <- denPoblacLargo %>% 
                      filter(País == "COLOMBIA")

denPoblacLargo3 <- denPoblacLargo %>% 
                      filter(País == c("COLOMBIA", "ECUADOR"))
head(denPoblacLargo2, n = 6)
##   CodPaís     País  Año Densidad
## 1     COL COLOMBIA 2010    40.78
## 2     COL COLOMBIA 2009 40216.00
## 3     COL COLOMBIA 2008 39646.00
## 4     COL COLOMBIA 2007 39071.00
## 5     COL COLOMBIA 2006 38494.00
## 6     COL COLOMBIA 2005 37917.00

Uso de arrange()

denPoblacLargo4 <- denPoblacLargo %>% arrange(Densidad)
denPoblacLargo5 <- denPoblacLargo %>% arrange(-Densidad)
denPoblacLargo6 <- denPoblacLargo %>% arrange(desc(País))
head(denPoblacLargo4, n = 3)
##   CodPaís    País  Año Densidad
## 1     NAM NAMIBIA 2009     2.60
## 2     LBY   LIBYA 2008     3.34
## 3     LBY   LIBYA 2009     3.39
head(denPoblacLargo5, n = 3)
##   CodPaís   País  Año Densidad
## 1     MCO MONACO 2010 24728188
## 2     MCO MONACO 2009 24371812
## 3     MCO MONACO 2008 23950336

Uso de mutate()

denPoblacLargo7 <- denPoblacLargo %>% mutate(Promedio = mean(Densidad))
denPoblacLargo8 <- denPoblacLargo %>% mutate(Suma = sum(Densidad))
head(denPoblacLargo7, n = 3)
##   CodPaís        País  Año Densidad Promedio
## 1     ABW       ARUBA 2010   564428   395437
## 2     AFG AFGHANISTAN 2010    43549   395437
## 3     AGO      ANGOLA 2010    15681   395437
head(denPoblacLargo8, n = 3)
##   CodPaís        País  Año Densidad      Suma
## 1     ABW       ARUBA 2010   564428 545703107
## 2     AFG AFGHANISTAN 2010    43549 545703107
## 3     AGO      ANGOLA 2010    15681 545703107

Uso de group_by() - summarise()

denPoblacLargo9 <- denPoblacLargo %>% 
                      group_by(País) %>%
                      summarise(Promedio = mean(Densidad))


denPoblacLargo10 <- denPoblacLargo %>% 
                      group_by(Año) %>%
                      summarise(Promedio = mean(Densidad)) %>%
                      arrange(desc(Promedio))


denPoblacLargo11 <- denPoblacLargo %>% 
                      group_by(Año) %>%
                      summarise(Promedio = mean(Densidad),
                                desvEst = sd(Densidad))

Gráficá 1

denPoblacLargoF <- denPoblacLargo %>% 
                      filter(Densidad/1e3 < 3e2)

boxplot(denPoblacLargoF$Densidad/1e3 ~ denPoblacLargoF$Año,
        col = rainbow(6), xlab = "Año", ylab = "Densidad poblacional (en miles)",
        main = "Población en miles por kilometro cuadrado entre 2005 y 2010")

Gráficá 2

ggplot(denPoblacLargoF, aes(Densidad/1e3, fill = Año, colour = Año)) + 
  geom_density(alpha=0.2, lwd=0.9) + 
  xlab("Densidad poblacional (en miles)") + 
  ylab("Densidad Estadística") + 
  labs(title = "Población en miles por kilometro cuadrado entre 2005 y 2010")

Gráfica 3

ggplot(denPoblacLargo10, aes(Año, Promedio/1e3)) + 
  geom_bar(stat = "identity") + 
  xlab("Año") + ylab("Densidad poblacional (en miles)") + 
  labs(title = "Población promedio en miles por kilometro cuadrado entre 2005 y 2010")