Análisis Exploratorio de encuesta

El Análisis Exploratorio de encuesta (EDA) funciona como una radiografía que revela la anatomía de nuestros encuesta, proporcionándonos una comprensión profunda de su estructura y características. Es una herramienta esencial para desentrañar patrones, identificar tendencias y entender la distribución de la información que subyace en nuestro conjunto de encuesta.
El Análisis Exploratorio de encuesta sirve como una fase fundamental para orientar y fundamentar cualquier análisis estadístico subsiguiente, mejorando la validez y la interpretación de los resultados.

Detectando los valores perdidos

Valores perdidos

Una de las labores fundamentales en el análisis de encuesta consiste en evaluar la presencia de encuesta faltantes, también conocidos como “missing data”.
La presencia de encuesta faltantes en un conjunto de encuesta puede tener repercusiones significativas desdelimitar la capacidad para llevar a cabo tareas cruciales, como la conversión de tipos de encuesta o la visualización de la información hasta distorsionar la validez de los ensayos científicos, llevando a conclusiones potencialmente inválidas.

Tipos de Valores Perdidos

  • encuesta faltantes completamente al azar (MCAR):Los valores perdidos son independientes de los encuesta, como en una muestra aleatoria donde la ausencia de encuesta sigue un patrón MCAR. Esto rara vez ocurre debido a la igual probabilidad de selección, minimizando la frecuencia de este fenómeno.

  • encuesta faltantes al azar (MAR):La probabilidad de ser un dato faltante es uniforme dentro de grupos definidos por encuesta observados, como en muestras poblacionales donde la inclusión depende de propiedades conocidas. Este tipo de encuesta faltantes es común y ampliamente utilizado.

  • encuesta faltantes no aleatorios: La probabilidad de ser un dato faltante se atribuye a razones desconocidas, especialmente evidente en casos de opinión pública, donde aquellos con argumentos débiles tienden a responder con menor frecuencia, generando espacios en blanco o dejando respuestas vacías.

Visualización de valores Perdidos

Paquetes que vamos a usar:

#install.packages("tidyverse")
#install.packages("dlookr")
#install.packages("visdat")
#install.packages("plotly")
#install.packages("missRanger")
#install.packages("naniar")
#install.packages("mice")
#install.packages("BaylorEdPsych")
Cargamos la base de encuesta
library(readxl)
base <- read_xlsx("C:\\Users\\Gutie\\Desktop\\Base\\Empresa.xlsx")
base_copia <- base
head(base)
Generamos una copia de la base principal llamada “base_copia”. Existen muchas formas de visualización de encuesta, pero en este caso emplearemos tecnicas de machine learning por su alto nivel de predicción.

Para ello activamos las librerias correspondientes

library(tidyverse)
library(dlookr)
library(visdat)
library(missRanger)
library(plotly)
library(naniar)
library(mice)

Para la visualización de NA’s usaremos el grafico de pareto, el cual nos permite visualizar el porcentaje de valores perdidos en cada variable

plot_na_pareto(base_copia)

Tambien podemos emplear graficos de barras con la función “gg_miss_upset()” y “n_var_miss” del paquete “naniar” el cual nos mostrara la grafica de toda las variables que tienen NA’S asi como sus combinaciones

gg_miss_upset(base_copia, nsets=n_var_miss(base_copia))

Otra forma de hacerlo es con la función “gg_miss_var()”, podemo visualizar cuantos valores perdidos hay en cada variable como tambien su porcentaje aplicando dentro de la función, la siguiente orden “show_pct=T”

# De manera númerica 
gg_miss_var(base_copia)

gg_miss_var(base_copia, show_pct=T)

Si tan solo queremos visualizar las combinaciones de NA entre variables usaremos la función “plot_na_intersect()”

plot_na_intersect(base_copia)
En el gráfico, el eje x exhibe las variables con valores faltantes, mostrando barras en la parte superior para representar los recuentos de valores faltantes. Por otro lado, el eje y representa la combinación de variables y sus respectivas frecuencias.
En este caso podemos usar el comando vis_miss para visualizar los encuesta.
vis_miss(base_copia)
Luego de realizar un análisis de manera visual, nos percatamos que tenemos casi 22 variables con valores perdidos, la imputación individual nos tomaría tiempo, por lo tanto decidimos aplicar tecnicas de imputación multiple.
Se genera una segunda copia de la base con la finalidad de comparar las dos técnicas.

Imputación Multiple

MACHINE LEARNING

imputet_ML <- missRanger(
  base_copia, 
  formula = . ~ . ,
  num.trees = 1000, 
  verbose = 2, 
  seed = 111,  
  returnOOB = T)
