Los datos dados a continuación corresponden a lecturas de concentración de un proceso químico,medidos cada 30 minutos.
DATOS<-c(204, 202, 201, 202, 197, 201, 198, 188, 195, 189,
195, 192, 196, 194, 196, 199, 197, 197, 192,195,
190,196, 199,203, 199, 207, 204,207, 209, 205,
202, 200, 208, 214, 205, 211, 212, 214, 210, 208,
208, 209, 209, 206, 200, 203,202, 195, 196, 203,
196, 197, 197, 203, 205, 194, 199, 201, 198, 202,
207, 204, 201, 197, 189, 189, 196, 193, 193,198,
194, 198, 199, 204, 200, 203, 200, 197, 196, 202,
200, 202, 202, 207, 206, 211, 205, 210, 210, 198,
194, 192,189, 188, 189, 194, 194, 198, 196, 200)
Calcule la función de autocorrelación muestral, la función de autocorrelación parcial muestral a los datos dados. Proveer interpretaciones. (1 punto)
SOLUCIóN:
acf(DATOS) #funcion de autocorrelación muestral
pacf(DATOS) #funcion de autocorrelacion parcial muestral.
En la funcion de autocotrelacion parcial muestral (pacf) la mayoria de las espigas se salen de los margenes de confianza, y eso evidencia no independencia en los datos.
veamos la prueba de Lion Box para independencia,esta mirará la correlación que existe \(crr(xt,xt-lag)\)
Box.test(DATOS,lag = 1)
##
## Box-Pierce test
##
## data: DATOS
## X-squared = 55.677, df = 1, p-value = 8.538e-14
Box.test(DATOS,lag = 2)
##
## Box-Pierce test
##
## data: DATOS
## X-squared = 96.048, df = 2, p-value < 2.2e-16
Box.test(DATOS,lag = 3)
##
## Box-Pierce test
##
## data: DATOS
## X-squared = 123.13, df = 3, p-value < 2.2e-16
Box.test(DATOS,lag = 3)
##
## Box-Pierce test
##
## data: DATOS
## X-squared = 123.13, df = 3, p-value < 2.2e-16
Box.test(DATOS,lag = 4)
##
## Box-Pierce test
##
## data: DATOS
## X-squared = 138.35, df = 4, p-value < 2.2e-16
Box.test(DATOS,lag = 5)
##
## Box-Pierce test
##
## data: DATOS
## X-squared = 144.02, df = 5, p-value < 2.2e-16
Box.test(DATOS,lag = 6)
##
## Box-Pierce test
##
## data: DATOS
## X-squared = 145.99, df = 6, p-value < 2.2e-16
Box.test(DATOS,lag = 7)
##
## Box-Pierce test
##
## data: DATOS
## X-squared = 146.61, df = 7, p-value < 2.2e-16
Box.test(DATOS,lag = 8)
##
## Box-Pierce test
##
## data: DATOS
## X-squared = 146.79, df = 8, p-value < 2.2e-16
Conclución:
De los graficos anteriores y de la prueba de ligion Box se puede concluir que los datos están autocorrelacionados, no hay independencia en ellos.
Construir cartas de control individuales a los datos dados. ¿Las cartas de control son las apropiadas para determinar si el proceso se encuentra bajo control estadístico o no?, ¿y por qué? (1 punto)
Solucion:
Construimos la carta x para datos individuales utilizando la libreria qcc
library(qcc)
## Package 'qcc' version 2.7
## Type 'citation("qcc")' for citing this R package in publications.
qcc(DATOS,type = "xbar.one")
## List of 11
## $ call : language qcc(data = DATOS, type = "xbar.one")
## $ type : chr "xbar.one"
## $ data.name : chr "DATOS"
## $ data : num [1:100, 1] 204 202 201 202 197 201 198 188 195 189 ...
## ..- attr(*, "dimnames")=List of 2
## $ statistics: Named num [1:100] 204 202 201 202 197 201 198 188 195 189 ...
## ..- attr(*, "names")= chr [1:100] "1" "2" "3" "4" ...
## $ sizes : int [1:100] 1 1 1 1 1 1 1 1 1 1 ...
## $ center : num 200
## $ std.dev : num 3.22
## $ nsigmas : num 3
## $ limits : num [1, 1:2] 190 210
## ..- attr(*, "dimnames")=List of 2
## $ violations:List of 2
## - attr(*, "class")= chr "qcc"
Construimos la carta de rangos moviles MR para los datos individuales.
XX<-matrix(0,99,2)
for (j in 1:99) {
XX[j,]<-DATOS[j:(j+1)]
}
XX
## [,1] [,2]
## [1,] 204 202
## [2,] 202 201
## [3,] 201 202
## [4,] 202 197
## [5,] 197 201
## [6,] 201 198
## [7,] 198 188
## [8,] 188 195
## [9,] 195 189
## [10,] 189 195
## [11,] 195 192
## [12,] 192 196
## [13,] 196 194
## [14,] 194 196
## [15,] 196 199
## [16,] 199 197
## [17,] 197 197
## [18,] 197 192
## [19,] 192 195
## [20,] 195 190
## [21,] 190 196
## [22,] 196 199
## [23,] 199 203
## [24,] 203 199
## [25,] 199 207
## [26,] 207 204
## [27,] 204 207
## [28,] 207 209
## [29,] 209 205
## [30,] 205 202
## [31,] 202 200
## [32,] 200 208
## [33,] 208 214
## [34,] 214 205
## [35,] 205 211
## [36,] 211 212
## [37,] 212 214
## [38,] 214 210
## [39,] 210 208
## [40,] 208 208
## [41,] 208 209
## [42,] 209 209
## [43,] 209 206
## [44,] 206 200
## [45,] 200 203
## [46,] 203 202
## [47,] 202 195
## [48,] 195 196
## [49,] 196 203
## [50,] 203 196
## [51,] 196 197
## [52,] 197 197
## [53,] 197 203
## [54,] 203 205
## [55,] 205 194
## [56,] 194 199
## [57,] 199 201
## [58,] 201 198
## [59,] 198 202
## [60,] 202 207
## [61,] 207 204
## [62,] 204 201
## [63,] 201 197
## [64,] 197 189
## [65,] 189 189
## [66,] 189 196
## [67,] 196 193
## [68,] 193 193
## [69,] 193 198
## [70,] 198 194
## [71,] 194 198
## [72,] 198 199
## [73,] 199 204
## [74,] 204 200
## [75,] 200 203
## [76,] 203 200
## [77,] 200 197
## [78,] 197 196
## [79,] 196 202
## [80,] 202 200
## [81,] 200 202
## [82,] 202 202
## [83,] 202 207
## [84,] 207 206
## [85,] 206 211
## [86,] 211 205
## [87,] 205 210
## [88,] 210 210
## [89,] 210 198
## [90,] 198 194
## [91,] 194 192
## [92,] 192 189
## [93,] 189 188
## [94,] 188 189
## [95,] 189 194
## [96,] 194 194
## [97,] 194 198
## [98,] 198 196
## [99,] 196 200
qcc(XX,type = 'R')
## List of 11
## $ call : language qcc(data = XX, type = "R")
## $ type : chr "R"
## $ data.name : chr "XX"
## $ data : num [1:99, 1:2] 204 202 201 202 197 201 198 188 195 189 ...
## ..- attr(*, "dimnames")=List of 2
## $ statistics: Named num [1:99] 2 1 1 5 4 3 10 7 6 6 ...
## ..- attr(*, "names")= chr [1:99] "1" "2" "3" "4" ...
## $ sizes : int [1:99] 2 2 2 2 2 2 2 2 2 2 ...
## $ center : num 3.64
## $ std.dev : num 3.22
## $ nsigmas : num 3
## $ limits : num [1, 1:2] 0 11.9
## ..- attr(*, "dimnames")=List of 2
## $ violations:List of 2
## - attr(*, "class")= chr "qcc"
Conclución
veamos normalidad en los datos:
library(tseries)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
shapiro.test(DATOS)
##
## Shapiro-Wilk normality test
##
## data: DATOS
## W = 0.98286, p-value = 0.2206
jarque.bera.test(DATOS)
##
## Jarque Bera Test
##
## data: DATOS
## X-squared = 1.6715, df = 2, p-value = 0.4336
Para hacer la construir de las cartas para datos individulaes se debe partir del supuesto de normalidad e indepencencia, en nuestro caso los dtaos cumplen normalidad pero como se evidencia en el enciso anterior (a), los datos no son independientes,Así las cartas costruidas no son apropiadas para determinar un control estadístico, por tanto se deben construir preferibemente en base a algún modelo autorregresivo.
Además la contruccíon así hecha, muestra que ambas cartas no están bajo contro estadístico, suponiendo que las causas son asignables y no dependen de la naturaleza de los datos.
Ajuste un modelo autorregresivo de orden uno AR(1) a los datos dados (muestre el modelo). Obtenga los residuales del modelo. ¿Los residuales poseen un buen comportamiento?. Explique y justifique sus respuestas. (2 puntos)
SOLUCIÓN:
Modelo<-arima(DATOS,order = c(1,0,0)) #AR(1)#Proceso autorregresivo de orden 1
Modelo
##
## Call:
## arima(x = DATOS, order = c(1, 0, 0))
##
## Coefficients:
## ar1 intercept
## 0.7420 200.1182
## s.e. 0.0654 1.5523
##
## sigma^2 estimated as 16.95: log likelihood = -283.82, aic = 573.64
library(tseries)
tsdiag(Modelo)
res<-Modelo$residuals #para obtener los residuales del modelo
shapiro.test(res) #para determinar normalidad en los residuos
##
## Shapiro-Wilk normality test
##
## data: res
## W = 0.98443, p-value = 0.2885
acf(res)
pacf(res)
Conclusión:
Notamos que los redidios se comportan bien puesto que hay normalidad e independancia en ellos, por tanto sobre ellos si es viable hacer la contruccion de alguna carta de control estadístico para este caso.
Construir cartas de control individuales a los residuales que se obtienen en el punto c). Realice interpretaciones de estas cartas de control. ¿Las cartas de control son las apropiadas para determinar si el proceso se encuentra bajo control estadístico o no?, ¿y por qué?. (1 punto)
SOLUCIóN:
Ahora debemos sacar la carta pero a los residuales:
qcc(res,type = 'xbar.one')
## List of 11
## $ call : language qcc(data = res, type = "xbar.one")
## $ type : chr "xbar.one"
## $ data.name : chr "res"
## $ data : num [1:100, 1] 2.602 -0.998 -0.514 1.228 -4.514 ...
## ..- attr(*, "dimnames")=List of 2
## $ statistics: Named num [1:100] 2.602 -0.998 -0.514 1.228 -4.514 ...
## ..- attr(*, "names")= chr [1:100] "1" "2" "3" "4" ...
## $ sizes : int [1:100] 1 1 1 1 1 1 1 1 1 1 ...
## $ center : num -0.0416
## $ std.dev : num 4.55
## $ nsigmas : num 3
## $ limits : num [1, 1:2] -13.7 13.6
## ..- attr(*, "dimnames")=List of 2
## $ violations:List of 2
## - attr(*, "class")= chr "qcc"
Se puede observar que la carta xbar.one para los datos se encuentra bajo control estadístico.
#ahora hacemos la carta para el RM
XX<-matrix(0,99,2)
for (j in 1:99) {
XX[j,]<-res[j:(j+1)]
}
XX
## [,1] [,2]
## [1,] 2.60236656 -0.99847537
## [2,] -0.99847537 -0.51449066
## [3,] -0.51449066 1.22750169
## [4,] 1.22750169 -4.51449066
## [5,] -4.51449066 3.19547111
## [6,] 3.19547111 -2.77249831
## [7,] -2.77249831 -10.54652124
## [8,] -10.54652124 3.87340230
## [9,] 3.87340230 -7.32054418
## [10,] -7.32054418 3.13140995
## [11,] 3.13140995 -4.32054418
## [12,] -4.32054418 1.90543288
## [13,] 1.90543288 -3.06253653
## [14,] -3.06253653 0.42144817
## [15,] 0.42144817 1.93746347
## [16,] 1.93746347 -2.28851360
## [17,] -2.28851360 -0.80452889
## [18,] -0.80452889 -5.80452889
## [19,] -5.80452889 0.90543288
## [20,] 0.90543288 -6.32054418
## [21,] -6.32054418 3.38941759
## [22,] 3.38941759 1.93746347
## [23,] 1.93746347 3.71148640
## [24,] 3.71148640 -3.25648301
## [25,] -3.25648301 7.71148640
## [26,] 7.71148640 -1.22445243
## [27,] -1.22445243 4.00152463
## [28,] 4.00152463 3.77554757
## [29,] 3.77554757 -1.70843714
## [30,] -1.70843714 -1.74046772
## [31,] -1.74046772 -1.51449066
## [32,] -1.51449066 7.96949405
## [33,] 7.96949405 8.03355522
## [34,] 8.03355522 -5.41839891
## [35,] -5.41839891 7.25953228
## [36,] 7.25953228 3.80757815
## [37,] 3.80757815 5.06558580
## [38,] 5.06558580 -0.41839891
## [39,] -0.41839891 0.54957051
## [40,] 0.54957051 2.03355522
## [41,] 2.03355522 3.03355522
## [42,] 3.03355522 2.29156286
## [43,] 2.29156286 -0.70843714
## [44,] -0.70843714 -4.48246008
## [45,] -4.48246008 2.96949405
## [46,] 2.96949405 -0.25648301
## [47,] -0.25648301 -6.51449066
## [48,] -6.51449066 -0.32054418
## [49,] -0.32054418 5.93746347
## [50,] 5.93746347 -6.25648301
## [51,] -6.25648301 -0.06253653
## [52,] -0.06253653 -0.80452889
## [53,] -0.80452889 5.19547111
## [54,] 5.19547111 2.74351699
## [55,] 2.74351699 -9.74046772
## [56,] -9.74046772 3.42144817
## [57,] 3.42144817 1.71148640
## [58,] 1.71148640 -2.77249831
## [59,] -2.77249831 3.45347876
## [60,] 3.45347876 5.48550934
## [61,] 5.48550934 -1.22445243
## [62,] -1.22445243 -1.99847537
## [63,] -1.99847537 -3.77249831
## [64,] -3.77249831 -8.80452889
## [65,] -8.80452889 -2.86859005
## [66,] -2.86859005 4.13140995
## [67,] 4.13140995 -4.06253653
## [68,] -4.06253653 -1.83655947
## [69,] -1.83655947 3.16344053
## [70,] 3.16344053 -4.54652124
## [71,] -4.54652124 2.42144817
## [72,] 2.42144817 0.45347876
## [73,] 0.45347876 4.71148640
## [74,] 4.71148640 -2.99847537
## [75,] -2.99847537 2.96949405
## [76,] 2.96949405 -2.25648301
## [77,] -2.25648301 -3.03050595
## [78,] -3.03050595 -1.80452889
## [79,] -1.80452889 4.93746347
## [80,] 4.93746347 -1.51449066
## [81,] -1.51449066 1.96949405
## [82,] 1.96949405 0.48550934
## [83,] 0.48550934 5.48550934
## [84,] 5.48550934 0.77554757
## [85,] 0.77554757 6.51753992
## [86,] 6.51753992 -3.19242185
## [87,] -3.19242185 6.25953228
## [88,] 6.25953228 2.54957051
## [89,] 2.54957051 -9.45042949
## [90,] -9.45042949 -4.54652124
## [91,] -4.54652124 -3.57855183
## [92,] -3.57855183 -5.09456712
## [93,] -5.09456712 -3.86859005
## [94,] -3.86859005 -2.12659770
## [95,] -2.12659770 2.13140995
## [96,] 2.13140995 -1.57855183
## [97,] -1.57855183 2.42144817
## [98,] 2.42144817 -2.54652124
## [99,] -2.54652124 2.93746347
qcc(XX,type = 'R')
## List of 11
## $ call : language qcc(data = XX, type = "R")
## $ type : chr "R"
## $ data.name : chr "XX"
## $ data : num [1:99, 1:2] 2.602 -0.998 -0.514 1.228 -4.514 ...
## ..- attr(*, "dimnames")=List of 2
## $ statistics: Named num [1:99] 3.601 0.484 1.742 5.742 7.71 ...
## ..- attr(*, "names")= chr [1:99] "1" "2" "3" "4" ...
## $ sizes : int [1:99] 2 2 2 2 2 2 2 2 2 2 ...
## $ center : num 5.13
## $ std.dev : num 4.55
## $ nsigmas : num 3
## $ limits : num [1, 1:2] 0 16.8
## ..- attr(*, "dimnames")=List of 2
## $ violations:List of 2
## - attr(*, "class")= chr "qcc"
Se puede observar que la carta MR para los datos se encuentra bajo control estadístico. execto aunte la posible violación de alguna regla de shiwar.
Conclusion:
Se observa que las cartas exhiben control estadístico. Se puede por tanto concluir que el proceso esta bajo control respecto a su media y su variabilidad.