lunes, 30 de julio de 2018

Continuación de comando egen, y comando egen con prefijo bysort. Video

El comando egen se llama así por "extended gen" o "extended generate".

Tiene una gran cantidad de opciones que le permiten hacer cosas muy diversas, solo algunas de las cuales se verán en el video anexo. Las que veremos aquí son similares a las que ofrece el comando aggregate en SPSS.

En términos generales, el formato de los comandos egen es el siguiente:

egen nombre_nueva_variable = función(vieja_variable)

Por ejemplo, si quisiéramos el precio medio de los autos en el archivo auto.dta, el comando sería:

egen precio_medio = mean(price)

y si quisiéramos la media de las milla por galón diferenciando los autos domésticos de los extranjeros, deberíamos pedir:

bysort foreign: egen media_mpg = mean(mpg)

Las funciones que veremos en este video serán:

mean
max
min
rank
count
total


Video


viernes, 27 de julio de 2018

Ejercicio de cálculo con comando egen (sin solución)


Genérese una base de datos corriendo la siguiente sintaxis:

**********************************
cls
clear all
set obs 300
set seed 1234
gen nro_cliente = _n
gen art1 = 20 if runiform() < 0.90
gen art2 = 20 if runiform() < 0.90
gen art3 = 10 if runiform() < 0.60
gen art4 = 40 if runiform() < 0.80
gen art5 = 10 if runiform() < 0.20
gen art6 = 11 if runiform() < 0.10
gen sexo = rbinomial(1, 0.55)
label define sexo 1 "Hombre" 0 "Mujer"
label values sexo sexo
**********************************

Esta base de datos simula 300 clientes que pueden comprar o no hasta 6 artículos. Si el cliente compró un artículo, figura el precio de la compra. Si no compró, hay un faltante.

El comerciante otorga descuentos a los que compraron 4 artículos o más. El precio descontado es el del artículo de menor valor.

Se pide al estudiante:

  1. Indique cuántos clientes compraron 4 artículos o más.
  2. Calcule cuánto pagó cada cliente, teniendo en cuenta el descuento del comerciante.
  3. Indique la recaudación total del comerciante.
  4. Indique qué monto recaudó de mujeres y de hombres. 
  5. Indique el monto máximo comprado. Haga una lista con dichos montos y con la identificación de los clientes que lo compraron. 

jueves, 26 de julio de 2018

Ejercicio con egen (funciones en fila). Video

La sintaxis siguiente genera una base de datos de supuestas compras hechas por 12 clientes. Los vendedores hacen, para quienes compran más de un artículo, un descuento del 25 % sobre el artículo de menor precio.



***********************************************
clear
set seed 5799
set obs 12
gen cliente = _n
gen monto_compra1 = round(rnormal(100, 20))
gen monto_compra2 = round(rnormal(100, 20))
replace monto_compra2 = . if rnormal(100,20) < 100
gen sexo = runiform() <.5
label define sexo 0 "hombre" 1 "mujer"
label values sexo sexo
cls
***********************************************

Se pide:

Haga una lista de los montos gastados por cada cliente

Indique cuánto gastaron hombres y cuánto mujeres.


Video

Do file


martes, 24 de julio de 2018

Prefijo bysort. Video


El prefijo bysort se utiliza para separar análisis, o para realizar operaciones, por grupos.

Por ejemplo, si hiciéramos

bysort sexo: summarize altura

nos daría dos sumarios de altura, uno para cada sexo.

O si hiciéramos

bysort region: pwcorr pbi expectativa_vida

nos daría dos medidas de correlación entre pbi y expectativa de vida, una para cada región.

Este prefijo funciona con la estructura que sigue:

bysort variable_categórica : comando...

bysort va seguido de una variable categórica y de dos puntos, y luego un comando de Stata emitido de manera habitual.



Video

viernes, 20 de julio de 2018

Algunos usos del comando egen: Funciones de fila. Video


El comando egen se llama así por extended generate. Sirve para generar nuevas variables mediante muy diversas funciones.

Veremos en esta entrada algunas de ellas que operan en cada renglón.