## 
## Missing value imputation by random forests
## 
##   Variables to impute:       LC, PA, EP, ECP, ELP, CI, EAF, A, AF, FP, RC, RAF, CCP, PCP, IGADV, ICF, RNA, MB, MO, RNV, ROP, RF
##   Variables used to impute:  AÑO, LC, PA, EA, EP, ECP, ELP, CI, EAF, A, AF, FP, EPC, EPNC, ACYLP, RC, RAF, RV, CCP, PCP, IGADV, ICF, RNA, MB, MO, RNV, ROP, RF, UO_TA, ROE, ROA
## 
##  EP  ECP ELP LC  PA  FP  ROP EAF AF  A   RC  CCP IGADV   RNA MB  MO  RNV RF  RAF CI  ICF PCP
## iter 1:  0.7045  0.5114  0.1207  0.9136  0.7381  0.8910  1.0164  0.9891  1.1244  0.7251  1.1863  1.0461  1.0557  0.8907  0.8850  1.0330  1.0271  0.3677  0.9556  1.0920  0.9422  0.9140  
## iter 2:  0.7160  0.1369  0.1385  0.7090  0.6803  0.8553  0.9906  0.8114  1.1125  0.7283  0.6528  1.0144  1.0062  0.8503  0.7115  0.9981  1.0440  0.3406  0.8957  0.9489  0.5573  0.8931  
## iter 3:  0.7230  0.1539  0.1548  0.6928  0.6712  0.8532  0.9898  0.8088  1.1102  0.7364  0.6510  1.0117  1.0255  0.8386  0.7211  1.0014  1.0339  0.3346  0.8716  0.9615  0.5619  0.9105  
head(imputet_ML)
vis_miss(imputet_ML)

Análisis Cuantitativo de los encuesta ENEMDU

options(scipen = 999)
# install.packages("dplyr")
# install.packages("ggplot2")
# install.packages("readr")
# install.packages("gmodels")
# install.packages("Hmisc")
# install.packages("ggthemes")
library(dplyr)
library(ggplot2) 
library(readr)
library(gmodels)
library(Hmisc)
library(ggthemes)
library(readr)
encuesta <- read.csv( "C:\\Users\\Gutie\\Desktop\\Base\\encuesta.csv")
encuesta <- tbl_df(encuesta)

Procedemos a crear un nuevo conjunto de encuesta

library(dplyr)
encuesta=select(encuesta, "area.x", "vi02", "vi141", "p02", "p03", "p06",
                "nnivins", "p10b", "condact", "ingrl")
# Limitando los valores de ingreso 
encuesta=subset(encuesta, ingrl >= 2 & ingrl<= 5000)

Recodificando las variables

#Recodificando 
encuesta$area.x <- ifelse(encuesta$area.x == 1, "urbano", ifelse(encuesta$area.x == 2, "rural", encuesta$area.x))
encuesta$p02 <- ifelse(encuesta$p02 == 1, "Hombre", ifelse(encuesta$p02 == 2, "Mujer", encuesta$p02))

Transformando en factores a las variables

glimpse(encuesta)
## Rows: 11,831
## Columns: 10
## $ area.x  <chr> "urbano", "urbano", "urbano", "urbano", "urbano", "urbano", "u…
## $ vi02    <int> 1, 3, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 2,…
## $ vi141   <int> 100, 100, 200, 120, 350, 600, 300, 300, 150, 300, 350, 400, 15…
## $ p02     <chr> "Hombre", "Mujer", "Hombre", "Mujer", "Mujer", "Mujer", "Hombr…
## $ p03     <int> 30, 38, 55, 30, 39, 72, 29, 51, 24, 55, 24, 42, 56, 23, 37, 63…
## $ p06     <int> 5, 5, 1, 6, 6, 6, 6, 3, 6, 1, 6, 2, 1, 6, 6, 6, 6, 1, 6, 1, 6,…
## $ nnivins <int> 4, 5, 3, 3, 3, 3, 5, 3, 4, 3, 4, 3, 5, 5, 4, 5, 5, 4, 5, 5, 4,…
## $ p10b    <int> 6, 2, 1, 3, 6, 4, 7, 2, 3, 6, 3, 6, 5, 2, 6, 5, 4, 6, 5, 1, 6,…
## $ condact <int> 1, 1, 1, 4, 4, 4, 1, 4, 4, 1, 1, 2, 1, 1, 3, 1, 1, 4, 1, 1, 1,…
## $ ingrl   <int> 1006, 1011, 460, 210, 322, 8, 1544, 100, 200, 450, 454, 38, 16…
# convertir a factor 
cols<- c("area.x","p02")
encuesta[cols] <- lapply(encuesta[cols], factor)

Variables Categoricas

Se puede trabajar con frecuencias

table(encuesta$area.x)
## 
##  rural urbano 
##    953   2753

Y podemos ver que 953 personas viven en Zona Rural y 2753 en Urbana.

Tabla de contingencia

Por ejemplo la frecuencia de Tipo de vivienda según Zona:

table(encuesta$vi02, encuesta$area.x)
##    
##     rural urbano
##   1   681   1457
##   2    70   1088
##   3    17     72
##   4    26     84
##   5   156     52
##   6     3      0

Proporciones

prop.table(table(encuesta$vi02, encuesta$area.x))
##    
##            rural       urbano
##   1 0.1837560712 0.3931462493
##   2 0.0188882893 0.2935779817
##   3 0.0045871560 0.0194279547
##   4 0.0070156503 0.0226659471
##   5 0.0420939018 0.0140313006
##   6 0.0008094981 0.0000000000

En este caso nos muestra los datos como proporciones totales, pero ¿cómo hacemos si queremos ver porcentajes por fila o columna?.

Esto lo hacemos poniendo una coma y luego 1 (filas) o 2 (columnas).

#Filas 
prop.table(table(encuesta$vi02, encuesta$area.x), 1)
##    
##          rural     urbano
##   1 0.31852198 0.68147802
##   2 0.06044905 0.93955095
##   3 0.19101124 0.80898876
##   4 0.23636364 0.76363636
##   5 0.75000000 0.25000000
##   6 1.00000000 0.00000000
#Columnas 
prop.table(table(encuesta$vi02, encuesta$area.x), 2)
##    
##           rural      urbano
##   1 0.714585519 0.529240828
##   2 0.073452256 0.395205231
##   3 0.017838405 0.026153287
##   4 0.027282267 0.030512169
##   5 0.163693599 0.018888485
##   6 0.003147954 0.000000000

