jueves, 30 de marzo de 2017

Ejercicio sobre relaciones bivariadas entre dos variables cuanti (sin solución)

Genere una base de datos ejecutando los comandos que siguen.


***************** Generación de base de datos******************
clear all
set seed 18964
set obs 600
gen x = (runiform() * 118 + 2)
gen j = 160 - x + rnormal(0, 30)
gen k = 15 + x + round(rnormal(0,8))
gen L = 50 + x + rnormal(0,4)
set obs 601
replace x = 300 in 601
replace L = 58 in 601
replace x = . in 601
gen m = ln(x)
gen n = m + rnormal(0, 0.2)
sum x
gen p = x * 150 - x^2 + rnormal(0, 230)
**************Fin  generación de base de datos******************


En videos anteriores se vieron los comandos:

scatter var1 var2  para diagramas de dispersión

lowess var1 var2  para diagramas de dispersión con curva suavizada que acompañe las concentraciones de puntos

twoway (scatter var1 var2) (lfit var1 var2) para diagrama de dispersión con recta de mejor ajuste

pwcorr var1 var2, sig   para pedir r de Pearson, que indica qué tan bien se ajusta la nube de puntos a una recta

spearman var1 var2 que indica hasta donde una relación es monótona creciente o decreciente (monotonía perfecta creciente indica que cuando sube una variable siempre sube la otra, y monotonía perfecta decreciente que cuando sube una variable siempre baja la otra. (No usar si es creciente en un tramo de una relación curvilínea y decreciente en otro).

Se pide al estudiante que, haciendo uso de los comandos anteriores, estudie cada una de las relaciones siguientes.

j x
k x
L x
m x
n x
p x


  1. Primero se graficará cada relación, y el estudiante indicará si es una relación lineal o curvilínea, si es creciente o decreciente, o creciente en un tramo y decreciente en otro, y si tiene outliers.
  2. La fuerza de la asociación se medirá con la r de Pearson si la relación es lineal y con la r de Spearman se medirá el grado de monotonía si la relación es curvilínea creciente o decreciente. (Si es creciente en un tramo y decreciente en otro no se aplicarán ni la r de Pearson ni la rho de Spearman).
  3. Si hubiere presencia de outliers, las medidas de fuerza de la asociación se calcularán con y sin los outliers.


Los tres pasos anteriores se aplicarán primero para la relación jx, luego se aplicarán los mismos tres pasos para kx, etc.







sábado, 25 de marzo de 2017

Relaciones bivariadas: dos variables cuantitativas (continuación). Video


En este video, se analizarán relaciones entre variables cuantitativas de archivos provistos por Stata. Se verá cómo lucen algunas relaciones menos típicas que en ocasiones aparecen en la vida real.

Video

lunes, 20 de marzo de 2017

Relaciones bivariadas: dos variables cuantitativas (inicio). Video

En este video se verá la relación entre variables cuantitativas.

Primero se estudiarán mediante gráficas de dispersión (scatterplots) y luego se calcularán, si corresponde, dos estadísticos de fuerza de la asociación: r de Pearson y r de Spearman.

Se trabajará con la sintaxis que sigue.


**** inicio generacion base de datos ********
clear all
set obs 50
set seed 8891
gen n = round(rnormal(65,13))
gen notas_matematica = round(n + rnormal(0,5))
gen notas_geometria = round(n + rnormal(0,5))
gen notas_calculo = round(notas_matematica + rnormal(0, 1))
gen notas_teatro = 100 - round(n + rnormal(0,3))
gen notas_fisica = round(n + rnormal(0,2))
gen notas_piano = round(rnormal(65,13))
gen notas_jardineria = round(2.7 * n - 0.02 *n^2 + rnormal(0,1))
drop n
set obs 51
replace notas_fisica = 99 in 51
replace notas_teatro = 99 in 51
******* fin generacion base de datos ********



******* inicio gráficas *********************
******* y medidas de asociación *************

scatter notas_matematica notas_geometria
pwcorr notas_matematica notas_geometria, sig
spearman notas_matematica notas_geometria

scatter notas_piano notas_matematica
pwcorr notas_piano notas_matematica, sig
spearman notas_piano notas_matematica

scatter notas_matematica notas_calculo
pwcorr notas_matematica notas_calculo, sig
spearman notas_matematica notas_calculo

scatter notas_teatro notas_matematica
pwcorr notas_teatro notas_matematica, sig
spearman notas_teatro notas_matematica

scatter notas_fisica notas_teatro
pwcorr notas_fisica notas_teatro, sig
spearman notas_fisica notas_teatro

scatter notas_jardineria notas_matematica
pwcorr notas_jardineria notas_matematica, sig
spearman notas_jardineria notas_matematica

********fin gráficas ************************
******* y medidas de asociación *************




Video



viernes, 17 de marzo de 2017

Comandos keep y drop. Video

Los comandos keep y drop sirven para retener o eliminar tanto casos como variables en una base. Keep se usa para retener; drop para eliminar.

Lógicamente, retener unas variables es lo mismo que eliminar otras variables. Lo mismo vale para las observaciones.

Si tenemos hombres y mujeres en nuestra base y deseamos estudiar mujeres, tenemos dos comandos equivalentes:

keep if sexo == "mujer"

o bien

drop if sexo == "hombre"



Los comandos keep y drop actúan también sobre las variables. Supongamos que tenemos las variables W, X, Y y Z.

Si queremos retener con las variables W y X, podemos ejecutar dos comandos equivalentes:

keep W X

o bien

drop Y Z



Video

jueves, 16 de marzo de 2017

Ejercicio con condiciones (sin solución)


Corra la siguiente sintaxis y genere una base.


********************************************.
clear all
set obs 400
gen identificacion = _n
set seed 7998
gen aleat = runiform()
gen genero = "terror" if (aleat < 0.10)
replace genero = "policial" if (aleat > 0.10 & aleat < 0.25) 
replace genero = "lejano oeste" if  (aleat > 0.25 & aleat < 0.40)
replace genero = "romantico" if  (aleat > 0.40 & aleat < 0.60) 
replace genero = "guerra" if (aleat > 0.60 & aleat < 0.80) 
replace genero = "comedia" if  (aleat > 0.80 & aleat < 1) 

gen duracion_minut = trunc(runiform() * 80 + 60)
replace duracion_minut = . if runiform() < 0.08
gen nacionalidad_director = trunc(runiform() * 7 + 1)
label define nacionalidad_director 1 "inglés" 2 "norteamericano" 3 "indio" 4 "chino" 5 "latinoamericano" 6 "turco" 7 "otro"
label values nacionalidad_director nacionalidad_director
gen entradas_vendidas = trunc(runiform() * 15000000 + 5000000)
gen recibio_premios = runiform()  < 0.70
label define recibio_premios 1 "Sí" 0 "No"
label values recibio_premios recibio_premios

drop aleat
cls

********************************************.




La base de datos generada simula las películas a las que pueden acceder tres amigos.

  1. El primero, Mario, desea ver una película que no sea de guerra, y con un director que no sea inglés ni norteamericano. ¿Cuántas películas son aceptables para Mario?
  2. Browsee las variables identificación, genero y nacionalidad del director de las adecuados para Mario.
  3. El segundo, Alberto, desea una película que dure más de 60 minutos. ¿Cuántas películas son aceptables para Alberto?
  4. Liste las variables identificación y duracion_minut de las aceptables para Alberto.
  5. El tercero, Miguel, quiere ver una película que tenga premios, y que dure entre 70 y 100 minutos (ambos extremos incluidos). ¿Cuántas películas son aceptables para Miguel?
  6. Browsee las variables identificacion, duracion_minut y recibio_premios.



miércoles, 15 de marzo de 2017

Ejercicio con condiciones (con solución en video)

Se trabajará con una base que simula el catálogo de una librería.

Allí habrá datos sobre la cantidad de páginas, el tipo de tapa (blanda o dura), el autor (uruguayo, latinoamericano, español o del resto del mundo) y tema (geografía, historia y novelas). La variable libro_nro sirve para identificar a cada libro.

La base se generará ejecutando la siguiente sintaxis:


**********************************************************
clear all
set obs 150
set seed 6678
gen libro_nro = _n
gen cantidad_paginas = round(rnormal(200, 45))
replace cantidad_paginas = .  in 12/14
gen tipo_tapa = round(runiform()) + 1
label define tipo_tapa 1 "Tapa blanda" 2 "Tapa dura"
label values tipo_tapa tipo_tapa
gen nac_aut = round(runiform()*3 + 1)
label variable nac_aut "Nacionalidad del autor"
label define nac_aut 1 "Uruguayo" 2 "Latinoamericano" 3 "Español" 4 "Resto del mundo"
label values nac_aut nac_aut
gen tema_libro = round(runiform()*2 + 1)
label define tema_libro 1 "Geografía" 2 "Historia" 3 "Novelas"
label values tema_libro tema_libro
**********************************************************

Se pide al estudiante:

Indique cuáles variables son cuantitativas y cuales categóricas.

Indique cuántas variables hay de cadena y cuántas numéricas.

Indique si hay variables con valores faltantes. Si las hay, indique cuáles son y cuántos son los valores faltantes.

Estela desea regalar un libro de entre 180 y 225 páginas.  Browsee los libros adecuados y compruebe que todos tienen la cantidad de páginas adecuada. ¿Cuántos libros se le podrán ofrecer a Estela?

Alberto desea regalar un libro con más de 280 páginas. Haga un listado con los libros deseados por Alberto, con las variables libro_nro y cantidad de páginas. Compruebe que todos sus libros tienen más de 280 páginas.

Miguel desea un libro de historia con tapa dura. Browsee los libros que le servirían a Miguel. Verifique que usted estableció bien las condiciones en su comando. Indique cuántos libros tienen las condiciones solicitadas por Miguel.

Natalia desea un libro de autor o bien latinoamericano o bien español, pero que tenga menos de  140 páginas. Browsee los libros que cumplen con las condiciones de Natalia. Verifique que los libros cumplen con las condiciones requeridas. Indique cuántos libros son.

Sofía quiere un libro cuyo autor no haya nacido en el resto del mundo, ¿Cuántos libros hay en estas condiciones?

Francisco quiere un libro de autor uruguayo o latinoamericano, de tema geográfico o histórico y que tenga más de 260 páginas. Browsee los libros que le servirían a Francisco. Verifique que cumplen las condiciones. Indique cuántos libros son.



Solución en video




viernes, 10 de marzo de 2017

Valores faltantes (missing). Video

Este video se realizó con una base surgida de la siguiente sintaxis:


************************************************
clear all
set seed 2145
set obs 400
gen caso_nro = _n
gen tiempo_reaccion = round(rnormal(35,8))
replace tiempo_reaccion = . if runiform() < .05
replace tiempo_reaccion = .a if runiform() < .03
label define tiempo .a "No concurrió a prueba"
label value tiempo_reaccion tiempo

gen deporte = int(runiform() * 3)+ 1
label define deporte 1 "Futbol" 2 "Basquetbol" 3 "Otro"
label value deporte deporte
replace deporte = . if runiform() < 0.10
gen nacionalidad = "uruguayo"
replace nacionalidad = "" in 1/3
replace nacionalidad = "argentino" in 5/8

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

Se verá cómo se presentan los valores faltantes en la base de datos y las precauciones que hay que tener cuando se piden condiciones "mayores que".

Video

domingo, 5 de marzo de 2017

Condiciones en Stata. if. Operadores relacionales y lógicos. Video


En este video se trabajará con la base de datos que surge de la siguiente sintaxis:


************************************************
clear all
set seed 2145
set obs 400
gen nro_caso = _n
gen colorpelo = int((runiform()*4))+ 1
label define colorpelo 1 "rubio" 2"pelirrojo" 3 "castaño" 4 "negro"
label values colorpelo colorpelo
label variable colorpelo "Color de pelo"
gen altura = round(rnormal(173,6))
gen aleat = runiform()
gen nov_pref = "policial" if aleat < 0.10
replace nov_pref = "ciencia ficcion" if aleat >= 0.10 & aleat < 0.40
replace nov_pref = "romantica" if aleat >=0.40 & aleat < 0.70
replace nov_pref = "historica" if aleat >=0.70 & aleat <= 1
label variable nov_pref "Tipo de novela preferida"
drop aleat
gen sueldo = int(rnormal(200, 15))
gen patrimonio = rnormal(45000, 8200)
************************************************

Se mostrará cómo trabajar con condiciones. Saber cómo trabajar con ellas es una habilidad crítica para quienes realizan análisis de datos.

Se mostrará cómo trabajar con los siguientes operadores:





Video