Chapter 3 Module III

3.0.1 Datos numéricos

El manejar datos numéricos en R es muy sencillo e intuitivo pues podemos conocer inmediatamente su distribución, media, mediana, rango intercuantílico y basicamente cualquier estadístico que necesitemos.

# Antes realizamos algunas preparaciones frecuentes: por ejemplo indicar que no queremos notiación científica e indicar que no queremos 
options(scipen = 999, digits = 3)

# Ahora si, cargamos una base de datos ya precargada de R
# La base mtcars brinda información sobre el desempeño de diferentes modelos de coches.

datos<-as.data.frame(mtcars)
head(datos)
##                    mpg cyl disp  hp drat   wt qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.62 16.5  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.88 17.0  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.32 18.6  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.21 19.4  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.44 17.0  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.46 20.2  1  0    3    1

3.0.2 Estadísticos con R base

mean(datos$mpg)
## [1] 20.1
sd(datos$mpg)
## [1] 6.03
var(datos$mpg)
## [1] 36.3
median(datos$mpg)
## [1] 19.2
quantile(datos$mpg)
##   0%  25%  50%  75% 100% 
## 10.4 15.4 19.2 22.8 33.9
hist(datos$mpg)

summary(datos$mpg)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    10.4    15.4    19.2    20.1    22.8    33.9

3.0.3 Estadísticos con rl paquete Mosaic

library(mosaic)
mean(~hp, data=datos)
## [1] 147
sd(~hp, data=datos)
## [1] 68.6
var(~hp, data=datos)
## [1] 4701
median(~hp, data=datos)
## [1] 123
quantile(~hp, data=datos)
##    0%   25%   50%   75%  100% 
##  52.0  96.5 123.0 180.0 335.0
histogram(~hp, data=datos)

favstats(~hp, data=datos)
##  min   Q1 median  Q3 max mean   sd  n missing
##   52 96.5    123 180 335  147 68.6 32       0
with(datos, mean(mpg))
## [1] 20.1
with(datos,sd(mpg))
## [1] 6.03
with(datos,var(mpg))
## [1] 36.3
with(datos,median(mpg))
## [1] 19.2
with(datos,quantile(mpg))
##   0%  25%  50%  75% 100% 
## 10.4 15.4 19.2 22.8 33.9
with(datos,hist( mpg))

3.0.4 Análisis gráfico

Recordemos que una variable númerica se puede comprender visualmente con un histograma. Consulta este link para una guía de tipos de variables y su gráfico predilecto.

Con R base

hist(datos$mpg, breaks = 10, main = "Histograma de MPG", xlab="Miles per Gallon")

Con Mosaic

histogram(~ mpg, width=5, center=2.5, data=datos)

3.0.5 Otros

# dotplot
dotPlot(~ mpg, data=datos)

# densidades

densityplot(~ mpg, data=datos)

# histograma con distribución en el backgroudn
histogram(~ cesd, fit="normal", data=filter(HELPrct, sex=='female'))

#histograma dividendo por una variable categórica
histogram(~ cesd | sex, data=HELPrct)

3.1 Densidad

densityplot(~ cesd, data=HELPrct) #densidad de la variable cesd

densityplot(~ cesd, data=HELPrct)

ladd(panel.abline(v=60, lty=2, lwd=2, col="grey")) #Ahora agregamos una linea vertical gris

densityplot(~ cesd, data=HELPrct)

ladd(panel.mathdensity(args=list(mean=mean(cesd),
sd=sd(cesd)), col="red"), data=HELPrct)

ladd(panel.abline(v=60, lty=2, lwd=2, col="grey"))

# ahora agregamos una densidad normal con fines comparativos

3.2 La distribución normal y sus pruebas de hipótesis

Las familias de comandos para cada distribución son las siguientes. Estos existen para cualquier tipo de distribución pero la más importante y por la que comenzaremos es la normal.

dnorm: densidad \(f(x)\) pnorm: densidad acumulada \(F(x)\) qnorm: densidad en cuantiles \(f(x)^{-1}\) rnorm: muestra aleatoria proveniente de una normal.

Asimismo, existen las funciones equivalentes para distintos tipos de distribuciones

dnorm(0)
## [1] 0.399
pnorm(0)
## [1] 0.5
qnorm(.5) #notese como pnorm y qnorm son inversos
## [1] 0
rnorm(5) 
## [1]  0.426  0.255 -0.108 -0.238 -0.723

Si observamos los parámetros de los comandos notamos que nos permite darle la media y desviación estandar (respectivamente) para distribuciones normales no estandarizadas.

dnorm(10,10,5)
## [1] 0.0798
pnorm(10,10,5)
## [1] 0.5
qnorm(.5,10,5) 
## [1] 10
rnorm(5,10,5) 
## [1]  2.73  9.47 10.92  4.79 13.86

En el libro te proponen un comando simplificador que se llama xporm, pero recuerda que tu puedes recrear exactamente el mismo output con los comandos anteriores y ggplot.

xpnorm(1.96, mean=0, sd=1)
## 
## If X ~ N(0, 1), then
##  P(X <= 1.96) = P(Z <= 1.96) = 0.975
##  P(X >  1.96) = P(Z >  1.96) = 0.025
## 

## [1] 0.975

Si X ~ N(0,1), entonces P(X <= 1.96) = P(Z <= 1.96) = 0.975 P(X > 1.96) = P(Z > 1.96) = 0.025

xpnorm(10, mean=10, sd=5)
## 
## If X ~ N(10, 5), then
##  P(X <= 10) = P(Z <= 0) = 0.5
##  P(X >  10) = P(Z >  0) = 0.5
## 

## [1] 0.5

Si X ~ N(10,5), entonces P(X <= 10) = P(Z <= 0) = .5 P(X > 10) = P(Z > 0) = .5

3.3 Inferencia estadística

Sobre la media, prueba de hipotesis más sencilla con un 95% de confianza.

\(H_n: \mu=0\)

\(H_a: \mu \neq0\)

t.test (~mpg, datos)
## 
##  One Sample t-test
## 
## data:  mpg
## t = 19, df = 31, p-value <0.0000000000000002
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  17.9 22.3
## sample estimates:
## mean of x 
##      20.1
#recordemos que a menor p value podemos rechazar con mayor confianza H0
# si solo queremos el intervalo
confint(t.test (~mpg, datos))
##   mean of x lower upper level
## 1      20.1  17.9  22.3  0.95