Packages

library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.2     ✓ purrr   0.3.4
## ✓ tibble  3.0.3     ✓ dplyr   1.0.0
## ✓ tidyr   1.1.0     ✓ stringr 1.4.0
## ✓ readr   1.3.1     ✓ forcats 0.5.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(wooldridge)

Funciones de probabilidad

R tiene la capacidad de manejar todas las funciones de probabilidad. Permite obtener probabilidades y valores critícos. Existen funciones de probabilidad para variables discretas y para variables continuas. Una variable aleatoria es una variable cuyos resultados dependen de un proceso aleatorio.

R maneja cuatro tipos de funciones de probabilidad:

Además R tiene funciones para crear datos pseudolaeatorios para cada función de probabilidad. A continuación las funciones de probabilidad disponibles en R para cada distribución.

Funciones de probabilidad en R Funciones de densidad de probabilidad y funciones acumulada de probabilidad La función de densidad de probabilidad (PDF) sirve para obtener la probabilidad de que la variable aleatoria tome un valor especifíco. La función acumulada de probabilidad (CDF) sirve para obtener la probabilidad de que la variable aleatoria se encuentre al menos en cierto valor.

PDF

La PDF es la pendiente de la CDF

PDF vs CDF

La PDF es usada más en variables aleatorias discretas. La CDF en ambas.

Ejemplo Una moneda no cargada se lanza 1 vez con probabilidad de éxito p=0.5.

Usando una PDF tendríamos lo siguiente:

x_trial<-1
dbinom(x_trial,1,0.5)
## [1] 0.5

Ahora X es el número de bolas blancas que se saca con reemplazo de un saco de 10 bolas en donde el 20% son bolas blancas. Esto se hace 10 veces.

x_trial<-seq(0,10)
fx<- dbinom(x_trial, 10, 0.2)
fx
##  [1] 0.1073741824 0.2684354560 0.3019898880 0.2013265920 0.0880803840
##  [6] 0.0264241152 0.0055050240 0.0007864320 0.0000737280 0.0000040960
## [11] 0.0000001024

Ahora gráficaré la PDF

plot(x_trial,fx,type="h")

Ahora usemos la CDF

x_trial_2<-seq(0,10)
fx_2<- pbinom(x_trial, 10, 0.2)
fx_2
##  [1] 0.1073742 0.3758096 0.6777995 0.8791261 0.9672065 0.9936306 0.9991356
##  [8] 0.9999221 0.9999958 0.9999999 1.0000000

Ahora grafiquemos la CDF

plot(x_trial_2,fx_2,type="h")

¿Qué pasa con la PDF si n=1000000…?

x_trial_i<-seq(0,10000)
fx_i<- dbinom(x_trial_i, 10000, 0.2)
plot(x_trial_i,fx_i,type = "h")

Ahora como buscamos la probabilidad de sacar entre 6 y 4 bolas blancas. Pero ahora se que la media de x es 5 y la varianza 11.

pnorm(6,5,11) - pnorm(4,5,11)
## [1] 0.07243517

Valores críticos Simplemente son los quantiles de mi distribución de probabilidad.

qnorm(0.975)
## [1] 1.959964
qt(0.95,10)
## [1] 1.812461
qt(0.975,150)
## [1] 1.975905

Crear valores aleatorios Es importante saber crear números aleatorios (psuedoaleatorios) para poder hacer simulaciones. R me permite crear números de siguen las ditribuciones probabilidad. Simepre necesitamos usar un seed para reproducibilidad.

