Logo Studenta

Pauta Examen (1)

¡Este material tiene más páginas!

Vista previa del material en texto

Pontificia Universidad Católica de Chile
Facultad de Ciencias Económicas y Administrativas
Análisis de Big Data: EAA361A
Solución Examen Final
Primer fichero “EpidemiaInfo.txt”, corresponde al número de contagiados acumulados según la fecha
de inicio de śıntomas (FIS) por covid-19 en nuestro páıs desde ’2020-04-01’ hasta ’2020-05-31’
reportados por el Ministerio de Salud. Los campos son:
El set de datos dispone de las siguiente variables:
Variable Descripción
Fecha Fecha de inicio de śıntomas de los pacientes con PCR positivo
ConfirmadosFIS El número de contagiados acumulados hasta la fecha de inicio de śıntomas
Con el set de datos realice las siguientes tareas:
Pauta
1. [1.0 puntos] El data set se encuentra ordenado por la fecha de manera ascendente. Importe el set
de datos en el data frame de R llamado EpidemiaInfo. A partir de ese fichero construya la varia-
ble tiempo (agregada al data frame), que será un correlativo desde 1 a 61 con el campo Fecha, es
decir, para la primera fecha del fichero ’2020-04-01’ la variable tiempo = 1, para la segunda
fecha ’2020-04-02’ la variable tiempo = 2 y aśı sucesivamente hasta la fecha ’2020-05-31’
donde tiempo = 61.
Dependiente de la versión del examen se seleccionó una de estas 3 versiones
a) A partir de estas variables ajuste el siguiente modelo de regresión lineal, :
Yi = β0 + β1tiempoi + εi, {εi}
iid∼ Normal(0, σ2)
donde Yi representa el número de contagiados acumulados a la fecha i (correlativa con el
tiempo). Reporte el estimador de β1 redondeado al cuatro decimal.
Análisis de Big Data EAA361A 1
Respuesta
library(readr)
EpidemiaInfo = read_delim("EpidemiaInfo.txt", delim=",")
EpidemiaInfo$Tiempo = 1:61
modelo1 = lm(ConfirmadosFIS ~ Tiempo, data = EpidemiaInfo)
round(coef(modelo1)[2],4)
Tiempo
2855.846
Se aceptaba con un margen de error, es decir, se considera bueno desde 2854 hasta 2856.
b) A partir de estas variables ajuste el siguiente modelo de regresión lineal, :
log(Yi) = β0 + β1tiempoi + εi, {εi}
iid∼ Normal(0, σ2)
donde Yi representa el número de contagiados acumulados a la fecha i (correlativa con el
tiempo) y log() representa el logaritmo natural. Reporte el estimador de β1 redondeado al
cuatro decimal.
Respuesta
library(readr)
EpidemiaInfo = read_delim("EpidemiaInfo.txt", delim=",")
EpidemiaInfo$Tiempo = 1:61
EpidemiaInfo$LogConfirmados = log(EpidemiaInfo$ConfirmadosFIS)
modelo2 = lm(LogConfirmados ~ Tiempo, data = EpidemiaInfo)
round(coef(modelo2)[2],4)
Tiempo
0.0598
Se aceptaba con un margen de error, es decir, se considera bueno desde 0.0597 hasta 0.0599.
c) A partir de estas variables ajuste el siguiente modelo de regresión lineal, :
Yi = β0 + β1tiempoi + β2tiempo
2
i + εi, {εi}
iid∼ Normal(0, σ2)
donde Yi representa el número de contagiados acumulados a la fecha i (correlativa con el
tiempo). Reporte el estimador de β2 redondeado al cuatro decimal.
Análisis de Big Data EAA361A 2
Respuesta
library(readr)
EpidemiaInfo = read_delim("EpidemiaInfo.txt", delim=",")
EpidemiaInfo$Tiempo = 1:61
EpidemiaInfo$Tiempo2 = (1:61)^2
modelo3 = lm(ConfirmadosFIS ~ Tiempo + Tiempo2, data = EpidemiaInfo)
round(coef(modelo3)[3],4)
Tiempo2
69.8627
Se aceptaba con un margen de error, es decir, se considera bueno desde 69.85 hasta 69.87.
2. [1.0 puntos] Suponga que después de realizar una análisis gráfico usted decide ajustar el siguiente
modelo de regresión lineal múltiple:.
Dependiente de la versión del examen se seleccionó una de estas 3 versiones
a) log(Yi) = β0 + β1tiempoi + β2(tiempoi − tiempo)+ + εi, {εi}
iid∼ Normal(0, σ2)
Donde tiempo corresponde al tiempo promedio, log() es logaritmo natural y la variable
(
tiempoi − tiempo
)+
=
{
tiempoi − tiempo, śı ”2020-04-26”≤ Fechai ≤ ”2020-05-11”;
0, en otro caso.
Reporte el p-valor del estimador del parámetro β2 redondeado al cuarto decimal:
Respuesta
EpidemiaInfo$LogConfirmados = log(EpidemiaInfo$ConfirmadosFIS)
EpidemiaInfo$Tau1 = ifelse(EpidemiaInfo$Fecha >= as.Date("2020-04-26") &
EpidemiaInfo$Fecha <= as.Date("2020-05-11"),
Tiempo-31,0)
modelo4 = lm(LogConfirmados ~ Tiempo + Tau1, data = EpidemiaInfo)
summary(modelo4)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.6104405 0.0220495 390.504 < 2e-16 ***
Tiempo 0.0594898 0.0006262 94.997 < 2e-16 ***
Tau1 0.0142481 0.0042335 3.366 0.00136 **
---
round(0.00136,4)
0.0014
Análisis de Big Data EAA361A 3
Se aceptaba con un margen de error, es decir, se considera bueno desde 0.0013 hasta 0.0015.
b) log(Yi) = β0 + β1tiempoi + β2(tiempoi − tiempo)+ + εi, {εi}
iid∼ Normal(0, σ2)
Donde tiempo corresponde al tiempo promedio, log() es logaritmo natural y la variable
(
tiempoi − tiempo
)+
=
{
tiempoi − tiempo, śı ”2020-04-27”≤ Fechai ≤ ”2020-05-12”;
0, en otro caso.
Reporte el valor estimado del parámetro β2 redondeado al cuarto decimal:
Respuesta
EpidemiaInfo$LogConfirmados = log(EpidemiaInfo$ConfirmadosFIS)
EpidemiaInfo$Tau2 = ifelse(EpidemiaInfo$Fecha >= as.Date("2020-04-27") &
EpidemiaInfo$Fecha <= as.Date("2020-05-12"),
Tiempo-31,0)
modelo5 = lm(LogConfirmados ~ Tiempo + Tau2, data = EpidemiaInfo)
summary(modelo5)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.6089747 0.0219501 392.207 < 2e-16 ***
Tiempo 0.0594384 0.0006256 95.016 < 2e-16 ***
Tau2 0.0135081 0.0039078 3.457 0.00103 **
---
round(0.0135081,4)
0.0135
Se aceptaba con un margen de error, es decir, se considera bueno desde 0.0134 hasta 0.0136.
c) log(Yi) = β0 + β1tiempoi + β2(tiempoi − tiempo)+ + εi, {εi}
iid∼ Normal(0, σ2)
Donde tiempo corresponde al tiempo promedio, log() es logaritmo natural y la variable
(
tiempoi − tiempo
)+
=
{
tiempoi − tiempo, śı Fechai ≥”2020-04-26”;
0, en otro caso.
Reporte el valor estimado del parámetro β2 redondeado al cuarto decimal:
Análisis de Big Data EAA361A 4
Respuesta
EpidemiaInfo$LogConfirmados = log(EpidemiaInfo$ConfirmadosFIS)
EpidemiaInfo$Tau3 = ifelse(EpidemiaInfo$Fecha >= as.Date("2020-04-26"),
Tiempo-31,0)
modelo6 = lm(LogConfirmados ~ Tiempo + Tau3, data = EpidemiaInfo)
summary(modelo6)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.665243 0.029438 294.355 < 2e-16 ***
Tiempo 0.056408 0.001323 42.636 < 2e-16 ***
Tau3 0.006786 0.002312 2.935 0.00478 **
---
round(0.006786,4)
0.0068
Se aceptaba con un margen de error, es decir, se considera bueno desde 0.0067 hasta 0.0069.
3. [1.0 puntos] Ajuste el siguiente modelo de regresión lineal múltiple:
log(Yi) = β0 + β1tiempoi + β2(tiempoi − tiempo)+ + εi, {εi}
iid∼ Normal(0, σ2)
Donde tiempo corresponde al tiempo promedio, log() es logaritmo natural y la variable
(
tiempoi − tiempo
)+
=
{
tiempoi − tiempo, śı ”2020-04-26”≤ Fechai ≤ ”2020-05-11”;
0, en otro caso.
Dependiente de la versión del examen se seleccionó una de estas 3 versiones
Obs: Para todas las versiones de la pregunta hay que hacer lo siguiente:
Ŷi = exp
(
β̂0 + β̂1 · tiempoi + β̂2 · 0
)
,
dado que las fechas para las predicciones son superiores a ’2020-05-11’, por lo tanto:
(
tiempoi − tiempo
)+
= 0
Análisis de Big Data EAA361A 5
a) Reporte una predicción del número de contagiados a la fecha ’2020-06-05’ en valor entero,
utilice los coeficientes estimados redondeados al cuarto decimal:
Respuesta
Para la fecha ’2020-06-05’ la variable tiempo toma el valor tiempo = 66, por lo tanto la
predicción será:
EpidemiaInfo$Tau1 = ifelse(EpidemiaInfo$Fecha >= as.Date("2020-04-26") &
EpidemiaInfo$Fecha <= as.Date("2020-05-11"),
Tiempo-31,0)
modelo4 = lm(LogConfirmados ~ Tiempo + Tau1, data = EpidemiaInfo)
coeficientes = round(modelo4$coef,4)
prediccion1 = exp(coeficientes[1] + coeficientes[2]*66)
round(round(prediccion1),4)
278563
Se aceptaba con un margen de error, es decir, se considera bueno desde 278562 hasta 278564.
b) Reporte una predicción del número de contagiados a la fecha ’2020-06-07’ en valor entero,
utilice los coeficientes estimados redondeados al cuarto decimal:
Respuesta
Para la fecha ’2020-06-07’la variable tiempo toma el valor tiempo = 68, por lo tanto la
predicción será:
EpidemiaInfo$Tau1 = ifelse(EpidemiaInfo$Fecha >= as.Date("2020-04-26") &
EpidemiaInfo$Fecha <= as.Date("2020-05-11"),
Tiempo-31,0)
modelo4 = lm(LogConfirmados ~ Tiempo + Tau1, data = EpidemiaInfo)
coeficientes = round(modelo4$coef,4)
prediccion2 = exp(coeficientes[1] + coeficientes[2]*68)
round(round(prediccion2),4)
313765
Se aceptaba con un margen de error, es decir, se considera bueno desde 313764 hasta 313766.
c) Reporte una predicción del número de contagiados a la fecha ’2020-06-07’ en valor entero,
utilice los coeficientes estimados redondeados al cuarto decimal:
Respuesta
Para la fecha ’2020-06-10’ la variable tiempo toma el valor tiempo = 71, por lo tanto la
predicción será:
Análisis de Big Data EAA361A 6
EpidemiaInfo$Tau1 = ifelse(EpidemiaInfo$Fecha >= as.Date("2020-04-26") &
EpidemiaInfo$Fecha <= as.Date("2020-05-11"),
Tiempo-31,0)
modelo4 = lm(LogConfirmados ~ Tiempo + Tau1, data = EpidemiaInfo)
coeficientes = round(modelo4$coef,4)
prediccion3 = exp(coeficientes[1] + coeficientes[2]*71)
round(round(prediccion3),4)
375082
Se aceptaba con un margen de error, es decir, se considera bueno desde 375081 hasta 375083.
4. [1.5 puntos] El data set email.txt contiene información de 3921 correos electrónicos. Las
variables presentes en el fichero son:
� spam: Indicador con un 1 se indica si el correo es ’spam’, 0 si no es.
� number: Variable categórica que indica si el correo ’no tiene un número’, o si el correo
tiene ’un número peque~no (menos de 1 millón)’ o ’un número grande’ con las ca-
tegoŕıas ’none’, ’small’ y ’big’ respectivamente.
� to_multiple: Indicador de si el correo electrónico fue dirigido a más de un destinatario (1
si y 0 no).
� format: Indica si el correo electrónico se escribió usando HTML (1 si y 0 no).
� winner: Indica si la palabra ’ganador’ apareció en el correo electrónico (’yes’ si y ’no’
no).
� num_char: El número de caracteres en el correo electrónico, en miles.
� urgent_subj: Si la palabra ’urgente’ estaba en el asunto del correo electrónico
El objetivo es generar un modelo que permita identificar qué emails son “spam” y cuáles no, para
esto importe el set de datos a un data frame en R denotado por correos.
Dependiente de la versión del examen se seleccionó una de estas 3 versiones
a) La variable objetivo es spam y el resto de las variables en el set de datos son consideradas
covariables (variables independientes, predictoras etc), en el caso de la variable number utili-
ce como celda de referencia la categoŕıa ’big’ y para la variable winner utilice la categoŕıa
’no’ como celda de referencia.
Con el data frame realice lo siguiente:
a) Ajuste un modelo de regresión loǵıstica utilizando todas las variables mencionadas an-
teriormente.
b) Estime la probabilidad de que el correo sea spam, esta probabilidad estimada denotela
por prediccion y agregue este campo al data frame correos, para esto puede utilizar
la función predict( ) con la opción type = ’response’.
Análisis de Big Data EAA361A 7
c) Construya la variable clasificacion que será 1 si ’prediccion’ > 0.10 y 0 en otro
caso.
d) Genere una tabla de contingencia entre clasificacion y spam. Esta variable está
clasificando spam según la probabilidad de ser spam.
A partir de la tabla de contingencia reporte en número de correos que fueron clasificados
correctamente como spam utilizando el punto de corte en 3.
Respuesta
### Versión 1
correos = read_delim("email_1a.txt",delim=",")
correos$number = relevel(as.factor(correos$number),"big")
correos$winner = relevel(as.factor(correos$winner),"no")
modelogit = glm(spam ~ .,data = correos, family = binomial)
correos$prediccion = predict(modelogit,type = "response")
corte = 0.10
clasificacion = ifelse(correos$prediccion > corte,1,0)
conf_matrix = table(clasificacion,correos$spam)
conf_matrix
clasificacion 0 1
0 2701 116
1 853 251
El número de correos correctamente clasificados son 251, con el margen de error está correcto
250 y 252.
b) La variable objetivo es spam y el resto de las variables en el set de datos son consideradas co-
variables (variables independientes, predictoras etc), en el caso de la variable number utilice
como celda de referencia la categoŕıa ’none’ y para la variable winner utilice la categoŕıa
’no’ como celda de referencia.
Con el data frame realice lo siguiente:
a) Ajuste un modelo de regresión loǵıstica utilizando todas las variables mencionadas an-
teriormente.
b) Estime la probabilidad de que el correo sea spam, esta probabilidad estimada denotela
por prediccion y agregue este campo al data frame correos, para esto puede utilizar
la función predict( ) con la opción type = ’response’.
c) Construya la variable clasificacion que será 1 si ’prediccion’ > 0.15 y 0 en otro
caso.
Análisis de Big Data EAA361A 8
d) Genere una tabla de contingencia entre clasificacion y spam. Esta variable está
clasificando spam según la probabilidad de ser spam.
A partir de la tabla de contingencia reporte en número de correos que fueron clasificados
correctamente como spam utilizando el punto de corte en 3.
Respuesta
### Versión 2
correos = read_delim("email_2b.txt",delim=",")
correos$number = relevel(as.factor(correos$number),"none")
correos$winner = relevel(as.factor(correos$winner),"no")
modelogit = glm(spam ~ .,data = correos, family = binomial)
correos$prediccion = predict(modelogit,type = "response")
corte = 0.15
clasificacion = ifelse(correos$prediccion > corte,1,0)
conf_matrix = table(clasificacion,correos$spam)
conf_matrix
clasificacion 0 1
0 3166 186
1 388 181
El número de correos correctamente clasificados son 181, con el margen de error está correcto
180 y 182.
c) La variable objetivo es spam y el resto de las variables en el set de datos son consideradas co-
variables (variables independientes, predictoras etc), en el caso de la variable number utilice
como celda de referencia la categoŕıa ’small’ y para la variable winner utilice la categoŕıa
’no’ como celda de referencia.
Con el data frame realice lo siguiente:
a) Ajuste un modelo de regresión loǵıstica utilizando todas las variables mencionadas an-
teriormente.
b) Estime la probabilidad de que el correo sea spam, esta probabilidad estimada denotela
por prediccion y agregue este campo al data frame correos, para esto puede utilizar
la función predict( ) con la opción type = ’response’.
c) Construya la variable clasificacion que será 1 si ’prediccion’ > 0.12 y 0 en otro
caso.
d) Genere una tabla de contingencia entre clasificacion y spam. Esta variable está
clasificando spam según la probabilidad de ser spam.
Análisis de Big Data EAA361A 9
A partir de la tabla de contingencia reporte en número de correos que fueron clasificados
correctamente como spam utilizando el punto de corte en 3.
Respuesta
### Versión 3
correos = read_delim("email_3c.txt",delim=",")
correos$number = relevel(as.factor(correos$number),"small")
correos$winner = relevel(as.factor(correos$winner),"no")
modelogit = glm(spam ~ .,data = correos, family = binomial)
correos$prediccion = predict(modelogit,type = "response")
corte = 0.12
clasificacion = ifelse(correos$prediccion > corte,1,0)
conf_matrix = table(clasificacion,correos$spam)
conf_matrix
clasificacion 0 1
0 2786 124
1 768 243
El número de correos correctamente clasificados son 243, con el margen de error está correcto
242 y 244.
5. [1.5 puntos] Suponga que un analista de correos electrónicos genera una muestra alea-
toria de 3000 correos del data frame importado por usted en la pregunta anterior (utiliza el mismo
data set email.txt) y ajusta un modelo de regresión loǵıstica para la variable objetivo spam
utilizando el resto de información disponible en el data frame utilizando como celda de referencia
la categoŕıa ’big’ para la variable ”number 2la categoŕıa ’no’ como celda de referencia para la
variable ”winner”.
El analista utilizala función ’summary()’ para estudiar las estad́ısticas relacionadas a los paráme-
tros del modelo y obtiene el siguiente output en R:
OBS: Recuerde que el summary() reporta la siguiente información en la tabla de coeficientes:
a) En la primera columna Estimate los parámetros estimados β̂j .
b) En la segunda columna Std. Error la desviación estándar estimada del estimador ŜD(β̂j).
c) Las columnas 3 y 4 z value y Pr(>|z|) reportan información sobre el test de hipótesis indi-
vidual para evaluar que parámetros son significativos en la regresión, es decir, son columnas
asociadas al test de hipótesis H0 : βj = 0 vs H1 : βj 6= 0.
Análisis de Big Data EAA361A 10
d) La tercera columna corresponde al estad́ıstico zvaluej =
β̂j
ŜD(β̂j)
utilizado para evaluar la
hipótesis H0 (se asume que tiene distribución normal estándar).
e) La cuarta columna Pr(>|z|) corresponde al p-valor del test de hipótesis utilizado, que se
calcula:
Pr(>|z|) = Pr(Z > |z valuej |) = 2 · (1− φ(|z valuej |))
donde Z tiene distribución normal estándar (media = 0 y varianza 1) y φ() corresponde a la
probabilidad acumulada de una normal estándar.
Dependiente de la versión del examen se seleccionó una de estas 3 versiones
a) Complete la información faltante --------:
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.077538 0.216198 -4.984 6.23e-07 ***
numbernone 0.637861 0.229629 2.778 0.00547 **
numbersmall -0.658513 0.207186 -3.178 0.00148 **
to_multiple -2.082593 0.333298 -6.248 4.15e-10 ***
format -1.000907 0.152882 -6.547 5.87e-11 ***
winneryes 2.170023 -------- 5.859 4.65e-09 ***
num_char -0.029507 0.008987 -3.283 0.00103 **
urgent_subj 2.998666 0.915250 3.276 0.00105 **
Respuesta
> round(2.170023/5.859,4)
[1] 0.3704
El valor faltante es 0.3704, margen de error desde 0.3703 hasta 0.3705.
b) Complete la información faltante --------:
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.077538 0.216198 -4.984 6.23e-07 ***
numbernone 0.637861 0.229629 2.778 0.00547 **
numbersmall -0.658513 0.207186 -3.178 0.00148 **
to_multiple -2.082593 0.333298 -6.248 4.15e-10 ***
format -1.000907 0.152882 -6.547 5.87e-11 ***
winneryes 2.170023 0.370349 5.859 4.65e-09 ***
num_char -------- 0.008987 -3.283 0.00103 **
urgent_subj 2.998666 0.915250 3.276 0.00105 **
Análisis de Big Data EAA361A 11
Respuesta
> round(0.008987*(-3.283),4)
[1] -0.0295
El valor faltante es -0.0295, margen de error desde -0.0296 hasta -0.0294.
c) Complete la información faltante --------:
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.077538 0.216198 ----- 6.23e-07 ***
numbernone 0.637861 0.229629 2.778 0.00547 **
numbersmall -0.658513 0.207186 -3.178 0.00148 **
to_multiple -2.082593 0.333298 -6.248 4.15e-10 ***
format -1.000907 0.152882 -6.547 5.87e-11 ***
winneryes 2.170023 0.370349 5.859 4.65e-09 ***
num_char -0.029507 0.008987 -3.283 0.00103 **
urgent_subj 2.998666 0.915250 3.276 0.00105 **
Respuesta
> round(-1.077538/0.216198,4)
[1] -4.984
El valor faltante es -4.984, margen de error desde -4.985 hasta -4.983.
Fin !!!!!
Análisis de Big Data EAA361A 12

Continuar navegando