CrossTable()

Un comando muy útil para simplificar los pasos es el comando CrossTable() del paquete gmodels(). El comando nos permite presentar en una misma tabla los porcentajes por fila o columna y el total de la tabla.

CrossTable(encuesta$vi02, encuesta$area.x)
## 
##  
##    Cell Contents
## |-------------------------|
## |                       N |
## | Chi-square contribution |
## |           N / Row Total |
## |           N / Col Total |
## |         N / Table Total |
## |-------------------------|
## 
##  
## Total Observations in Table:  3706 
## 
##  
##               | encuesta$area.x 
## encuesta$vi02 |     rural |    urbano | Row Total | 
## --------------|-----------|-----------|-----------|
##             1 |       681 |      1457 |      2138 | 
##               |    31.315 |    10.840 |           | 
##               |     0.319 |     0.681 |     0.577 | 
##               |     0.715 |     0.529 |           | 
##               |     0.184 |     0.393 |           | 
## --------------|-----------|-----------|-----------|
##             2 |        70 |      1088 |      1158 | 
##               |   174.235 |    60.315 |           | 
##               |     0.060 |     0.940 |     0.312 | 
##               |     0.073 |     0.395 |           | 
##               |     0.019 |     0.294 |           | 
## --------------|-----------|-----------|-----------|
##             3 |        17 |        72 |        89 | 
##               |     1.514 |     0.524 |           | 
##               |     0.191 |     0.809 |     0.024 | 
##               |     0.018 |     0.026 |           | 
##               |     0.005 |     0.019 |           | 
## --------------|-----------|-----------|-----------|
##             4 |        26 |        84 |       110 | 
##               |     0.185 |     0.064 |           | 
##               |     0.236 |     0.764 |     0.030 | 
##               |     0.027 |     0.031 |           | 
##               |     0.007 |     0.023 |           | 
## --------------|-----------|-----------|-----------|
##             5 |       156 |        52 |       208 | 
##               |   196.474 |    68.013 |           | 
##               |     0.750 |     0.250 |     0.056 | 
##               |     0.164 |     0.019 |           | 
##               |     0.042 |     0.014 |           | 
## --------------|-----------|-----------|-----------|
##             6 |         3 |         0 |         3 | 
##               |     6.438 |     2.229 |           | 
##               |     1.000 |     0.000 |     0.001 | 
##               |     0.003 |     0.000 |           | 
##               |     0.001 |     0.000 |           | 
## --------------|-----------|-----------|-----------|
##  Column Total |       953 |      2753 |      3706 | 
##               |     0.257 |     0.743 |           | 
## --------------|-----------|-----------|-----------|
## 
## 

En este caso, el cuadro de arriba, nos dice qué es lo que se muestra en la tabla: N (número de observaciones), Chi-square (estadístico, no interesa por ahora), N/Row total (porcentaje por fila), N/Col Total (porcentaje por columna), N/Table Total (porcentaje total).

Tambien podemos simplificar la tabla para que nos muestre menos resultados, cambiando las opciones:

  • prop.r=TRUE: porcentaje por filas. Si lo ponemos = F no lo muestra.
  • prop.c=TRUE: porcentaje por columnas. Si lo ponemos = F no lo muestra
  • prop.t=TRUE: porcentaje total de la tabla. Si lo ponemos = F no lo muestra
  • prop.chisq=TRUE: Chi-square. Si lo ponemos = F no lo muestra

Entonces por ejemplo si solo queremos el porcentaje por fila y columna, la tabla sería:

CrossTable(encuesta$vi02, encuesta$area.x, prop.t=F, prop.chisq = F)
## 
##  
##    Cell Contents
## |-------------------------|
## |                       N |
## |           N / Row Total |
## |           N / Col Total |
## |-------------------------|
## 
##  
## Total Observations in Table:  3706 
## 
##  
##               | encuesta$area.x 
## encuesta$vi02 |     rural |    urbano | Row Total | 
## --------------|-----------|-----------|-----------|
##             1 |       681 |      1457 |      2138 | 
##               |     0.319 |     0.681 |     0.577 | 
##               |     0.715 |     0.529 |           | 
## --------------|-----------|-----------|-----------|
##             2 |        70 |      1088 |      1158 | 
##               |     0.060 |     0.940 |     0.312 | 
##               |     0.073 |     0.395 |           | 
## --------------|-----------|-----------|-----------|
##             3 |        17 |        72 |        89 | 
##               |     0.191 |     0.809 |     0.024 | 
##               |     0.018 |     0.026 |           | 
## --------------|-----------|-----------|-----------|
##             4 |        26 |        84 |       110 | 
##               |     0.236 |     0.764 |     0.030 | 
##               |     0.027 |     0.031 |           | 
## --------------|-----------|-----------|-----------|
##             5 |       156 |        52 |       208 | 
##               |     0.750 |     0.250 |     0.056 | 
##               |     0.164 |     0.019 |           | 
## --------------|-----------|-----------|-----------|
##             6 |         3 |         0 |         3 | 
##               |     1.000 |     0.000 |     0.001 | 
##               |     0.003 |     0.000 |           | 
## --------------|-----------|-----------|-----------|
##  Column Total |       953 |      2753 |      3706 | 
##               |     0.257 |     0.743 |           | 
## --------------|-----------|-----------|-----------|
## 
## 

