Universidad Autónoma de Santo
Domingo
Parcial 2. Seminario de
investigación | noviembre 2019
1. Introducción
a la programación en R.
Dados los vectores: edad<-c(18,12,17,22,16,24) y mujer<-c(0,0,0,1,1,1) [1=mujer] (5 punto cada
una).
1.1.
Obtener
mediante el uso de operadores lógicos, un vector llamado edadMM con las edades de las mujeres
menores de edad [1pt.].
edad<-c(18,12,17,22,16,24)
mujer<-c(0,0,0,1,1,1)
edadMM
<- edad[mujer==1 & edad>17]
edadMM
[1]
22 24
1.2.
Indique
en cuales posiciones se encuentran las mujeres menores de edad [1pt.].
which(mujer==1
& edad<=17)
[1]
5
1.3.
Usando
la función grep, recupere todas las edades que inicien con 1 [1pt.].
edad[grepl("^1.",edad)]
[1]
18 12 17 16
1.4.
Obtenga
el promedio de edad para hombres mayores de 15 años [1pt.].
mean(edad[mujer==0
& edad>15])
[1]
17.5
1.5.
Cree
un data.frame llamado seminario1 con los vectores indicados [1pt.].
seminario1
<- data.frame(edad, mujer, edadMM)
seminario1
edad mujer edadMM
1 18
0 22
2 12
0 24
3 17
0 22
4 22
1 24
5 16
1 22
6 24
1 24
2. Estadística
descriptiva. Utilice
la base de datos iris, disponible en R, para
realizar las siguientes tareas [5 pts.]:
2.1.
Verifique
en qué posición e indique (mediante indexación numérica) a cual especie
corresponde la flor con la menor longitud del pétalo (petal.length) [1pt.].
attach(iris)
names(iris)
#Posición
pos
<- which(Petal.Length == min(Petal.Length))
pos
[1]
23
Species[pos]
[1]
setosa
Levels:
setosa versicolor virginica
2.2.
Obtener
el promedio de la longitud del pétalo (Petal.Length), según la especie (Species) ¿Puedo a partir de esta
comparación establecer un efecto causal entre las variables? [1pt.]
aggregate(Petal.Length,
list(Species), mean)
Group.1
x
1 setosa 1.462
2
versicolor 4.260
3 virginica 5.552
2.3.
Obtenga
el promedio de sepal.length para aquellas plantas
de la especie virginica que tengan una longitud
de pétalo (Petal.Length) por encima del
promedio. [1pt. + 1 bono]
mean(Sepal.Length[Species=="virginica" &
Petal.Length>mean(Petal.Length)])
[1] 6.588
2.4.
Obtenga
el gráfico de correlación entre sepal.length
y Petal.Length, luego interprete sus
resultados ¿puedo indicar independencia entre estas variables? [1pt.].
plot(Sepal.Length,Petal.Length)
2.5.
Mediante
variables binarias (vectores lógicos) indique que cantidad y porcentaje de las
flores observadas tienen una Petal.Length
a más
de dos desviaciones de su media [1pt.].
zx <- (Petal.Length - mean(Petal.Length
))/sd(Petal.Length )
# Cantidad
sum(abs(zx)>2)
[0] 0
# porcentaje
mean(abs(zx)>2)
[0] 0
3. Manejo
de base de datos.
Utilice el paquete dplyr para responder
las siguientes preguntas [8 pts.].
3.1.
Utilice
la data CO2, disponible en R, para obtener las siguientes representaciones por grupo
para las categorías de las plantas (Plant): i) mayor nivel de
contaminación (conc); ii) mínimo nivel de
contaminación (conc), iii) porcentaje y iv)
número de plantas con niveles de contaminación por encima del promedio global
[4pt.].
library(dplyr)
CO2 %>%
group_by(Plant)
%>%
select(Plant,conc) %>%
summarise(mayorn = max(conc),
minin
= min(conc),
"número" = sum(conc>mean(conc)),
porcentaje = mean(conc>mean(conc)))
# A tibble: 12 x 5
Plant mayorn
minin número porcentaje
<ord> <dbl> <dbl> <int> <dbl>
1 Qn1 1000
95 3 0.429
2 Qn2 1000
95 3 0.429
3 Qn3 1000
95 3 0.429
4 Qc1 1000
95 3 0.429
5 Qc3 1000
95 3 0.429
6 Qc2 1000
95 3 0.429
7 Mn3 1000
95 3 0.429
8 Mn2 1000
95 3 0.429
9 Mn1 1000
95 3 0.429
10 Mc2 1000 95
3 0.429
11 Mc3 1000 95
3 0.429
12 Mc1 1000 95
3 0.429
3.2.
Utilice
la base de datos econmath, de la librería Wooldrige, recodificar la variable de horas
de estudios en los grupos 0-5; 6-15; y >15 y obtenga: i) edad promedio (age), horas de trabajo promedio (work), la calificación mediana (colgpa) y el número total de
observaciones por grupo. Segmente sus resultados por sexo (male). Explique brevemente sus
resultados [4pt.].
library(dplyr)
library(wooldridge)
econmath %>%
mutate(Rstudio
= case_when(
between(study, 0, 5) ~ "0-5",
between(study, 6, 15) ~ "6-15",
study > 15 ~ ">15"))
%>%
group_by(Rstudio, male) %>%
summarise(EdadMedia = mean(age),
TrabajoM = mean(work),
CalificaM = median(colgpa),
ObsTotal = n())
# A tibble: 7 x 6
# Groups:
Rstudio [4]
Rstudio male EdadMedia TrabajoM CalificaM ObsTotal
<chr> <int> <dbl> <dbl> <dbl> <int>
1 >15
0 19.4 9.29
2.84 150
2 >15
1 19.5 7.16
2.88 116
3 0-5
0 19.6 14.0
3.09 23
4 0-5
1 19.3 7.78
2.67 68
5 6-15
0 19.3 9.81
2.81 255
6 6-15
1 19.5 7.42
2.8 242
7 NA
1 19.5 6
3.20 2
4. Datos
atípicos.
De la librería de Wooldrige, utilice
la data wage1 para verificar [7
pts.]:
4.1.
Verifique
que porcentaje de los salarios (wage) observados se encuentran
a más de 1.96 desviaciones estándar de su promedio.
library(wooldridge)
mean(abs(scale(wage1$wage))>1.96)
[1] 0.04752852
4.2. Utilice el criterio de
Tukey para identificar los posibles datos atípicos de la variable salario (wage).
# ---------------------------
attach(wage1)
q1 <- quantile(wage, 0.25)
q3 <- quantile(wage, 0.75)
iqr<-q3-q1 # Rango = IQR(x)
ati_tukey <- wage<(q1-1.5*iqr) |
wage>(q3+1.5*iqr)
#Posiciones
which(ati_tukey) %>% head()
[1] 10 15 16 28 29 31
#Valores
wage[ati_tukey] %>% head()
[1] 18.18 22.20 17.33 12.50 12.50 13.00
#porcentaje de atipicos
mean(ati_tukey)
[1] 0.06844106
#cantidad
sum(ati_tukey)
[1] 36