Se verán:


  • rowmiss (cuenta los casos faltantes en un renglón)
  • rownonmiss (cuenta los casos no faltantes en un renglón)
  • rowmax (calcula el máximo entre una serie de variables en un renglón)
  • rowmin (calcula el mínimo entre una serie de variables en un renglón)
  • rowmean (calcula la media entre una serie de variables en un renglón)
  • rowtotal (calcula la suma total de una serie de variables en un renglón).

Rowmiss


La sintaxis para la función rowmiss de egen puede verse a continuación.

egen NombreNuevaVariable = rowmiss (lista de variables)

Esto genera una nueva variable (en el ejemplo llamada n_faltantes) con la cantidad de faltantes en cada renglón.




Rownonmiss

La función rownonmiss nos indica el número de valores no faltantes en las variables a, b, c y d, dentro de cada renglón.





Rowmax

La función rowmax nos indica en valor máximo de una lista de variables en una nueva variable por renglón. Nótese que calcula el máximo sin tener en cuenta a los faltantes.





Rowmin

La función rowmin de egen nos indica el valor mínimo de una serie de variables en una nueva variable. Nótese que calcula el mínimo sin tener en cuenta los faltantes.




Rowtotal

La función rowtotal calcula la suma total entre una serie de variables. No tiene en cuenta los valores faltantes.





Rowmean

La función rowmean del comando egen calcula el promedio entre varias variables, renglón por renglón.



Do file

Video




domingo, 15 de julio de 2018

Relaciones bivariadas, y recodificación. Ejercicio de revisión 4 (sin solución).


