-
Notifications
You must be signed in to change notification settings - Fork 1
/
ejercicios-p.Rmd
427 lines (253 loc) · 16.5 KB
/
ejercicios-p.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
---
title: "Práctica 2 - Modelos de distribución de probabilidad"
author: "Gerardo Adrián Aguirre Vivar, Ana Jiménez Santamaría, David Durán Prieto"
date: "02 de noviembre de 2019"
output: pdf_document
---
```{r include=FALSE}
#Opción por defecto para todos los bloques de código de R
knitr::opts_chunk$set(echo = FALSE)
```
---
El conjunto de datos BATTERY incluido en el paquete PASWR2 contiene un total de 100 observaciones de 2 variables correspondientes a la duración de dos tipos de baterías A y B (en horas). El conjunto de datos BATTERY es un data.frame con las columnas **lifetime** y **facility**. A continuación se procede a cargar y mostrar el conjunto de datos.
```{r}
# Añadimos paquetes a utilizar
library(ggplot2)
library(lattice)
library(PASWR2)
library(nortest)
library(scales)
library(knitr)
```
```{r include=TRUE, echo=TRUE}
datos<-BATTERY
```
```{r echo=FALSE,results='markup'}
kable(head(datos,5),caption = "Conjunto de datos - primeras 5 filas")
kable(tail(datos,5),caption = "Conjunto de datos - últimas 5 filas")
```
***
# Actividad 1
Realiza un histograma de todas las filas de la variable lifetime y comprueba que efectivamente nos interesa separar los datos
## Código:
```{r echo=TRUE}
hist(datos$lifetime,breaks=20,main = "Histograma del conjunto de datos" ,
xlab = "Tiempo de vida de las baterías",ylab="Frecuencia",
col = "orange", border = "white", bg = "white", freq = TRUE)
```
## Explicación:
Se realiza un histograma de la variable **lifetime**. Observamos que muestra una distribución bimodal (***Dog-food***), en donde tenemos dos clusters completamente aislados. Cada uno parece tener una media distinta, y no hay solapamiento entre ambos grupos. En este caso, sí nos interesa separar los datos en dos conjuntos, para poder analizarlos por separado.
---
Crea dos conjuntos de datos diferentes para los dos tipos de baterías, por ejemplo datosA y datosB.
## Código:
```{r echo=TRUE}
datosA<-datos[datos$facility=="A",]
datosB<-datos[datos$facility=="B",]
```
```{r echo=TRUE,results='markup'}
kable(head(datosA,5),caption = "Conjunto de datos A")
kable(head(datosB,5),caption = "Conjunto de datos B")
```
## Explicación:
Creamos dos nuevas variables (**datosA** y **datosB**) para los dos conjuntos de datos de baterías (tipo A y tipo B), filtrando por el atributo ***facility***.
---
Realiza ahora un histograma de cada uno de los tipos y comenta si te parece que los datos siguen una distribución normal.
## Código:
```{r echo=TRUE}
hist(datosA$lifetime, breaks = 8,main = "DatosA" ,xlab = "Tiempo de vida de las baterías",
ylab = "Densidad",col = "orange", border = "white", bg = "white", freq = FALSE)
curve(dnorm(x, mean(datosA$lifetime), sd(datosA$lifetime)), add = TRUE, lwd = 2, lty = 2)
```
```{r echo=TRUE}
hist(datosB$lifetime, breaks = 8,main = "DatosB" ,xlab = "Tiempo de vida de las baterías",
ylab = "Densidad",col = "orange", border = "white", bg = "white", freq = FALSE)
curve(dnorm(x, mean(datosB$lifetime), sd(datosB$lifetime)), add = TRUE, lwd = 2, lty = 2)
```
## Explicación:
Creamos un histograma de cada uno de los tipos de baterías para comprobar que, efectivamente, ambos conjuntos siguen una distribución normal.
---
Confirma tus conclusiones con alguna/s de las herramientas vistas en clase (test de normalidad, gráfico Quantil-Quantil, etc).
## Código:
**Tests de normalidad para el conjunto de pilas A**
```{r echo=TRUE}
shapiro.test(datosA$lifetime)
```
```{r echo=TRUE}
ad.test(datosA$lifetime)
```
**Gráfico cuantil-cuantil para el conjunto de las pilas A**
```{r}
qqnorm(datosA$lifetime,pch=20,col=alpha("orange",1),las=1,xlab="Cuantiles teóricos de una distribución normal",ylab="Cuantiles de los datos",main="Gráfico Q-Q del conjunto de pilas A")
grid()
qqline(datosA$lifetime,lwd=2)
```
**Tests de normalidad para el conjunto de pilas B**
```{r echo=TRUE}
shapiro.test(datosB$lifetime)
```
```{r echo=TRUE}
ad.test(datosB$lifetime)
```
**Gráfico cuantil-cuantil para el conjunto de las pilas B**
```{r}
qqnorm(datosB$lifetime,pch=20,col=alpha("orange",1),las=1,xlab="Cuantiles teóricos de una distribución normal",ylab="Cuantiles de los datos",main="Gráfico Q-Q del conjunto de pilas B")
grid()
qqline(datosB$lifetime,lwd=2)
```
## Explicación:
Al visualizar la curva en ambos histogramas podemos ver que, aparentemente, siguen una distribución normal. No obstante, para confirmar nuestras suposiciones, procedemos a realizar dos tests de normalidad y un gráfico Quantil-Quantil.
Hemos utilizado los tests Shapiro-Wilk y Anderson-Darling para contrastar la normalidad de ambos conjuntos A y B. Siendo nuestra hipotesis nula $(Ho)$ que el subconjunto **datosA** y el subconjunto **datosB** están distribuidos normalmente, podemos decir que dicha hipótesis no puede ser rechazada al encontrarnos con valores de p-valor y W mucho mayores al nivel de significancia $(\alpha=0.05)$.
Además, si nos fijamos en los gráficos Q-Q, vemos como los puntos del gráfico cuantil-cuantil caen aproximadamente sobre una línea recta. Por lo que, de aquí en adelante, asumiremos que ambos conjuntos de datos están normalmente distribuidos.
***
# Actividad 2
Realiza una estimación puntual de la media y la desviación típica de la población de cada tipo de baterías.
## Código:
```{r echo=TRUE,results='hide'}
mediaA<-mean(datosA$lifetime)
stdA<-sd(datosA$lifetime)
mediaB<-mean(datosB$lifetime)
stdB<-sd(datosB$lifetime)
```
## Explicación:
Ahora que sabemos que nuestros conjuntos de datos siguen aproximadamente una distribución normal $X$$\sim$$N(\mu,\sigma)$, tenemos que estimar los parámetros $\mu$ y $\sigma$ para cada conjunto de pilas A y B, para posteriormente realizar cálculos de probabilidad.
**Media y desviación tipica del conjunto A:**
$\mu_A$=`r mediaA`
$\sigma_A$=`r stdA`
**Media y desviación tipica del conjunto B:**
$\mu_B$=`r mediaB`
$\sigma_B$=`r stdB`
Posteriormente, establecemos que:
$X$: duración de las baterías del tipo A/B
$X_A$$\sim$$N(\mu_A,\sigma_A)$
$X_B$$\sim$$N(\mu_B,\sigma_B)$
## Cuestiones de probabilidad:
* Calcula la probabilidad de que una batería tomada al azar del tipo A dure más de 210 horas
## Código
```{r echo =TRUE,results='hide'}
p_210_A<-pnorm(q=210,mean = mediaA,sd= stdA,lower.tail = F)
porc_210_A<- round(p_210_A*100,3)
```
Entonces $P[X\geq210]=$ `r p_210_A` (`r porc_210_A`%).
## Explicación:
Obtenemos el valor de la función de distribución para $X\geq210$. Como queremos saber la probabilidad de que una batería tomada al azar del tipo A dure más de 210 horas, nos interesa obtener el ***upper tail*** de nuestra distribución normal (opción ***lower tail*** deshabilitada).
* Calcula la probabilidad de que una batería tomada al azar del tipo B dure menos de 175 horas
## Código
```{r echo=TRUE,results='hide'}
p_175_B<-pnorm(q=175,mean = mediaB,sd=stdB,lower.tail = T)
porc_175_B<- round(p_175_B*100,3)
```
Entonces $P[X\leq175]$ `r p_175_B` (`r porc_175_B`%).
## Explicación:
Obtenemos el valor de la función de distribución para $X\leq175$ . Como queremos saber saber la probabilidad de una batería tomada al azar del tipo A dure menos de 175 horas, nos interesa saber el ***lower tail*** de nuestra distribución normal. La probabilidad $X<175$ se aproxima a $X\leq175$, debido a que la probabilidad de que $X=175$, siendo una variable continua, es prácticamente nula (0).
* Encuentra cuál es la duración máxima del 3% de las pilas del tipo B que duran menos.
## Código
```{r echo=TRUE,results='hide'}
q_3<-qnorm(p=0.03,mean = mediaB,sd=stdB)
```
Entonces, el cuantil 0.03 es `r q_3`
## Explicación:
Los cuantiles nos permiten dividir los datos en grupos de igual tamaño.
El cuantil de orden p de una distribución (con 0 < p < 1) es el valor de la variable x que marca un corte de modo que una proporción p de valores de la población es menor o igual que x.
Para saber cual es la duración máxima del 3% de las pilas tipo B que tienen un lifetime menor, deberemos hallar el cuantil 0.03 de nuestra distribución (función qnorm con p=0.03).
***
# Actividad 3
Vamos a centrarnos ahora en las baterías de tipo B. Supongamos que una duración por debajo de 175 horas no es aceptable para el usuario de la batería. En la actividad anterior hemos calculado la probabilidad p de que esto suceda. Entonces, si tomamos una batería del tipo B al azar y comprobamos si dura menos de 175 horas, estamos realizando un experimento de Bernoulli con probabilidad p.
**Cuestiones de probabilidad:**
* Calcula la probabilidad de que en un lote de 10 baterías, no haya ninguna defectuosa.
## Código
```{r echo=TRUE,results='hide'}
p<-1-p_175_B
p_10<-dbinom(10, 10, p)
porc_10 = round(p_10*100,2)
p_10_2<-dbinom(0, 10, p_175_B)
porc_10_2 = round(p_10_2*100,2)
```
Vemos en el código dos formas de realizar el cálculo. Con ambas obtenemos que:
$P[X=0]=$ `r p_10` (`r porc_10`%).
## Explicación
Establecemos como nuestro caso de éxito el que una batería no salga defectuosa. Por tanto, la probabilidad de éxito corresponderá con la complementaria de que una batería salga defectuosa. Usando la función dbinom, establecemos la cantidad de ocurrencias de éxito en 10, el número de observaciones en 10, y la probabilidad de éxito como la de que una batería dure más de 175 horas (1 menos p_175_B).
Otra posibilidad sería asumir el problema desde otra perspectiva. Nuestro caso de éxito sería que una batería saliese defectuosa. Por tanto, la probabilidad de éxito correspondería con la de que una batería saliera defectuosa. Usando la función dbinom, establecemos la cantidad de ocurrencias de éxito en 0, el número de observaciones en 10, y la probabilidad de éxito como aquella correspondiente a que una batería dure menos de 175 horas (p_175_B).
$X:$ Número de éxitos en 10 experimentos de Bernoulli
Entonces: $X\sim Bin(10;$ `r p`$)$ = $X\sim Bin(0;$ `r p_175_B`$)$
* Imagina que las baterías se fabrican en serie e independientemente. ¿Cuál es la probabilidad de que la batería producida en quinto lugar sea la primera defectuosa?
## Código
```{r echo=TRUE,results='hide'}
p_def<-dgeom(x=4,prob = p_175_B)
porc_def = p_def*100
porc_def_2=100*(p^4)*(p_175_B)
```
$P[X=4]=$ `r p_def`.
Probabilidad de que la quinta sea defectuosa: `r porc_def`%.
## Explicación:
Aquí queremos saber la probabilidad de que la batería fabricada en quinto lugar sea la primera defectuosa (caso de éxito). Por lo tanto, los 4 primeros sucesos tendrán que ser fracasos.
Si definimos:
Exito - que sea defectuosa
Fracaso - que no sea defectuosa
Entonces: $X\sim Ge(x=4,p=$ `r p_175_B` $)$
$X:$ Número de baterías no defectuosas hasta obtener la primera defectuosa en una serie de pruebas de Bernoulli con probabilidad de éxito $p=$ `r p_175_B`
* Supongamos que en una caja de 20 baterías van 3 defectuosas. ¿Cuál es la probabilidad de que al tomar una muestra sin reposición de 5 baterías al menos una sea defectuosa? (distribución hipergeométrica)
## Código
```{r echo=TRUE,results='hide'}
R<-1-dhyper(x=0,m=3,k=5,n=17)
porc_R<-round(R*100,3)
```
Probabilidad de que al menos una batería sea defectuosa:
$P[X\geq1]=1-P[X<1]=1-P[X=0]$=`r R` (`r porc_R`%).
## Explicación
Apoyándonos en la distribución hipergeométrica, calculamos la probabilidad de extraer más de una batería defectuosa en una muestra de 5, sabiendo que en la caja existen 3 defectuosas frente a 17 que no lo son. Esta probabilidad se calcula como la complementaria de no extraer ninguna batería defectuosa (distribución hipergeométrica con x=0).
Si definimos:
Exito: Que sea defectuosa
Fracaso: Que no sea defectuosa
$X:$ Número de pilas defectuosas obtenidas en un muestreo sin reemplazo de tamaño 5 de un conjunto de 20 pilas de las cuales 3 son defectuosas.
Entonces: $X\sim HG(20,3,5)$
---
# Actividad 4
Seguimos con las baterías de tipo B, pero en vez de hacer experimentos de Bernoulli queremos estudiar el número de baterías defectuosas fabricadas cada día. Supongamos que se fabrican 1000 baterías cada día.Entonces, cada día en promedio se estarán produciendo aproximadamente 1000 × p baterías, y el número de baterías defectuosas por día sigue una distribución de Poisson. Tomemos 12 como ese promedio de baterías defectuosas cada día.
**Planteamiento:**
Promedio de baterías defectuosas al día $(\lambda=12)$. Además, la probabilidad de que una batería fuera defectuosa ya la calculamos en apartados anteriores$(p=$ `r p_175_B` $)$. También sabemos que la distribución de Poisson es una distribución de probabilidad discreta que expresa,a partir de una frecuencia de ocurrencia media, la probabilidad de que ocurra un número de eventos durante un cierto período de tiempo. Se utiliza para medir la ocurrencia de sucesos con probabilidades muy pequeñas (sucesos "raros").
Si definimos:
$X:$ Número de baterías defectuosas por día
Entonces: $X\sim Poiss(12)$
* ¿Cuál es la probabilidad de que un día se produzcan más de 20 baterías defectuosas?
Valiendonos de la distribución de Poisson, tenemos que:
```{r echo=TRUE,results='hide'}
p_20<-ppois(q=20,lambda = 12,lower.tail = F)
porc_20<-round(p_20*100,3)
```
$P[X>20]=$ `r p_20` (`r porc_20`%)
* ¿Cuál es la probabilidad de que en un día no salga ninguna batería defectuosa?
```{r echo=TRUE,results='hide'}
p_0<-dpois(x=0,lambda = 12)
porc_0<-round(p_0*100,3)
```
$P[X>20]=$ `r p_0` (`r porc_0`%)
* La fábrica funciona de lunes a viernes. ¿Qué distribución sigue el número de baterías defectuosas por semana? Justifica qué propiedad se aplica.
Si cada día de la semana es independiente, podemos decir que para cada día (de lunes a viernes) tenemos una $X_i\sim Poiss(\lambda_i)$ . Si además tomamos 12 como promedio de baterías defectuosas al día $(\lambda=12)$, tendremos para cada semana 5 v.a. independientes con distribución de $Poiss(\lambda_i=12)$ . Si aplicamos la propiedad asociativa, por la que sabemos que la suma de n variables aleatorias de Poisson independientes dan lugar a una nueva v.a. con distribución de Poisson igual a la suma de sus parámetros, tendremos:
$X:$ Número de baterías defectuosas por semana -- $X\sim Poiss(\lambda=60)$
---
# Actividad 5
El departamento de I+D de la empresa que fabrica las baterías tipo B está investigando nuevos materiales y métodos para mejorar la vida útil de las baterías. En particular, quieren llegar a diseñar una batería cuya duración siga una distribución de Weibull con parámetros *a = 100* y *b = 185*.
* Realiza una simulación de la producción semanal de baterías (recuerda: 5 días de produccción, a 1000 baterías por día). Guarda los datos en un vector.
Nos valemos de la función "rweibull", que toma como parámetros el número de observaciones (5x1000 baterías), y los parámetros a y b:
```{r echo=TRUE,results='hide'}
simulacion<-rweibull(5000,100,185)
```
* Con este nuevo proceso, ¿se mejora realmente la duración media de las baterías?
En la actividad 2 hallamos la media del tiempo de vida de las baterías de tipo B: $\mu=$ `r mediaB`. Si calculamos la media de los datos simulados:
```{r echo=TRUE,results='hide'}
mediaB_Weibull<-round(mean(simulacion),3)
dif_mean<-round(mediaB_Weibull-mediaB,3)
```
Obtenemos que $\mu_w =$ `r mediaB_Weibull` y $\mu_2=$ `r mediaB`. Comparando los resultados, vemos que siguiendo una distribución de Weibull aumentamos la vida media de las baterías de tipo B en `r dif_mean`.
* Los ingenieros no lo tienen muy claro (parece que la diferencia no es tanta en promedio y los nuevos materiales son costosos). Para demostrarles que merece la pena, calcula la proporción de baterías defectuosas que producirá probablemente el nuevo proceso y compárala con el anterior.
Siguiendo el criterio de la actividad 2, consideramos que una batería es defectuosa cuando dura menos de 175 horas. Además, se calculó la probabilidad $p=$ `r p_175_B` de que una batería del conjunto B durara menos de 175 horas.
Si en nuestra simulación $X\sim We(a=100,b=185)$, calculamos:
```{r echo=TRUE,results='hide'}
pWeibull<-pweibull(174,100,185)
porc_Weibull<-round(pWeibull*100,3)
dif_porc = round((pWeibull-p_175_B)*100,3)
```
$P[X<175]=P[X\leq174]=$ `r pWeibull` (`r porc_Weibull`%).
Si comparamos con los resultados de la actividad 2, vemos que $p_2=$ `r p_175_B` y $p_w=$ `r pWeibull`, lo que implica que con una distribución de Weibull la proporción de baterías defectuosas es del `r porc_Weibull`%, un valor más pequeño que el del caso de la actividad 2 (`r porc_175_B`%).
Queda demostrado que, con el nuevo proceso, el porcentaje de baterías defectuosas disminuye en un `r dif_porc`% .
---