sábado, 30 de noviembre de 2019

Variables que deben registrarse en una investigación, e integrarse en el análisis


La relación entre un posible factor causal y un efecto puede verse afectada por terceras variables.

Hay terceras variables que deben tenerse en cuenta, especialmente en estudios observacionales: son otras causas que influyen sobre el efecto y que pueden estar asociadas con el factor de estudio que nos ocupa.

Cuando incorporamos esas terceras variables al análisis, la relación original puede desaparecer o aumentar. Incluso puede surgir cuando en primera instancia no se veía.

Además, las terceras variables importan por posibles modificaciones del efecto, esto es, por posibles interacciones.

Es imprescindible el conocimiento previo de las variables que pueden afectar la relación que más nos interesa en un estudio, es decir, de los factores de riesgo para el efecto.

Esto significa que debe hacerse una revisión bibliográfica completa previa a la investigación para determinar los factores de riesgo conocido, de tal forma de incluirlos en el análisis y disminuir los riesgos de efectos sub o sobreestimados y de interacciones pasadas por alto.

miércoles, 27 de noviembre de 2019

Ejercicio de regresión lineal múltiple, con término cuadrático y graficación con margins y marginsplot (sin solución)

Se ha sostenido que el estrés mantiene una relación curvilínea con el rendimiento en los exámenes: un poco de estrés ayuda a estar alerta y concentrado. Pero mucho estrés puede generar bloqueos. Otra variable que también influye es el nivel de conocimientos.

En este ejercicio se chequeará si los datos (hipotéticos) de esta base con compatibles con las hipótesis anteriores. 

La base se generará corriendo la sintaxis que sigue. 


*********************** 

set obs 500

set seed 1234

gen estres = runiform() * 100

gen conocimiento = runiform() * 100

gen rendimientoExamen = 5 * estres - 0.04 * estres^2  + conocimiento+ rnormal(10, 9)

*********************** 


  1. Explore gráficamente la relación entre rendimiento en examen y estrés.
  2. Si la relación es curvilínea, explore la posibilidad de usar una regresión lineal para predecir mediante la introducción de un término cuadrático.
  3. El modelo en su conjunto, ¿es significativo?
  4. En la ecuación de regresión, ¿el término cuadrático es significativo?
  5. ¿Cuál es la varianza explicada por el modelo con el término cuadrático?
  6. Haga uso de los comandos margins y marginsplot para graficar cómo cambia el rendimiento en el examen con la variación del estrés.


martes, 26 de noviembre de 2019

