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.

Carga de base de datos

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.

Preparación de la base

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"

Procesamiento de variables

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.

Gráficos

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 %

Modelos de regresión

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

Visualización de los modelos de regresión logística

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
Statistical models
  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
Versión con sjplot
Modelos de regresión para posturas a favor o encontra a la integración de países latinoamericanos (Errores estándar entre paréntesis)
  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
  • p<0.05   ** p<0.01   *** p<0.001

Profundizando el modelo de regresión logística

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.

val label frq raw.prc valid.prc cum.prc
No 236 24.84 24.84 24.84
Si 714 75.16 75.16 100.00

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

Test de verosimilitud

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

Test de devianza entre modelos (extensión de ANOVA
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.

Pseudo R2 de McFadden

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.

Presentación de resultados

Nuevamente presento el modelo de regresion en esta oportunidad con htmlreg. Esto es la antesala a lo que viene a continuación.

Statistical models
  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

Transformación los log-odds a odds-ratio

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

Coefplots: alternativa a las tablas de regresión (podrías utilizarlas)

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