Además podemos poner únicamente una variable y nos muestra de una vez las proporciones. Por ejemplo:

CrossTable(encuesta$area.x)
## 
##  
##    Cell Contents
## |-------------------------|
## |                       N |
## |         N / Table Total |
## |-------------------------|
## 
##  
## Total Observations in Table:  3706 
## 
##  
##           |     rural |    urbano | 
##           |-----------|-----------|
##           |       953 |      2753 | 
##           |     0.257 |     0.743 | 
##           |-----------|-----------|
## 
## 
## 
## 

Datos numéricos

Para calcular los estadísticos de las variables numéricas tenemos varias opciones.

Podemos usar el comando summary(). Este comando nos da los principales estadísticos descriptivos (mínimo, máximo, cuartiles, promedio). Este comando podemos aplicarlo a todo el dataframe (nos da los estadísticos de todas las variables a la vez) o solo a una variable. En este caso, vamos a usarlo para toda la base.

summary(encuesta)
##     area.x          vi02           vi141              p02            p03       
##  rural : 953   Min.   :1.000   Min.   :    10.0   Hombre:6957   Min.   :12.00  
##  urbano:2753   1st Qu.:1.000   1st Qu.:   100.0   Mujer :4874   1st Qu.:31.00  
##  NA's  :8125   Median :1.000   Median :   150.0                 Median :42.00  
##                Mean   :1.678   Mean   :   432.7                 Mean   :43.03  
##                3rd Qu.:2.000   3rd Qu.:   200.0                 3rd Qu.:54.00  
##                Max.   :6.000   Max.   :999999.0                 Max.   :92.00  
##                NA's   :8125    NA's   :8125                                    
##       p06           nnivins           p10b           condact     
##  Min.   :1.000   Min.   :1.000   Min.   : 1.000   Min.   :0.000  
##  1st Qu.:1.000   1st Qu.:3.000   1st Qu.: 3.000   1st Qu.:1.000  
##  Median :4.000   Median :4.000   Median : 5.000   Median :2.000  
##  Mean   :3.552   Mean   :3.905   Mean   : 4.576   Mean   :2.164  
##  3rd Qu.:6.000   3rd Qu.:5.000   3rd Qu.: 6.000   3rd Qu.:4.000  
##  Max.   :6.000   Max.   :5.000   Max.   :10.000   Max.   :4.000  
##                                  NA's   :261                     
##      ingrl       
##  Min.   :   2.0  
##  1st Qu.: 200.0  
##  Median : 450.0  
##  Mean   : 522.6  
##  3rd Qu.: 640.0  
##  Max.   :5000.0  
## 

NOTA: Si queremos calcular los estadísticos para una sola variable ponemos el nombre de la base de datos seguido del signo de de dólar. Por ejemplo: summary(encuesta “$” ingreso).

Además podemos hacer uso de funciones para calcular individualmente los estadísticos descriptivos: mean(), median(), min(), max(), IQR() (rango intercuartílico), sd() (desviación estándar).

describe

Un comando muy útil es describe() del paquete Hmisc, ya que nos muestra un panorama más completo de las variables. En el caso de las numéricas nos muestra los estadísticos descriptivos, la cantidad de observaciones, los valores perdidos. Para las variables categóricas, muestra la frecuencia, las proporciones y los valores perdidos.

describe(encuesta)
## encuesta 
## 
##  10  Variables      11831  Observations
## --------------------------------------------------------------------------------
## area.x 
##        n  missing distinct 
##     3706     8125        2 
##                         
## Value       rural urbano
## Frequency     953   2753
## Proportion  0.257  0.743
## --------------------------------------------------------------------------------
## vi02 
##        n  missing distinct     Info     Mean      Gmd 
##     3706     8125        6    0.777    1.678   0.9524 
##                                               
## Value          1     2     3     4     5     6
## Frequency   2138  1158    89   110   208     3
## Proportion 0.577 0.312 0.024 0.030 0.056 0.001
## 
## For the frequency table, variable is rounded to the nearest 0
## --------------------------------------------------------------------------------
## vi141 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##     3706     8125       69    0.989    432.7    651.4       50       60 
##      .25      .50      .75      .90      .95 
##      100      150      200      300      350 
## 
## lowest :     10     20     30     35     40, highest:   1500   1600   1800   2000 999999
## --------------------------------------------------------------------------------
## p02 
##        n  missing distinct 
##    11831        0        2 
##                         
## Value      Hombre  Mujer
## Frequency    6957   4874
## Proportion  0.588  0.412
## --------------------------------------------------------------------------------
## p03 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##    11831        0       81        1    43.03    16.85       21       24 
##      .25      .50      .75      .90      .95 
##       31       42       54       63       68 
## 
## lowest : 12 13 14 15 16, highest: 88 89 90 91 92
## --------------------------------------------------------------------------------
## p06 
##        n  missing distinct     Info     Mean      Gmd 
##    11831        0        6    0.927    3.552    2.347 
##                                               
## Value          1     2     3     4     5     6
## Frequency   4039   914   624   412  2411  3431
## Proportion 0.341 0.077 0.053 0.035 0.204 0.290
## 
## For the frequency table, variable is rounded to the nearest 0
## --------------------------------------------------------------------------------
## nnivins 
##        n  missing distinct     Info     Mean      Gmd 
##    11831        0        5    0.895    3.905   0.9654 
##                                         
## Value          1     2     3     4     5
## Frequency    261    17  3869  4121  3563
## Proportion 0.022 0.001 0.327 0.348 0.301
## 
## For the frequency table, variable is rounded to the nearest 0
## --------------------------------------------------------------------------------
## p10b 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##    11570      261       10    0.906    4.576    1.845        2        2 
##      .25      .50      .75      .90      .95 
##        3        5        6        6        6 
##                                                                       
## Value          1     2     3     4     5     6     7     8     9    10
## Frequency    520  1163  2137   845  1650  5046    61    40    42    66
## Proportion 0.045 0.101 0.185 0.073 0.143 0.436 0.005 0.003 0.004 0.006
## 
## For the frequency table, variable is rounded to the nearest 0
## --------------------------------------------------------------------------------
## condact 
##        n  missing distinct     Info     Mean      Gmd 
##    11831        0        5     0.85    2.164    1.377 
##                                         
## Value          0     1     2     3     4
## Frequency      9  5717  2141   258  3706
## Proportion 0.001 0.483 0.181 0.022 0.313
## 
## For the frequency table, variable is rounded to the nearest 0
## --------------------------------------------------------------------------------
## ingrl 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##    11831        0     1307        1    522.6    462.5       50       96 
##      .25      .50      .75      .90      .95 
##      200      450      640     1020     1379 
## 
## lowest :    2    3    4    5    6, highest: 4739 4850 4900 4930 5000
## --------------------------------------------------------------------------------