Términos cuadráticos y la necesidad de usar el símbolo de numeral (#)

 

Cuando hacemos regresiones con términos cuadráticos (y también con interacciones), es casi obligatorio usar el símbolo de numeral para los términos al cuadrado.

Esto es así porque si pensamos utilizar posteriormente los comandos margins y marginsplot, estos lo requieren.

Sea dos variables predictoras: una x y otra x^2.

Lo podemos escribir c.x c.x#c.x  Lo anterior es x y x^2.

También podríamos haberlo escrito con dos numerales: c.x##c.x. Esto también es x y x^2.

Las dos formas anteriores funcionan muy bien con margins. Cuando le pidamos predicciones para ciertos valores de x, margins sabe que cuando se modifica x se modifica, necesariamente, x^2.

Pero si generamos una variable  con gen xCuadrado = x^2, luego el comando margins no sabrá que cuando se modifica x tiene que modificar xCuadrado, y por lo tanto da gráficas incorrectas.


Video





sábado, 23 de noviembre de 2019

Problema de regresión múltiple con interacción y test diagnósticos (sin solución)

 La sintaxis que sigue genera una base con las variables salario_hora, años de educación, años de experiencia laboral y sexo.


**************

clear all

set seed 1500

set obs 500

gen sexo = rbinomial(1, 0.5)

label define sexo 0 "hombre" 1 "mujer"

label values sexo sexo

gen años_educ  = round(rnormal(10, 3))

gen años_experiencia = round(runiform() * 15)

gen salario_hora = 200 + años_educ * 5 + años_exp * 4 + rnormal(0,10) if sexo ==0

replace salario_hora = 150 + años_educ * 5 + años_exp * 1.5 + rnormal(0,10) if sexo ==1

cls

**************


Un investigador sospecha que existe una interacción entre años de experiencia y sexo: o sea que la experiencia no es recompensada de la misma manera en hombres y mujeres.


Se pide:

Halle la ecuación de regresión para estimar el salario hora a partir de las siguientes variables:

  1. Sexo
  2. Años de educación
  3. Años de experiencia
  4. Interacción entre años de experiencia y sexo

¿Se puede rechazar la hipótesis nula en esta regresión lineal? Explique.

¿Cuál es la varianza explicada por el modelo?

¿Cuál es la Root MSE? ¿Qué indica este valor?

¿La interacción sexo - años de experiencia se muestra significativa?

¿Cuál es la predicción de salario hora para una mujer con 10 años de educación y 10 de experiencia?

¿Cuál es la predicción de salario hora para un hombre con 10 años de educación?

Los residuos del modelo ¿se muestran normales?

En los test de pos estimación, ¿aparecen outliers? Explique.

¿Se advierte heterocedasticidad o relaciones curvilíneas en los test de post estimación? Explique.



jueves, 21 de noviembre de 2019

Familia de comandos ESTIMATE, para almacenar y comparar modelos. Video

Hay distintas estrategias para hallar "el mejor modelo de regresión". El modelo "mejor" depende en parte de si buscamos predecir o hallar relaciones causales, de las variables que tenemos disponibles, etc. 

Pero es necesario con muchísima frecuencia comparar modelos alternativos. Construimos varios modelos -hay distintos criterios para hacerlo- y luego los comparamos: cuál tiene mayor R2 ajustado, cuál tiene menor RMSE (error estándar de la estimación), cuál menor BIC o AIC. Todas estas medidas generalmente nos llevan a elegir el mismo modelo, pero no siempre. Además ¿cómo varían los coeficientes de las distintas variables independientes? Para hacer estas comparaciones entre modelos Stata nos ofrece la familia de comandos ESTIMATES.



Luego de correr una regresión, podemos almacenar el modelo. Si deseamos llamar al modelo "m1" corremos el siguiente comando:


estimates store m1


Si luego corremos una segunda regresión con algunas variables removidas o añadidas, podemos almacenar este segundo modelo, por ejemplo con el nombre "m2". Para hacerlo corremos este comando:


estimates store m2


Podríamos correr más modelos, y almacenarlos con los nombres que deseemos. Y luego podemos compararlos así:


estimates table *, stats (r2_a, bic, aic, N, rmse)

En el comando de arriba pedimos las estadísticas R2 ajustada, BIC, AIC, el tamaño de la muestra (N), y la error estándar de la estimación (Root MSE). Podríamos haber pedido solo una parte de estas estadísticas o ninguna.

¿Cuál es el aspecto de estas tablas comparativas? El que sigue:

En la tabla de arriba se comparan tres modelos, con sus respectivos R2 ajustado, N (tamaño de las muestras), BIC y AIC. También se puede ver cómo cambian los coeficientes de las variables independientes para los distintos modelos.



Y si en algún momento deseamos eliminar los modelos de la memoria de Stata, hacemos:

estimates clear

 

El ejemplo que se mostrará en el video se tomará de una muy interesante página web de la Universidad de Princeton que vale la pena ver: https://dss.princeton.edu/training/Regression101.pdf

 

Video

States.dta

do file



 

martes, 19 de noviembre de 2019

BIC y AIC. Regresión lineal: Elección de modelos. Texto.

 BIC y AIC son dos estadísticos que se calculan para elegir entre modelos alternativos de regresión. Aquí se presentarán someramente.


AIC extrae su nombre de Akaike Information Criterion, y BIC de Bayesian Information Criterion.

Ambos privilegian el poder explicativo de los modelos, y a la vez penalizan la cantidad de variables predictoras: cuantas menos, mejor. Esto es, privilegian el poder explicativo y la parsimonia, la simplicidad de los modelos. 

No son demasiado distintos del R2 ajustado, que también penaliza la cantidad de variables. Sin embargo, se calculan de diferentes maneras y no siempre coinciden

Ambos ayudan a elegir entre varios modelos alternativos en competencia para predecir una cierta variable dependiente.

Si usamos AIC para comparar dos modelos, el que tiene un AIC menor es considerado mejor modelo. Con BIC es igual: dados dos modelos, el que tiene un puntaje BIC menor es el considerado más próximo a la verdad. 

Generalmente el uso de BIC o de AIC lleva a similares conclusiones. De todas formas no siempre es así: BIC penaliza la complejidad del modelo más pesadamente que AIC.

Son usados en ocasiones para elegir los mejores conjuntos de variables predictoras en regresión, y a menudo se usan para comparar modelos no necesariamente anidados. (Dos modelos se dicen anidados si todas las variables de un modelo están presentes en el otro modelo. Por ejemplo, si un modelo predice con las variables A, B, C y D, y el otro con las variables A, B y C, estos dos modelos se llaman anidados).

Para usar entonces BIC o AIC no es necesario estar en presencia de modelos anidados.

Raftery usa el siguiente criterio acerca de las diferencias en los BIC entre modelos: si la diferencia es menor a 2 casi ni vale la pena tenerla en cuenta, si está entre 2 y 5 es digna de atención, entre 5 y 10 es fuerte, y mayor a 10 es muy fuerte. 

 

Con respecto a AIC, tenemos:

relativa verosimilud de los modelos = e^ [(AIC1 - AIC2)/2]

En la literatura que tuve ocasión de consultar, no está establecido que se considera una verosimilitud relativa menor, media o grande.




domingo, 17 de noviembre de 2019

Regresión lineal múltiple. Ejemplo de detección de heterocedasticidad en tests diagnósticos. Video

 Se mostrará cómo detectar heterocedasticidad mediante rvfplot (¿y avplots?).

En el video se utilizará la sintaxis que sigue:


***********************************************

*creación de base

clear all

set seed 1204

set obs 1000

gen x1 = round(runiform() * 100) + 5

gen x2 = round(runiform() * 100) + 5

gen y = 2 * x1 + 2 *x2 + rnormal(0, 4*x1)

*gráficas iniciales exploratorias

lowess y x1

lowess y x2

*construcción del modelo

regress y x1 x2

rvfplot

avplots

***********************************************

Video



viernes, 15 de noviembre de 2019

Regresión lineal. Pruebas diagnósticas. Video

Las regresiones lineales piden, para ser enteramente confiables, que se cumplan una serie de supuestos. Luego de creado un modelo se verifica hasta donde se cumplen esos modelos. 

La inspección inicial de las relaciones entre la variable dependiente y las independientes nos dan una primera guía acerca del cumplimiento de los supuestos, pero una visión más definitiva, en particular para los modelos con múltiples variables independientes, se obtienen con comandos de pos estimación, esto es, con comandos que se corren luego de establecido el modelo.

Aquí veremos los siguientes comandos de pos estimación para chequear supuestos:

rvfplot. (Nos permite ver la relación entre residuos y valores predichos. Brinda un gráfico similar al de zpred contra zresid de SPSS).

Predict res, res seguido de kdensity res. (Para estudiar normalidad de residuos)

avplots (Para estudiar linealidad de las relaciones de cada una de las variables

predict cook, cooksd , seguido de extremes cook (Para analizar si hay outliers que están pesando demasiado en la ecuación de predicción).

Se verá cómo trabajar con estos comandos usando la sintaxis adjunta.



miércoles, 13 de noviembre de 2019

Regresión lineal: coeficientes beta estandarizados. Video


En regresión múltiple, los coeficientes beta estandarizados permiten valorar la importancia relativa de cada variable independiente dentro de la ecuación.

Son los coeficientes que obtendríamos si estandarizáramos (con valores z) todas las variables.

Los coeficientes beta indican cuánto cambia la variable dependiente por cada desviación estándar de la variable predictora.

Si el coeficiente beta es negativo, el coeficiente beta nos indica en cuánto decrece la variable dependiente por cada incremento de una desviación estándar de la variable predictora.

En regresión múltiple, los coeficientes beta estandarizados permiten valorar la importancia relativa de cada variable independiente dentro de la ecuación.

Para obtener los coeficientes beta, se usa la opción beta luego del comando regress.

regress var_depen var_indep1 var_indep2 varindep3, beta


Estos coeficientes proporcionan una pista muy útil sobre la importancia relativa de cada variable independiente en la ecuación de regresión. En general, una variable tiene tanto más peso (importancia) en la ecuación de regresión cuanto mayor (en valor absoluto) es su coeficiente de regresión estandarizado.



Para el video adjunto, se utilizará la base creada a partir de la sintaxis que sigue:


************************************

clear

set obs 300

set seed 1234

gen edad = trunc(runiform() * 40 + 30)

gen presion_art = round(((edad * 0.07 + 8) + rnormal(5, 3)), .1)

replace presion_art = round((18 + rnormal(0, 1)), .1) if presion_art > 21

gen puntaje_memoria = round(294 - edad * 1.50 - 4.0* pres + rnormal(0, 12))

regress puntaje_memoria edad pres, beta

************************************


Video








lunes, 11 de noviembre de 2019

Recomendaciones de Isabel dos Santos para realizar un análisis multivariado


A continuación transcribo las recomendaciones que da Isabel dos Santos Silva en su libro "Epidemiología del Cancer: Principios y Métodos", libro patrocinado por una agencia de la Organización Mundial de la Salud.

En la página 346 pueden leerse los puntos que aquí presento ligeramente modificados y con mis propias palabras:


1) Produzca tablas de frecuencias y tablas cruzadas para chequear que no hay datos erróneos.

2) Sea la enfermedad E y sean A, B, C y D posibles predictores. En este paso analícense las relaciones bivariadas A-E, B-E, C-E y D-E.