Análisis de relaciones bivariadas (análisis gráfico, numérico, de significación y de fuerza de la asociación.



Se trabajará con el archivo Gss93 subset.dta



DK significa don't know
NA significa no answer
NAP significa not applicable



1.
Explore las variables letdie (permitir que mueran los pacientes incurables) y sexeduc (actitud ante la educación sexual en las escuelas).
Explore si existe relación entre ambas variables, gráfica y numéricamente, luego de pasar los DK, NA y NAP a faltante (.).
Asumiendo que esta es una muestra aleatoria simple, ¿se puede descartar la hipótesis nula? Nota: usar chi2.
¿Cuál es el grado de asociación? Comente.



2.
Explore las variables sei (índice de status socioeconómico) y educ (año más alto de educación completado).
Si es necesario pase valores a faltantes.
Explore si existe relación entre ambas variables, gráfica y numéricamente.
Asumiendo que esta es una muestra aleatoria simple, ¿se puede descartar la hipótesis nula de que, no hay relación entre años de educación y nivel socioeconómico?
¿Cuál es el grado de asociación?
¿Es la relación significativa?



3.
Explore las variables age (edad del respondente) y tvhours (horas diarias de TV).
Explore si existe relación entre ambas variables, gráfica y numéricamente.
Asumiendo que esta es una muestra aleatoria simple, ¿se puede descartar la hipótesis nula? (variables continuas: usar rho de spearman o r de Pearson. ¿Se puede descartar la hipótesis nula de que la rho de Spearman o la r de Pearson sean iguales a 0? 


4.
Explore las variables degree2 (terminó o no terminó el college, dicotómica) y sei (índice de status socioeconómico, continua).
Explore si existe relación entre ambas variables gráficamente y numéricamente.
Asumiendo que esta es una muestra aleatoria simple, ¿se puede descartar la hipótesis nula de igualdad de medias? (ttest)
Indique el grado de asociación a través de la diferencia en sei entre ambos grupos y también con la d de Cohen y g de Hedges [ comando esize two sei, by(degree2) ]



5.
Explore las variables musicals (gusto por los musicales de Broadway, escala Likert con 5 categorías) y classiccl (gusto por la música clásica, escala Likert con 5 categorías).
Explore si existe relación entre ambas variables, gráfica y numéricamente.
Asumiendo que esta es una muestra aleatoria simple, ¿se puede descartar la hipótesis nula de que cuando crece el gusto por un tipo de música no crece el gusto por la otra? (usar tab2 con porcentajes con la opción tau b. También usar ktau para tener la significación de tau b)
¿Cuál es el grado de asociación?




6.
Explore las variables sex (sexo, dicotómica) y agewed (edad al casarse por primera vez, continua).
Explore si existe relación entre ambas variables, gráfica y numéricamente.
Asumiendo que esta es una muestra aleatoria simple, ¿se puede descartar la hipótesis nula de que las medias de edad para casarse son iguales para ambos sexos? (ttest)
Cuáles son las edades de las 12 personas que se casaron con más edad en la muestra,  y cuál es el sexo de esas personas? 




7.
Explore las variables folk (gusto por la música folk, escala Likert de 5 puntos) y jazz (gusto por el jazz, escala Likert de 5 puntos).
Explore si existe relación entre ambas variables, gráfica y numéricamente.
Asumiendo que esta es una muestra aleatoria simple, ¿se puede descartar la hipótesis nula? (usar tab2 con porcentajes y también ktau, y allí taub).
¿Cuál es el grado de asociación?



8.
Explore las variables spanking (estar de acuerdo con palmadas para disciplinar a los niños) y polviews (autoidentificación ideológica como liberales o conservadores).
Explore si existe relación entre ambas variables, gráfica y numéricamente.
Asumiendo que esta es una muestra aleatoria simple, ¿se puede descartar la hipótesis nula?
¿Cuál es el grado de asociación?


martes, 10 de julio de 2018

Ejercicio de recodificación (sin solución)


Genere la base de datos corriendo la sintaxis que sigue:

**********************************************************
clear
set obs 400
set seed 999
gen religion = trunc(1+(4)*runiform())
label define religion 1 "catolico" 2 "protestante" 3 "judío" 4 "islam" 5 "otro"
label values religion religion
gen glicemia = rnormal(100, 25)
gen industria = trunc(1+(9)*runiform())
gen voto = trunc(1+(5)*runiform())
label define voto 1 "FA" 2 "PC" 3 "PN" 4 "CA" 5 "Otros"
label values voto voto
replace voto = 9 in 2
**********************************************************

La variable religión tiene   categorías:
1. católico 2. protestante 3. judío 4. islam y 5. otro.
Recodifíquela y rotúlela en una nueva variable con las categorías 1. cristiano (abarcará católicos y protestantes) y 2. otros (abarcará judío, islam y otro).

Haga, para verificar la corrección de la recodificación, una lista que muestre los primeros 20 renglones de las variables religión y religión recodificada. [Nota: para ver los 20 primeros renglones añadir al comando in 1/20 Así, la sintaxis podría quedar list religion religion_rec in 1/20]


La variable glicemia (azúcar en sangre) tiene una gama de valores. Recodifíquelos y rotúlelos en una nueva variable, glicemia_rec, en 1. hipoglicémico (69 o menos) 2. normal (70 a 100) 3. prediabético (101 a 125) y 4. (126 o más) diabético.

Haga, para verificar, una lista que muestre los primeros 20 renglones de las variables glicemia y glicemia_rec.


La variable industria tiene 9 categorías. Recodifíquelas y rotúlelas en una nueva variable, llamada sector, según sigue:
1, 2 y 8 pasan a 1. Sector primario
3, 4 y 5 pasan a 2. Sector secundario
6, 7 y 9 pasan a 3. Sector terciario.

Haga una lista que muestre los primeros 20 renglones de las variables industria y sector.


La variable voto tiene 5 categorías: FA, PC, PN, CA y Otros. Hay un valor incomprensible: 9.
Lleve en la misma variable ese 9 a valor faltante.

Pida una tabla de frecuencias y verifique que ya no está el valor 9.


jueves, 5 de julio de 2018

Recode: puntos de corte

 En este video se verá cómo tratar los puntos de corte de una recodificación en caso de que un mismo valor sea informado en más de una categoría.

La tabla de arriba provee de información para formar un score utilizado por los médicos. Se deben recodificar 6 variables.

Pero algunos valores (35 y 8 en la primera variable y 85 y 92 en la segunda) aparecen citados debajo de dos puntuaciones distintas cada uno.

Esto exige recodificar con cuidado.