set.seed(12345)
rnorm(100)
##   [1]  0.58552882  0.70946602 -0.10930331 -0.45349717  0.60588746 -1.81795597
##   [7]  0.63009855 -0.27618411 -0.28415974 -0.91932200 -0.11624781  1.81731204
##  [13]  0.37062786  0.52021646 -0.75053199  0.81689984 -0.88635752 -0.33157759
##  [19]  1.12071265  0.29872370  0.77962192  1.45578508 -0.64432843 -1.55313741
##  [25] -1.59770952  1.80509752 -0.48164736  0.62037980  0.61212349 -0.16231098
##  [31]  0.81187318  2.19683355  2.04919034  1.63244564  0.25427119  0.49118828
##  [37] -0.32408658 -1.66205024  1.76773385  0.02580105  1.12851083 -2.38035806
##  [43] -1.06026555  0.93714054  0.85445172  1.46072940 -1.41309878  0.56740325
##  [49]  0.58318765 -1.30679883 -0.54038607  1.94769266  0.05359027  0.35166284
##  [55] -0.67097654  0.27795369  0.69117127  0.82379533  2.14506502 -2.34694398
##  [61]  0.14959198 -1.34253148  0.55330308  1.58996284 -0.58687959 -1.83237731
##  [67]  0.88813943  1.59348847  0.51685467 -1.29567168  0.05461558 -0.78464937
##  [73] -1.04935282  2.33051196  1.40270538  0.94260085  0.82625829 -0.81154049
##  [79]  0.47624828  1.02125841  0.64538307  1.04314355 -0.30436911  2.47711092
##  [85]  0.97122067  1.86709918  0.67204247 -0.30795338  0.53652372  0.82487007
##  [91] -0.96390148 -0.85508251  1.88694694 -0.39181937 -0.98063295  0.68733210
##  [97] -0.50504352  2.15771982 -0.59979756 -0.69454669
rt(100,200)
##   [1]  0.23829820  0.78481722 -0.54592011 -0.17378260 -1.01823599  1.18598171
##   [7] -0.08305929  0.51491485  1.41667477  1.30371569  1.56790294  1.80326542
##  [13] -2.26464812  0.87912938 -1.33363520  0.51220234  0.66628600 -0.44931867
##  [19] -2.10039862  0.01547644 -1.48781005  0.89206009 -1.57996081  0.20401993
##  [25] -0.41667800 -0.34399420 -0.66854356 -0.22480780 -2.23612899  0.67665774
##  [31]  0.57918666  0.48546998  0.29976929  0.67663853  0.33749628  0.18298808
##  [37] -0.99813761  1.08871650  0.07140595  0.37830068 -0.10327668  0.43960699
##  [43] -0.97610713  0.87239242 -0.32320080 -0.62323116  1.01857241  0.11556516
##  [49]  0.75190374  1.03919854  1.03824511  0.30626811 -1.93339581 -1.18075158
##  [55]  0.44919020 -2.41532518 -0.24262141  0.53245774  0.08183074 -0.26470429
##  [61] -0.45188461 -0.62372295  0.25800718  0.08354653  1.04472289  0.89064282
##  [67] -0.42347100  1.09533104  1.43372608  0.33607645 -0.32093248  0.49752996
##  [73]  0.67009656 -0.14731333  0.89499559  0.51469875 -0.24384000  0.64680720
##  [79]  0.72696144 -0.32825470 -0.39217726 -0.80848020  0.63681267  0.10624624
##  [85] -0.72584667  0.78553323  0.42152948 -1.16323107  0.42770879  0.88182142
##  [91] -0.41658452 -0.11753815  1.17750249 -0.30440414 -0.92443077  1.90583448
##  [97] -0.39426446 -1.26597288 -0.75833186  0.57715592

Yo puedo tomar esto y hacer un gráfico.

 hist(rnorm(100))

hist(rt(100,200))

Pruebas de hipotesis Usemos la base del libro de Wooldridge audit.

audit<-wooldridge::audit
help(audit)

Ahora hagamos una prueba de hipotesis de dos colas. Ho= x =0

t.test(audit$w)
## 
##  One Sample t-test
## 
## data:  audit$w
## t = 11.54, df = 240, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  0.2959298 0.4177631
## sample estimates:
## mean of x 
## 0.3568465

Prueba de hipotesis de una cola izquierda. H0: x<0

t.test(audit$w,alternative = "less")
## 
##  One Sample t-test
## 
## data:  audit$w
## t = 11.54, df = 240, p-value = 1
## alternative hypothesis: true mean is less than 0
## 95 percent confidence interval:
##       -Inf 0.4079086
## sample estimates:
## mean of x 
## 0.3568465

Prueba de hipotesis de una cola derecha. H0: x>0

t.test(audit$w,alternative = "greater")
## 
##  One Sample t-test
## 
## data:  audit$w
## t = 11.54, df = 240, p-value < 2.2e-16
## alternative hypothesis: true mean is greater than 0
## 95 percent confidence interval:
##  0.3057843       Inf
## sample estimates:
## mean of x 
## 0.3568465

También podemos hacer test de hipotesis entre dos variables. Importante para conocer si las observaciones son comparables. Ho: x=y Ho: x-y=0

t.test(audit$w,audit$b)
## 
##  Welch Two Sample t-test
## 
## data:  audit$w and audit$b
## t = 3.2388, df = 471.04, p-value = 0.001285
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  0.05222177 0.21333840
## sample estimates:
## mean of x mean of y 
## 0.3568465 0.2240664

Es un mismo que testear la diferencia entre w-b

t.test(audit$y)
## 
##  One Sample t-test
## 
## data:  audit$y
## t = -4.2768, df = 240, p-value = 2.739e-05
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  -0.1939385 -0.0716217
## sample estimates:
##  mean of x 
## -0.1327801

Correlación Genero datos aleatorios

x<- rnorm(100)
y<- rt(100,20)

Puedo evaluar graficamente la correlación entre dos variables usando un gráfico de dispersión o directaent eusando cor().

plot(x,y)

cor(x,y)
## [1] 0.02797381

También podemos obetener la covarianza usando cov()

cov(x,y)
## [1] 0.03354786

Podemos probar de manera estadística si la corr=0. Obtenemos el test de Pearson que sigue una distribución chi cuadrado.

cor.test(x,y)
## 
##  Pearson's product-moment correlation
## 
## data:  x and y
## t = 0.27704, df = 98, p-value = 0.7823
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.1693749  0.2231657
## sample estimates:
##        cor 
## 0.02797381

Para variables categóricas existe la bondad de ajuste con chisq.test()

chisq.test(audit$w,audit$b)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  audit$w and audit$b
## X-squared = 42.559, df = 1, p-value = 6.859e-11