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)
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 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.
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