3) Estratifíquese por posibles confusores o variables que puedan interactuar: por ejemplo, si se tiene la relación A-E y se piensa que puede estar confundida por B, o interactuar con B, háganse estratos con los distintos valores de B, y en cada uno de ellos analícese la relación A-E.

4) Puede pasar que los estratos den valores similares entre sí y similares a la relación cruda A_E. En este caso no hay confusión ni interacción.

5) Puede pasar que los estratos muestren similares asociaciones A-E, pero que estas asociaciones sean distintas de la asociación cruda A-E. En estos casos hay confusión.

6) Puede pasar que los estratos muestren distintas asociaciones A-E, y que el valor de la asociación dependa del estrato. En estos casos hay interacción o, lo que es lo mismo, modificación del efecto.


7) Use técnicas de regresión para ajustar simultáneamete por todos los confusores y dar cuenta de las interacciones relevantes.

Y ahora con palabras de dos Santos:

"The simple classical methods based on stratification should always be used in the initial phase of an analysis. The cross-tabulations used in stratification keep the investigator in touch with the data".

"Regresion models can be used in a second stage of the analysis to adjust simultaneously for several confounders. In contrast to the classical methods, regression modelling is, to a certain extent, a 'black bos' approach an because of this, it may lead to serious errors. These methods ara complex statistical procedures that should never be used by those who are unfamiliar to them."