Dplyr Y summary()

Group_by()

Group by es uno de los comandos más útiles que tiene el paquete dplyr. Como su nombre lo dice nos permite agrupar variables y hacer cálculos entre los grupos, por ejemplo calcular nuevas variables o estadísticos para los grupos.

Por ejemplo, como vimos anteriormente con la función mean() podemos calcular el ingreso promedio de toda la variable. Pero ¿Qué pasa si queremos crear una nueva variable cuyo valor sea el ingreso promedio de la Región de la planificación?. En este caso podemos hacer uso de group_by.

encuesta <- encuesta %>%
  group_by(area.x) %>%
  mutate(ingresoprom=mean(ingrl))

También podemos agrupar por más de una variable, lo único que debemos hacer es separar las variables por coma. Por ejemplo si queremos agrupar por zona y sexo, el comando sería: group_by(encuesta, ZONA, sexo).

Summarise

Finalmente otro de los comandos más comunes de dplyr es summarise(). Este como su nombre lo indica nos ayuda a resumir valores. Este comando funciona muy bien combinado con group_by(). Por ejemplo si queremos calcular el ingreso y la edad promedio por region.

encuesta %>%
  group_by(area.x) %>%
  summarise(ingresoprom=mean(ingrl),
            edadprom=mean(p03))

Note que si queremos calcular más de un estadístico, lo único que debemos hacer es separarlos por comas, al igual que con la función mutate.

Algunas funciones comunes que podemos calcular con summarise:

sd(): desviación estandar mean(): promedio n(): esta función no requiere ningún argumento y calcula la cantidad de observaciones. sum(): suma del valor de la variable. min() y max(): valor mínimo y máximo.

encuesta %>%
  group_by(area.x) %>%
  summarise(ingresoprom=mean(ingrl),
            edadprom=mean(p03), sd_ing=sd(ingrl))

Inferencia estadística

Estadistica Parametrica

¿Cuando se aplican las pruebas parametricas?

  • Recopilación de información mediante un muestreo aleatorio
  • Los datos estan en intervalos o Razon
  • Los datos son mayores a 30
  • Distribución Normal

Supuestos de la estadistica parametrica

  • Normalidad
prueba <- readxl::read_xls("C:\\Users\\Gutie\\Downloads\\Prueba.xls")

## Supuestos de Normalidad: Shaphiro Wilcks y Kolmogorov

#install.packages("nortest")
library(nortest)
# Shaphiro Wilcks cuando n<50 
shapiro.test(prueba$LINCOMEP)
## 
##  Shapiro-Wilk normality test
## 
## data:  prueba$LINCOMEP
## W = 0.87042, p-value = 0.0000000000000002481
# Kolmogorov cuando n>50
lillie.test(prueba$LINCOMEP)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  prueba$LINCOMEP
## D = 0.15119, p-value < 0.00000000000000022
# H0: los datos no son normales p<0.05 
# H1: los datos son normales p>0.05

#Prueba QQ
qqnorm(prueba$LINCOMEP)
qqline(prueba$LINCOMEP)

  • Homogeneidad en las varianza
# Homogeneidad en las varianzas

#install.packages("car")
library(car)
## Loading required package: carData
## 
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
## 
##     recode
## The following object is masked from 'package:purrr':
## 
##     some
# Test F 
ftest <- var.test(prueba$LINCOMEP, prueba$Ctry_Code); ftest
## 
##  F test to compare two variances
## 
## data:  prueba$LINCOMEP and prueba$Ctry_Code
## F = 0.014918, num df = 341, denom df = 341, p-value <
## 0.00000000000000022
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.01206014 0.01845191
## sample estimates:
## ratio of variances 
##         0.01491753
# bartlet test 
bartlett.test(prueba$LINCOMEP~prueba$Ctry_Code)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  prueba$LINCOMEP by prueba$Ctry_Code
## Bartlett's K-squared = 80.389, df = 17, p-value = 0.0000000003271
#grafico 
boxplot(prueba$LINCOMEP~prueba$Ctry_Code)

