Chapter 11 Module X
11.1 Funciones
Esto es extra pero es demasiado útil
Antes de comenzar el módulo, aprendamos algo de funciones. Recuerdas la función para sacar la moda?. Pues aprenderemos a hacer nuestras propias funciones. Las funciones nos sirven para automatizar procesos, podemos hacer funciones para calcular la media, la varianza, realizar scrappeos, calculos etc.
#promedio de variables en base de coches
sum(datos$mpg)/nrow(datos)
## [1] 20.1
sum(datos$cyl)/nrow(datos)
## [1] 6.19
La estructura de una función es como en matematicas:
\(y=f(x)\)
donde hay un input y un output.
en R:
\(y<-function(x)\{ argumentos\}\)
En el diseño de funciones debemos usar variables y no valores fijos, esto anticipando a que el uso de las funciones va a ser flexible.
#funcion
<-function(variable){
mi_promediosum(variable)/nrow(as.data.frame(variable))
}
Probamos los datos:
#funcion
mi_promedio(datos$mpg)
## [1] 20.1
mean(datos$mpg)
## [1] 20.1
mi_promedio(datos$cyl)
## [1] 6.19
mean(datos$cyl)
## [1] 6.19
mi_promedio(datos$hp)
## [1] 147
mean(datos$hp)
## [1] 147
Retomemos la base de elecciones pero ahora repliquemosla para n observaciones. Para esto vamos a crear una función de toda la simulación.
# notese que antes había un 20 que sustitumos por una variable n
<-function(n){
simulador_eleccionesset.seed(9)
# creamos una base de datos de ganadores de presidentes municipales en un estado de 20 municipios
<-c("PRI","PAN","MORENA")
partidos<-c("SI","NO") #si es de mayoría indígena
mun_indigena
<-sample(partidos, n, replace = T) # le indicamos que elija aleatoriamente un ganador del vector partidos para cada distrito
ganador<-sample(mun_indigena, n, replace = T) # de igual manera le indicamos que nos diga aleatoriamente si el municipio es de mayoría indígena
mayoria_indigena
<-seq(1:n) # indicamos un numero para cada distrito
distrito
#creamos base de datos
<-data.frame(ganador,distrito,mayoria_indigena)
elecciones }
simulador_elecciones(1)) (
## ganador distrito mayoria_indigena
## 1 MORENA 1 SI
simulador_elecciones(5)) (
## ganador distrito mayoria_indigena
## 1 MORENA 1 SI
## 2 PRI 2 NO
## 3 PAN 3 NO
## 4 MORENA 4 SI
## 5 MORENA 5 NO
simulador_elecciones(20)) (
## ganador distrito mayoria_indigena
## 1 MORENA 1 NO
## 2 PRI 2 SI
## 3 PAN 3 NO
## 4 MORENA 4 NO
## 5 MORENA 5 NO
## 6 MORENA 6 NO
## 7 MORENA 7 SI
## 8 PAN 8 SI
## 9 PRI 9 NO
## 10 PAN 10 NO
## 11 PRI 11 SI
## 12 PAN 12 SI
## 13 MORENA 13 SI
## 14 PAN 14 NO
## 15 PRI 15 SI
## 16 PAN 16 SI
## 17 PRI 17 SI
## 18 PRI 18 SI
## 19 PRI 19 SI
## 20 PAN 20 SI
<-simulador_elecciones(1000) elecciones
Habiendo simulado los datos, comencemos con la estadística.
11.2 Test for proportions
Así como hay tests de estadísticos, como la media y varianza, tambén podemos idear estadísticos para las proporciones.
tally (~ganador, data=elecciones)
## ganador
## MORENA PAN PRI
## 323 324 353
El comando propr.test() realizará la misma prueba t que hicimos en la sección anterior pero modificada para resolver porcentajes. En este comando debemos indicar explícitamente sobre cuál categoría de cuál variable queremos hacer la prueba de hipótesis.
prop.test (~(ganador=="PRI"), data=elecciones)
##
## 1-sample proportions test with continuity correction
##
## data: elecciones$(ganador == "PRI") [with success = TRUE]
## X-squared = 86, df = 1, p-value <0.0000000000000002
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.324 0.384
## sample estimates:
## p
## 0.353
En estas pruebas el estadístico p se refiere a la proporción.
De la misma manera que antes, podemos extraer datos relevantes de la función con el intervalo de confianza.
<-prop.test (~(ganador=="PRI"), data=elecciones)
x$conf.int x
## [1] 0.324 0.384
## attr(,"conf.level")
## [1] 0.95
# por cierto sabemos que el valor p real es de .333 por lo que el intervalo de confianza resultó ser muy confiable.
Finalmente, también funciona si la alimentamos con números en bruto y no con bases de datos. En este caso, para hacer el ejemplo igual, la alimentamos con la cantidad de municipios del PRI y con la suma de todos los municipios, independientemente si los ganó MORENA, PRI o el PAN.
prop.test (338,1000)
##
## 1-sample proportions test with continuity correction
##
## data: 338 out of 1000
## X-squared = 104, df = 1, p-value <0.0000000000000002
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.309 0.368
## sample estimates:
## p
## 0.338