domingo, 10 de noviembre de 2019

Ejercicio de interacción de variable continua con variable categórica (sin solución)


Un investigador cree que los puntajes alcanzados en el sistema educativo pesan fuertemente sobre el salario, por lo que significan en tanto conocimientos aprendidos y en capacidad para aprender. Pero cree también que hay un efecto de interacción entre los colegios a que concurrieron los alumnos y los puntajes: mayores puntajes son mejor retribuidos si las personas fueron a colegios de elite.

Se pide al estudiante que:

1) Analice mediante una regresión con interacción las hipótesis arriba planteadas.

2) Grafique, con ayuda de los comandos margins y marginsplot, la relación entre salarios, puntajes alcanzados y caracter del colegio (elite o no).

3) Interprete la gráfica.


************** Sintaxis de construcción de la base********
clear all
set obs 300
set seed 1699
gen colegio_elite = rbinomial(1, 0.10)
label define colegio_elite 0 "No elite" 1 "Elite"
label values colegio_elite colegio_elite
gen puntaje_conocimientos = rnormal() * 15 + 100
gen salario = puntaje_conocimientos * 15 + colegio * 60 + rnormal(0,95) if colegio == 1 
replace salario = puntaje_conocimientos * 9 + 550+ rnormal(0, 95)  if colegio == 0 

***************************************************