# H0: las varianzas son diferentes p<0.05 
# H1: las varianzas son iguales p>0.05

¿Qué pruebas son las más usadas en la estadistica párametrica?

  • t de student
  • Correlación de pearson
  • Análisis de Varianza ANOVA
  • Regresión lineal

Estadistica No Parametrica

  • Recopilación de información mediante un muestreo no aleatorio
  • Los datos estan en nominal u ordinal
  • Los datos son menores a 30
  • Distribución libre

Pruebas No Parametricas: Prueba U de Mann-Whitney

library(dplyr)

austria <- prueba %>%
  filter(COUNTRY == "AUSTRIA")

austria_1 <- austria$LINCOMEP

belgium <- prueba %>%
  filter(COUNTRY == "BELGIUM")

belgium1 <- belgium$LINCOMEP

# Prueba U de Mann-Whitney 
wilcox.test(austria_1, belgium1)
## 
##  Wilcoxon rank sum exact test
## 
## data:  austria_1 and belgium1
## W = 77, p-value = 0.001991
## alternative hypothesis: true location shift is not equal to 0
# H0: mediana de los grupos iguales p>0.05
# H1: mediana de los grupos diferentes p<0.05

Correlaciones

¿Qué es? Una correlación mide la relación lineal entre dos variables. Por ejemplo la relación entre el la experiencia laboral y el salario.

Esta se mide con un coeficiente que va de -1 a 1.

  • r = 1, la relación es positiva perfecta
  • 0 < r < 1 la relación es positiva
  • r = 0 no hay relación lineal
  • -1 < r < 0 la relación es negativa
  • r = -1 la relación es negativa perfecta

Primero vamos a instalar y cargar los siguientes paquetes:

# install.packages("GGally")
# install.packages("corrplot")
# install.packages("PerformanceAnalytics")

library(GGally)
library(corrplot)
library(PerformanceAnalytics)

Calculo del coeficiente de correlación

Cómo calcular una correlación entre dos variables? Podemos hacerlo con el comando cor(), donde tenemos que enlistar, separadas por coma, las variables que queremos correlacionar.

cor(imputet_ML$ROA, imputet_ML$RNA)
## [1] 0.946957

Esto nos muestra que el coeficiente de correlación es igual a 0.95. Sin embargo, debemos saber si esta relación es estadísticamente significativa, para lo que requerimos el p-value. Este lo obtenemos con el comando cor.test().

cor.test(imputet_ML$ROA, imputet_ML$RNA)
## 
##  Pearson's product-moment correlation
## 
## data:  imputet_ML$ROA and imputet_ML$RNA
## t = 24.477, df = 69, p-value < 0.00000000000000022
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.9160307 0.9666910
## sample estimates:
##      cor 
## 0.946957

Esto nos da como resultado un p-value de 0.000, por lo que rechazamos la hipótesis nula de que la correlación es igual a cero, a un nivel de significancia del 1%.

Matriz de correlación

También podemos calcular de una sola vez la correlación entre varias variables, con una matriz de correlación. Para ello usamos el mismo comando cor(), pero ponemos como argumento de la función la base de datos:

