Introducción:
Wena maestro te presento otra forma de documentar en R esto se llama rmarkdown lo que te voy a mostrar es solo lo básico, hay cursos enteros pa aprender a usar este tipo de interfaz. Una de las bondades que tiene es que te permite ir escribiendo a medida que vas procesando información lo que para el mundo de la ciencia está de pana porque optimizas tiempo de escritura con producción de información. Una vez el texto está listo le aprtas al knitt y te lo compila en un archivo a tu elección (pdf, word, html, etc). Como te digo, soy primerizo en esta cuestión. Recuerdo haberlo usando un par de veces para no tener que andar viendo weás en la consola xD. Y sé que se puede pulir muucho más.
Bueno, la interfaz en casi la misma que un script o sintaxis de r. Lo que sí cambia es que en lugar de estar viendo la consola por si el código o los gráficos salen esto lo puedes revisar en los “chunks” que son esos espacios de otro color en r studio. En esos espacios es donde programas a r para que haga las operaciones que quieras. Para incorporar un nuevo chunk puedes copiarlo o apretar Ctrl + Alt + I y luego configurar ciertos aspectos de la configuración que no sé pa que sirven (lo habré leído en alguna oportunidad, pero ya no me acuerdo)
Acá te dejo el trabajo más bonito
Instalación de paquetes No sé si te lo pasó tu profe en clases, pero si no, te lo comento de todos modos. R no funciona solo aunque eso suene bastante obvio. Pero, a diferencia de otros programas estadísticos tipo spss que funciona con botonera y se hace más intuitivo en procedimiento, acá tienes que andar perdiendo el tiempo buscando el paquete específico para hacer las operaciones que quieras. Hay dos formas para hacerlo la pajera y la fácil xD.
Forma pajera. Para instalar un paquete tienes que usar el comando “install.packages(”nombre del paquete”)“ y luego colocar el código “library(”nombre de la librería”) library es biblioteca, pero se le conoce acá como libraría por que sí. Bueh, a cada paquete tiene asociado una serie de procedimientos que son las librerías con ellas puedes recodificar variables, leer bases de datos, aplicar test estadístico, etc. A mayor cantidad de análisis que quieras hacer, mayor cantidad de librerías vas a tener que usar y entenderás que poner install.packacges y library a cada rato es una real paha y por eso yo no lo hago.
Forma pro. Les weoncites a cargo de r son terrible vios y se inventaron una libreria que te gestiona librerías conocida como pacman o Packages manager pa los panas. Este paquete es el único que te tendrás que instalar de la forma pajera install.packages(“pacman”) y aplicar library(pacman). Con esto bajarás pacman y el resto ya está explicado en la línea de código.
Algo que se me quedaba en el tintero, puedes usar el “#” para que R no considere lo que escribas como código, así te puedes poner notas explicativas y marcar el orden del trabajo.
Hay varias formas de llamar a los datos. La primera es seleccionando un entorno de trabajo mediante el comando setwd(C:/…) y después aplicando load(nombre de la base.xxx). Así todo lo que hagas quedará inmediantamente en el entorno de trabajo y ahí puedes llamar a otras bases de datos que tengas en la carpeta. Como vamos a trabajar solamente con la base de Latinobarómetro vamos a usar el comando load solemente sin fijar el entorno de trabajo. Para ello vamos a crear un vector que representará la base de datos y lo vincularemos con el archivo en .sav.
Igual lo había hecho antes, pero puede seleccionar las variables de interés y hacer una base nueva con el paquete dplyr. La weá lo intenté hacer con el archivo Rdata de Latinobarómetro y me tiraba más errores que aportes. En fin, acá lo que hice fue visualizar los datos con dfsummary que en sí son datos descriptivos univariados de la base. Esto lo puedes dejar como resultado o volver a procesar para presentarlo más bonito.
Visualización preliminar de la base
## Switching method to 'browser'
## Output file written: C:\Users\Elflofl\AppData\Local\Temp\RtmpKYH4Xc\file40543abf496b.html
## EDAD
## "EDAD Edad"
## SEXO
## "SEXO Sexo"
## P18ST
## "P18ST Escala Izquierda-Derecha"
## P26N.A
## "P26N.A A favor o en contra de la integración de su país con los otros países de América Latina"
## P26N.B
## "P26N.B A favor o en contra de la integración de su país con otros países fuera de América Latina"
## P18ST_R
## "Recode: P18ST Escala Izquierda-Derecha"
## P26N.A_R
## "Recode: P26N.A A favor o en contra de la integración de su país con los otros países de América Latina"
## P26N.B_R
## "Recode: P26N.B A favor o en contra de la integración de su país con otros países fuera de América Latina"
Una de las cosas fundamentales pa todas las weás es limpiar la base y asignar na y sacarlos porque son un tremendo cacho. Weno, afortunadamente me mandaste la base limpia así que no no tuve que hacer nada de eso (arigatito :D). Lo que sí hice fue recodificar las variables para dejarlas en 0 y 1 porque el modelo de regresión logísitica trabaja con ese tipo de nomenclatura (presencia o ausencia del atributo) pa hacer los cálculos y formulas raras que no voy a poner acá. Solo una pequeña aclaración. R distingue como 4 tipos de variables: interger, numeric, factor y no re cuerdo la otra creo que string. Igual esto está asociado con el nivel de medición de la variable. Las de tipo numeric son numéricas y las de tipo factor son categóricas. Para la regresión logística la variable dependiente tiene que ser tipo factor con dos categorías así que ese fue el tratamiento que le hice.
Ojo: solo trabajé con la varaible de integración política al interior de américa latina. En el caso de que quieras usar la otra, tienes que adecuar un poco el código.
No te lo pidieron, pero te saqué unos gráficos para que quedes como rey en el trabajo y decirle a tu profe que vale callampa y que tuve que buscar weás en otro lado.
El primer gráfico corresponde a la variable de integración política en Latam según sexo. El gráfico se explica por sí solo. Pero, por si acaso también te pongo unas tablas.
|
Integración política dentro de Latam |
Sexo | Total | |
|---|---|---|---|
| Hombre | Mujer | ||
| No |
128 13.5 % |
108 11.4 % |
236 24.9 % |
| Si |
334 35.2 % |
380 40 % |
714 75.2 % |
| Total |
462 48.6 % |
488 51.4 % |
950 100 % |
|
Integración política dentro de Latam |
Posición política | Total | |||
|---|---|---|---|---|---|
| Izquierda | Centro | Derecha | Ninguno | ||
| No |
60 6.3 % |
52 5.5 % |
43 4.5 % |
81 8.5 % |
236 24.8 % |
| Si |
208 21.9 % |
136 14.3 % |
120 12.6 % |
250 26.3 % |
714 75.1 % |
| Total |
268 28.2 % |
188 19.8 % |
163 17.2 % |
331 34.8 % |
950 100 % |
Copio y pego lo que sale en el netlify que te mandé xD: La función pincipal para la estimación de modelos de regresión logística es glm(), especificando el argumento family=“binomial”, lo cual le indica a la función que estamos prediciendo una variable binaria. Al igual que con lm(), debemos especificar los predictores y la base de datos a emplear. A continuación, estimaremos una serie de modelos de regresión logística que nos permitan determinar de qué manera el sexo, la edad y la posición política de las personas pueden predecir la integración política en América Latina.
El Modelo 0 ni tiene predictores solo el intercepto. Mejor conocido como modelo nulo El modelo 01 incorpora el sexo, el 02 la tendencia política y el 03 la edad. Aunque por temas de orden la tendencia política debió haber sido la última que se incluyera :P
Los modelos que se corrieron en el chunk anterior son vectores que los puedes abrir aprentándoles el botoncito que sale al lado, pero te va a salir un código indecsifrable jasdkaldk. Salen un par de números que se pueden entender, pero para que se vean bien hay que hacerles un tratamiento de presentación.
## Downloading GitHub repo leifeld/texreg@HEAD
## Running `R CMD build`...
## * checking for file 'C:\Users\Elflofl\AppData\Local\Temp\RtmpKYH4Xc\remotes4054798523bb\leifeld-texreg-9bd6a68/DESCRIPTION' ... OK
## * preparing 'texreg':
## * checking DESCRIPTION meta-information ... OK
## * checking for LF line-endings in source and make files and shell scripts
## * checking for empty or unneeded directories
## * building 'texreg_1.39.0.tar.gz'
## Warning: package 'texreg' is in use and will not be installed
Versión con htmlreg
| Modelo 0 | Modelo 1 | Modelo 2 | Modelo 3 | |
|---|---|---|---|---|
| Intercepto | 1.11*** | 0.96*** | 1.24*** | 1.77*** |
| (0.08) | (0.10) | (0.15) | (0.27) | |
| Sexo (Mujer=2) | 0.30* | 0.29 | ||
| (0.15) | (0.15) | |||
| Centro | -0.28 | -0.31 | ||
| (0.22) | (0.22) | |||
| Derecha | -0.22 | -0.17 | ||
| (0.23) | (0.23) | |||
| Ninguno | -0.12 | -0.21 | ||
| (0.19) | (0.20) | |||
| Edad | -0.01** | |||
| (0.00) | ||||
| AIC | 1067.13 | 1065.18 | 1071.24 | 1061.67 |
| BIC | 1071.98 | 1074.89 | 1090.66 | 1090.80 |
| Log Likelihood | -532.56 | -530.59 | -531.62 | -524.83 |
| Deviance | 1065.13 | 1061.18 | 1063.24 | 1049.67 |
| Num. obs. | 950 | 950 | 950 | 950 |
| ***p < 0.001; **p < 0.01; *p < 0.05 | ||||
| Modelo nulo | Modelo 1 | Modelo 2 | Modelo 3 | |
|---|---|---|---|---|
| Predictores | β | β | β | β |
| (Intercept) |
3.025 *** (0.227) |
2.609 *** (0.271) |
3.467 *** (0.508) |
5.876 *** (1.612) |
| Sexo: Mujer |
1.348 * (0.203) |
1.338 (0.203) |
||
| Posición política: Centro |
0.754 (0.165) |
0.733 (0.162) |
||
|
Posición política: Derecha |
0.805 (0.185) |
0.847 (0.197) |
||
|
Posición política: Ninguno |
0.890 (0.173) |
0.813 (0.161) |
||
| Edad |
0.986 ** (0.005) |
|||
| Observations | 950 | 950 | 950 | 950 |
| R2 Tjur | 0.000 | 0.004 | 0.002 | 0.017 |
|
||||
Lo que sigue es la aplicación de lo que ya hice antes con lo que sale en la página web del profe. Hay mas contenido y cálculos, pero me centraré en dejar los elementos que más te puedan servir para el análisis como unos gráficos, los ajustes a los log-odds y odds-ratio.
|
Coeficientes del modelo
## (Intercept) SEXOMujer tendenciaCentro tendenciaDerecha
## 1.77083068 0.29101358 -0.31093132 -0.16586029
## tendenciaNinguno EDAD
## -0.20750859 -0.01430377
Gráficos de predicción
Copio y pego lo que sale en la página:
Este test nos permite comparar las verosimilitudes del modelo con predictores, respecto a un modelo con menos predictores. En este caso, emplearemos la función anova() el cual realiza un test basado en la distribución chi-cuadrado donde se contrasta el modelo en cuestión respecto a un modelo sin predictores (modelo “nulo”).
| Resid. Df | Resid. Dev | Df | Deviance | Pr(>Chi) | |
|---|---|---|---|---|---|
| Modelo nulo | 949 | 1065.128 | NA | NA | NA |
| Modelo 1 | 948 | 1061.177 | 1 | 3.951 | 0.047 |
| Modelo 2 | 946 | 1063.235 | 3 | 1.893 | 0.595 |
| Modelo 3 | 944 | 1049.665 | 5 | 15.463 | 0.009 |
Modelo nulo vs. Modelo 1: La diferencia entre los modelos no es estadísticamente significativa con una probabilidad > 0.05. Por lo tanto el modelo que incluye sexo como predictor no ofrece un mejor ajuste a los datos que un modelo sin predictores.
Modelo nulo vs. Modelo 2: Es el modelo más callampero tiene un chi de 0.59 xD. Con ese resultado aceptas hipótesis nula. No diferencia estadísticamente significativa.
Modelo nulo vs. Modelo 3¨: La diferencia entre los modelos es estadísticamente significativa con una probabilidad < 0.001. Por lo tanto el modelo que incluye el sexo, edad y posición política como predictores ofrece un mejor ajuste a los datos que un modelo sin predictores.
Esta medida de ajuste nos entrega una magnitud comparativa entre el modelo con predictores y el modelo nulo (sin predictores). Este se basda en los valores del loglikelihood de cada modelo.
La fórmula es la siguiente:
1-LL(LM)/LL(L0)
LL= log likelihood del modelo LM= es el modelo posterior (con predictores) L0= es el modelo nulo
## [1] 0.003709338
## [1] 0.001777507
## [1] 0.01451767
También, podemos utilizar la función PseudoR2() de la librería DescTools. A continuación los calculamos y guardamos para incluirlos en la tabla de regresión.
| McFadden R2 | |
|---|---|
| Modelo nulo | 0.000 |
| Modelo 1 | 0.004 |
| Modelo 2 | 0.002 |
| Modelo 3 | 0.015 |
Síntesis, el modelo 3 es que más contribuye a la predicción del modelo.
Nuevamente presento el modelo de regresion en esta oportunidad con htmlreg. Esto es la antesala a lo que viene a continuación.
| Model 1 | Model 2 | |
|---|---|---|
| (Intercept) | 1.24*** | 1.77*** |
| (0.15) | (0.27) | |
| tendenciaCentro | -0.28 | -0.31 |
| (0.22) | (0.22) | |
| tendenciaDerecha | -0.22 | -0.17 |
| (0.23) | (0.23) | |
| tendenciaNinguno | -0.12 | -0.21 |
| (0.19) | (0.20) | |
| SEXOMujer | 0.29 | |
| (0.15) | ||
| EDAD | -0.01** | |
| (0.00) | ||
| AIC | 1071.24 | 1061.67 |
| BIC | 1090.66 | 1090.80 |
| Log Likelihood | -531.62 | -524.83 |
| Deviance | 1063.24 | 1049.67 |
| Num. obs. | 950 | 950 |
| ***p < 0.001; **p < 0.01; *p < 0.05 | ||
Acá se hace el ajuste y en el modelo siguiente se ven incorporados.
| Modelo 3 | Modelo 3 (OR) | |
|---|---|---|
| Intercepto | 1.77* | 5.88* |
| [ 1.23; 2.31] | [5.34; 6.41] | |
| Sexo (Mujer=2 | 0.29 | 1.34* |
| [-0.01; 0.59] | [1.04; 1.64] | |
| Centro | -0.31 | 0.73* |
| [-0.74; 0.12] | [0.30; 1.17] | |
| Derecha | -0.17 | 0.85* |
| [-0.62; 0.29] | [0.39; 1.30] | |
| Ninguno | -0.21 | 0.81* |
| [-0.60; 0.18] | [0.43; 1.20] | |
| Edad | -0.01* | 0.99* |
| [-0.02; -0.01] | [0.98; 0.99] | |
| Deviance Test (\(p\)) | 0.01 | 0.01 |
| Pseudo R2 | 0.01 | 0.01 |
| AIC | 1061.67 | 1061.67 |
| BIC | 1090.80 | 1090.80 |
| Log Likelihood | -524.83 | -524.83 |
| Deviance | 1049.67 | 1049.67 |
| Num. obs. | 950 | 950 |
|
\(^{***}\) p < 0.001; \(^{**}\) p < 0.01; \(^{*}\) p < 0.05 Errores estándar entre paréntesis. Nota: La significancia estadística de los coeficientes en unidades de Odds ratio está calculada en base a los valores \(t\), los cuales a su vez se calculan en base a \(log(Odds)/SE\) |
||
Esos gráficos muestran los valores de los coeficientes de regresión acompañados de sus intervalos de confianza. La función plot_model entrega por defecto los coeficientes en unidades de odds-ratio, por lo tanto el valor 1 representa el límite para la significancia estadística, a diferencia del 0 cuando se encuentra en unidades de log-odds.
Coefplots de los modelos de regresión
Si pasa por el 0 es porque no son estadísticamente significativos. Ser mujer implica ser más proclive a la integración política, mira tú.
Fin :D