round(cor(imputet_ML), 2)
##         AÑO    LC    PA    EA    EP   ECP   ELP    CI   EAF     A    AF    FP
## AÑO    1.00  0.30  0.30 -0.04  0.20  0.24 -0.23 -0.17  0.09  0.19  0.02  0.17
## LC     0.30  1.00  1.00 -0.47 -0.10  0.30 -0.29 -0.51  0.28 -0.10  0.05 -0.04
## PA     0.30  1.00  1.00 -0.46 -0.10  0.29 -0.29 -0.52  0.26 -0.10  0.05 -0.04
## EA    -0.04 -0.47 -0.46  1.00  0.41 -0.28  0.28  0.01 -0.27  0.41 -0.24  0.29
## EP     0.20 -0.10 -0.10  0.41  1.00 -0.12  0.12  0.06 -0.12  1.00 -0.04  0.96
## ECP    0.24  0.30  0.29 -0.28 -0.12  1.00 -1.00 -0.03  0.22 -0.12  0.09 -0.15
## ELP   -0.23 -0.29 -0.29  0.28  0.12 -1.00  1.00  0.03 -0.22  0.12 -0.09  0.15
## CI    -0.17 -0.51 -0.52  0.01  0.06 -0.03  0.03  1.00 -0.03  0.06  0.02  0.04
## EAF    0.09  0.28  0.26 -0.27 -0.12  0.22 -0.22 -0.03  1.00 -0.12  0.06 -0.06
## A      0.19 -0.10 -0.10  0.41  1.00 -0.12  0.12  0.06 -0.12  1.00 -0.03  0.96
## AF     0.02  0.05  0.05 -0.24 -0.04  0.09 -0.09  0.02  0.06 -0.03  1.00 -0.02
## FP     0.17 -0.04 -0.04  0.29  0.96 -0.15  0.15  0.04 -0.06  0.96 -0.02  1.00
## EPC    0.25 -0.12 -0.12  0.51  0.95 -0.06  0.06  0.05 -0.15  0.95  0.02  0.86
## EPNC   0.16 -0.07 -0.06  0.28  0.98 -0.14  0.14  0.06 -0.08  0.98  0.02  0.98
## ACYLP  0.20 -0.10 -0.09  0.40  1.00 -0.11  0.11  0.06 -0.11  1.00  0.02  0.96
## RC    -0.09 -0.15 -0.15 -0.13 -0.08 -0.10  0.10  0.09 -0.12 -0.08  0.05 -0.07
## RAF    0.01 -0.07 -0.07  0.12 -0.02  0.00  0.00  0.02  0.77 -0.02  0.03 -0.03
## RV    -0.03 -0.26 -0.25  0.24 -0.02 -0.10  0.10  0.24  0.15 -0.02  0.04 -0.08
## CCP    0.26  0.83  0.85 -0.28 -0.07  0.25 -0.25 -0.73  0.14 -0.07  0.03 -0.03
## PCP    0.13  0.22  0.21 -0.09 -0.05  0.30 -0.30 -0.19  0.12 -0.06  0.05 -0.02
## IGADV  0.24  0.82  0.84 -0.26 -0.07  0.23 -0.23 -0.73  0.12 -0.07  0.03 -0.04
## ICF   -0.09 -0.07 -0.07  0.16 -0.08 -0.37  0.37 -0.14 -0.11 -0.08 -0.44  0.00
## RNA    0.01  0.05  0.06 -0.06 -0.01 -0.21  0.21  0.06  0.05  0.01  0.05 -0.01
## MB     0.05  0.05  0.06 -0.01  0.05 -0.26  0.26  0.05  0.02  0.06  0.09  0.02
## MO    -0.25 -0.81 -0.83  0.27  0.08 -0.26  0.26  0.73 -0.14  0.08 -0.03  0.05
## RNV    0.24  0.81  0.83 -0.25 -0.07  0.22 -0.22 -0.73  0.11 -0.07  0.03 -0.04
## ROP    0.15 -0.07 -0.07  0.28  0.97 -0.15  0.15  0.07 -0.08  0.97  0.03  0.97
## RF    -0.09  0.05  0.05 -0.28 -0.06 -0.22  0.22  0.06  0.08 -0.05  0.42  0.02
## UO_TA -0.10 -0.22 -0.22  0.12  0.04 -0.23  0.23  0.19 -0.08  0.06  0.06  0.02
## ROE   -0.04  0.11  0.11 -0.36 -0.09 -0.16  0.16  0.01  0.15 -0.07  0.43  0.02
## ROA    0.09  0.10  0.10 -0.11 -0.02 -0.16  0.16  0.05  0.09 -0.01  0.06 -0.01
##         EPC  EPNC ACYLP    RC   RAF    RV   CCP   PCP IGADV   ICF   RNA    MB
## AÑO    0.25  0.16  0.20 -0.09  0.01 -0.03  0.26  0.13  0.24 -0.09  0.01  0.05
## LC    -0.12 -0.07 -0.10 -0.15 -0.07 -0.26  0.83  0.22  0.82 -0.07  0.05  0.05
## PA    -0.12 -0.06 -0.09 -0.15 -0.07 -0.25  0.85  0.21  0.84 -0.07  0.06  0.06
## EA     0.51  0.28  0.40 -0.13  0.12  0.24 -0.28 -0.09 -0.26  0.16 -0.06 -0.01
## EP     0.95  0.98  1.00 -0.08 -0.02 -0.02 -0.07 -0.05 -0.07 -0.08 -0.01  0.05
## ECP   -0.06 -0.14 -0.11 -0.10  0.00 -0.10  0.25  0.30  0.23 -0.37 -0.21 -0.26
## ELP    0.06  0.14  0.11  0.10  0.00  0.10 -0.25 -0.30 -0.23  0.37  0.21  0.26
## CI     0.05  0.06  0.06  0.09  0.02  0.24 -0.73 -0.19 -0.73 -0.14  0.06  0.05
## EAF   -0.15 -0.08 -0.11 -0.12  0.77  0.15  0.14  0.12  0.12 -0.11  0.05  0.02
## A      0.95  0.98  1.00 -0.08 -0.02 -0.02 -0.07 -0.06 -0.07 -0.08  0.01  0.06
## AF     0.02  0.02  0.02  0.05  0.03  0.04  0.03  0.05  0.03 -0.44  0.05  0.09
## FP     0.86  0.98  0.96 -0.07 -0.03 -0.08 -0.03 -0.02 -0.04  0.00 -0.01  0.02
## EPC    1.00  0.88  0.96 -0.10 -0.02 -0.03 -0.08 -0.06 -0.09 -0.13  0.00  0.07
## EPNC   0.88  1.00  0.98 -0.06 -0.01 -0.03 -0.04 -0.05 -0.05 -0.08  0.02  0.06
## ACYLP  0.96  0.98  1.00 -0.08 -0.02 -0.03 -0.06 -0.05 -0.07 -0.10  0.01  0.07
## RC    -0.10 -0.06 -0.08  1.00 -0.05  0.05 -0.13  0.01 -0.11 -0.16 -0.09 -0.02
## RAF   -0.02 -0.01 -0.02 -0.05  1.00  0.45 -0.07 -0.07 -0.06 -0.11  0.13  0.09
## RV    -0.03 -0.03 -0.03  0.05  0.45  1.00 -0.29 -0.28 -0.26 -0.20  0.19  0.08
## CCP   -0.08 -0.04 -0.06 -0.13 -0.07 -0.29  1.00  0.26  1.00 -0.01  0.04 -0.01
## PCP   -0.06 -0.05 -0.05  0.01 -0.07 -0.28  0.26  1.00  0.26 -0.07 -0.88 -0.79
## IGADV -0.09 -0.05 -0.07 -0.11 -0.06 -0.26  1.00  0.26  1.00 -0.02  0.03 -0.01
## ICF   -0.13 -0.08 -0.10 -0.16 -0.11 -0.20 -0.01 -0.07 -0.02  1.00  0.02 -0.01
## RNA    0.00  0.02  0.01 -0.09  0.13  0.19  0.04 -0.88  0.03  0.02  1.00  0.86
## MB     0.07  0.06  0.07 -0.02  0.09  0.08 -0.01 -0.79 -0.01 -0.01  0.86  1.00
## MO     0.10  0.06  0.08  0.12  0.07  0.29 -1.00 -0.33 -0.99  0.01  0.03  0.08
## RNV   -0.08 -0.04 -0.06 -0.11 -0.07 -0.25  1.00  0.23  1.00 -0.01  0.06  0.01
## ROP    0.86  0.99  0.97 -0.05 -0.01  0.00 -0.05 -0.10 -0.06 -0.09  0.06  0.11
## RF    -0.12  0.05 -0.02  0.03  0.11  0.11  0.00 -0.56  0.01 -0.12  0.68  0.62
## UO_TA  0.06  0.05  0.06  0.05  0.08  0.42 -0.18 -0.74 -0.19 -0.05  0.69  0.63
## ROE   -0.15  0.04 -0.05 -0.01  0.09  0.02  0.08 -0.48  0.07 -0.10  0.65  0.57
## ROA   -0.02  0.00 -0.01 -0.10  0.10  0.12  0.08 -0.79  0.07  0.03  0.95  0.80
##          MO   RNV   ROP    RF UO_TA   ROE   ROA
## AÑO   -0.25  0.24  0.15 -0.09 -0.10 -0.04  0.09
## LC    -0.81  0.81 -0.07  0.05 -0.22  0.11  0.10
## PA    -0.83  0.83 -0.07  0.05 -0.22  0.11  0.10
## EA     0.27 -0.25  0.28 -0.28  0.12 -0.36 -0.11
## EP     0.08 -0.07  0.97 -0.06  0.04 -0.09 -0.02
## ECP   -0.26  0.22 -0.15 -0.22 -0.23 -0.16 -0.16
## ELP    0.26 -0.22  0.15  0.22  0.23  0.16  0.16
## CI     0.73 -0.73  0.07  0.06  0.19  0.01  0.05
## EAF   -0.14  0.11 -0.08  0.08 -0.08  0.15  0.09
## A      0.08 -0.07  0.97 -0.05  0.06 -0.07 -0.01
## AF    -0.03  0.03  0.03  0.42  0.06  0.43  0.06
## FP     0.05 -0.04  0.97  0.02  0.02  0.02 -0.01
## EPC    0.10 -0.08  0.86 -0.12  0.06 -0.15 -0.02
## EPNC   0.06 -0.04  0.99  0.05  0.05  0.04  0.00
## ACYLP  0.08 -0.06  0.97 -0.02  0.06 -0.05 -0.01
## RC     0.12 -0.11 -0.05  0.03  0.05 -0.01 -0.10
## RAF    0.07 -0.07 -0.01  0.11  0.08  0.09  0.10
## RV     0.29 -0.25  0.00  0.11  0.42  0.02  0.12
## CCP   -1.00  1.00 -0.05  0.00 -0.18  0.08  0.08
## PCP   -0.33  0.23 -0.10 -0.56 -0.74 -0.48 -0.79
## IGADV -0.99  1.00 -0.06  0.01 -0.19  0.07  0.07
## ICF    0.01 -0.01 -0.09 -0.12 -0.05 -0.10  0.03
## RNA    0.03  0.06  0.06  0.68  0.69  0.65  0.95
## MB     0.08  0.01  0.11  0.62  0.63  0.57  0.80
## MO     1.00 -0.99  0.07  0.04  0.24 -0.04 -0.02
## RNV   -0.99  1.00 -0.05  0.02 -0.15  0.09  0.10
## ROP    0.07 -0.05  1.00  0.08  0.11  0.06  0.05
## RF     0.04  0.02  0.08  1.00  0.47  0.97  0.66
## UO_TA  0.24 -0.15  0.11  0.47  1.00  0.41  0.66
## ROE   -0.04  0.09  0.06  0.97  0.41  1.00  0.67
## ROA   -0.02  0.10  0.05  0.66  0.66  0.67  1.00

Este comando nos da la misma matriz de correlación que obtuvimos arriba, y abajo nos da el p-value. En todos algunos casos el p-value es muy bajo (=0), lo cual quiere decir que esos casos son estadísticamente significativo.

Ver la matriz de forma gráfica

odemos graficar con el comando corrplot. Ver más en este enlace:

Lo primero es calcular la matriz de correlación y guardarla en un objeto y luego graficarlo. En este caso vamos a graficar los coeficientes.

correlacion<-round(cor(imputet_ML), 1)

corrplot(correlacion, method="number", type="upper")

También podemos hacer gráficos de dispersión, calcular los coeficientes de una sola vez y ver si son estadísticamente significativos, con un solo comando:

chart.Correlation(base, histogram = F, pch = 19)

En ese gráfico podemos observar gráficamente que hay una relación entre el porcentaje de ROA y RNA y que el coeficiente es de 0.95 ultima columna y vigecima tercer fila y es estadístcamente significativo (esto se representa con los tres puntos rojos).