Trabalho do Mestrado - Thiago Marques - Engenharia de produção - Tópicos Especiais em Mineração de dados - Prof. Eduardo Ogasawara
Implementação do método DBSCAN para detecção de anomalias e estratégias de melhoria
Carregando os banco de dados
load("har_examples.RData")
Selecionando o banco de dados 17 da base de dados Harbinger e transformando a variável em fator
= har_examples$example17
dados $event = factor(dados$event, labels=c("FALSE", "TRUE"))
dadoshead(dados)
## serie event
## 1 1.0000000 FALSE
## 2 0.9689124 FALSE
## 3 0.8775826 FALSE
## 4 0.7316889 FALSE
## 5 0.5403023 FALSE
## 6 0.3153224 FALSE
Quantas anomalias tem anotadas na serie?
sum(dados$event=="TRUE")
## [1] 8
Plotando a série temporal original
plot_ts(x = 1:length(dados$serie), y = dados$serie )
Plotando as anomalias da série temporal
$indice = 1:length(dados$serie)
dados= ts(dados$serie,dados$indice)
my_ts plot.ts(my_ts)
points(dados$indice[dados$event=="TRUE"],dados$serie[dados$event==TRUE], pch = 20, col = "red")
Pré-processamento da série - Criando janelas deslizantes de tamanho 10
<- ts_data(dados$serie, 10)
data10 ts_head(data10)
## t9 t8 t7 t6 t5 t4 t3
## [1,] 1.0000000 0.9689124 0.8775826 0.7316889 0.5403023 0.3153224 0.0707372
## [2,] 0.9689124 0.8775826 0.7316889 0.5403023 0.3153224 0.0707372 -0.1782461
## [3,] 0.8775826 0.7316889 0.5403023 0.3153224 0.0707372 -0.1782461 -0.4161468
## [4,] 0.7316889 0.5403023 0.3153224 0.0707372 -0.1782461 -0.4161468 -0.6281736
## [5,] 0.5403023 0.3153224 0.0707372 -0.1782461 -0.4161468 -0.6281736 -0.8011436
## [6,] 0.3153224 0.0707372 -0.1782461 -0.4161468 -0.6281736 -0.8011436 -1.4555059
## t2 t1 t0
## [1,] -0.1782461 -0.4161468 -0.6281736
## [2,] -0.4161468 -0.6281736 -0.8011436
## [3,] -0.6281736 -0.8011436 -1.4555059
## [4,] -0.8011436 -1.4555059 -0.9899925
## [5,] -1.4555059 -0.9899925 -0.9941297
## [6,] -0.9899925 -0.9941297 -0.9364567
#preproc <- ts_norm_an()
#preproc <- fit(preproc, data10)
#tst <- transform(preproc, data10)
#summary(tst[,10])
#plot_ts(y=tst[1,]) + theme(text = element_text(size=16))
Explicando e Aplicando o método de detecção de anomalia não supervisionado - Dbscan
Características do algoritmo:
- Eps: Raio máximo em que dois pontos podem estar para serem considerados do mesmo cluster.
- MinPts: Número mínimo de pontos em uma região necessários para garantir uma densidade desejada.
Existem três tipos de pontos:
- Núcleos: Um ponto é considerado núcleo quando possui MinPts pontos ou mais dentro de um raio de Eps de distância.
- Bordas: Um ponto é considerado borda quando não possui MinPts dentro de um raio Eps de distância, porém está inserido dentro de um raio Eps de um outro ponto no qual é núcleo.
- Ruídos(ou Outliers): Um ponto é considerado um ruído quando este não está presente no raio Eps de um núcleo e nem possui MinPts dentro do seu raio Eps.
- Passos para o algoritmo:
- Escolher um ponto arbitrário;
- Classificá-lo como Núcleo, Borda ou Ruído;
- Se o ponto do momento é um Núcleo, todos os pontos à sua volta com um raio de distância Eps formam um cluster. Reclassificações podem ocorrer;
- Depois de classificar todos os pontos da região do núcleo, volta-se à etapa 1;
- O algoritmo termina quando todos os pontos tiverem sido classificados corretamente;
- Qualquer ponto x no conjunto de dados, com uma contagem de vizinhos maior ou igual a MinPts, é marcado como ponto central.
- Dizemos que x é um ponto de Bordas, se o número de seus vizinhos for menor que MinPts, mas ele pertence à vizinhança de algum ponto central z.
- Y é um ponto de Bordas.
- Se um ponto não é um ponto central nem um ponto de fronteira, então ele é chamado de ponto de ruído ou outlier.
Escolha do eps ótimo por meio do k-nearest neighbor distances
<- matrix(data10,nrow = 104,ncol = 10)
datamatrix
::kNNdistplot(datamatrix, k = 3)
dbscanabline(h = 0.53, lty = 2)
TESTE BINSEG
#library(changepoint)
#library(bcp)
#library(strucchange)
#
##ref:https://rpubs.com/narasimhagvl/change_point
#
#set.seed(1)
#dados = har_examples$example17
#dados$event = factor(dados$event, labels=c("FALSE", "TRUE"))
#
#data10 <- ts_data(dados$serie, 10)
##dados$indice = 1:length(dados$serie)
##my_ts = ts(dados$serie,dados$indice)
#
#
##AMOC
##cpt1 = cpt.var(datamatrix, method = "AMOC")
##PELT
##cpt2 <- cpt.mean(datamatrix, method = "PELT", penalty = "CROPS", pen.value = c(1,25))
##pen.value=0.8,
##summary(pt2)
#
##plot(cpt2, diagnostic = TRUE)
#
##bcp
#
##bcp_x <- bcp(datamatrix, return.mcmc = TRUE)
##plot(bcp_x)
#
##bcp_sum <- as.data.frame(summary(bcp_x))
##bcp_sum
#
##bcp_sum$id <- 1:dim(datamatrix)[1]
##(sel <- bcp_sum[which(bcp_x$posterior.prob > 0.7), ])
#
## ref: https://stats.stackexchange.com/questions/611583/change-point-detection-of-time-series
#
#distancias = kNNdist(data10, k = 3, all = TRUE)
##tsdata <- ts_data(dados$serie, 10)
##tsdata = my_ts
##moc_cp <- cpt.var(cumsum(distancias), method = "AMOC")
##amoc_cp <- cpt.mean(cumsum(distancias), method = "AMOC")
##amoc_cp <- cpt.meanvar(cumsum(distancias), method = "AMOC")
#
# # Use the BinSeg method to detect change points in the time series using var , mean and meanvar
#Binseg_cp <- cpt.meanvar(cumsum(distancias), method = "BinSeg")
#
#
# # Print the location and value of each change point using the AMOC method
#for (i in 1:length(Binseg_cp@cpts)) {
#cat("Binseg change point for diff", i, "at location", Binseg_cp@cpts[i], "with value", #distancias[Binseg_cp@cpts[i] ], "\n")
#
#dbscan::kNNdistplot(datamatrix, k = 3)
#abline(h = distancias[Binseg_cp@cpts[i] ], lty = 2)
#}
library(dbscan)
#referências:
#https://gabriellm.medium.com/entendendo-dbscan-770f680d9160
#http://www.sthda.com/english/wiki/wiki.php?id_contents=7940
<- dbscan::dbscan(datamatrix, eps=0.53, minPts=3) # clustering
dbscanResult #0.53
dbscanResult
## DBSCAN clustering for 104 objects.
## Parameters: eps = 0.53, minPts = 3
## Using euclidean distances and borderpoints = TRUE
## The clustering contains 20 cluster(s) and 8 noise points.
##
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
## 8 20 7 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 3 3
##
## Available fields: cluster, eps, minPts, dist, borderPoints
hullplot(datamatrix, dbscanResult, main="DBSCAN")
library("fpc")
<- fpc::dbscan(datamatrix, eps= 0.53, MinPts =3)
db print(db)
## dbscan Pts=104 MinPts=3 eps=0.53
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
## border 8 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## seed 0 17 5 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 1 1
## total 8 20 7 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 3 3
plot(db, datamatrix, main = "DBSCAN", frame = FALSE)
library("factoextra")
fviz_cluster(db, datamatrix, stand = FALSE, frame = FALSE, geom = "point")
Clusters com Anomalia indicados pelo Dbscan
= data.frame(datamatrix)
datamatrix_df
$clusters = dbscanResult$cluster
datamatrix_df
= datamatrix_df %>% filter(clusters==0)
datamatrix_df_anomalias datamatrix_df_anomalias
## X1 X2 X3 X4 X5 X6
## 1 0.8775826 0.7316889 0.54030231 0.31532236 0.070737202 -0.17824606
## 2 -0.9364567 -0.8205594 -0.65364362 -0.44608749 -0.210795799 0.03760215
## 3 -0.8205594 -0.6536436 -0.44608749 -0.21079580 0.037602153 0.28366219
## 4 -0.8390715 -0.6783939 -0.47553693 -0.24311342 0.004425698 0.25168965
## 5 -0.7023971 -0.5044627 -0.27516334 -0.02875563 0.219439963 0.45399184
## 6 -1.4978881 -0.8733046 -0.72562681 -0.53283302 -0.306910254 -0.06190529
## 7 -0.7256268 -0.5328330 -0.30691025 -0.06190529 0.186948637 0.42417901
## 8 -0.5328330 -0.3069103 -0.06190529 0.18694864 0.424179007 0.63503598
## X7 X8 X9 X10 clusters
## 1 -0.4161468 -0.6281736 -0.8011436 -1.4555059 0
## 2 0.2836622 0.5120855 0.7086698 1.3923959 0
## 3 0.5120855 0.7086698 1.3923959 0.9601703 0
## 4 0.4833048 0.6848703 0.8438540 1.4815744 0
## 5 0.6603167 0.8255863 0.9395249 1.5262519 0
## 6 0.1869486 0.4241790 0.6350360 0.8064095 0
## 7 0.6350360 0.8064095 0.9276444 0.9912028 0
## 8 0.8064095 0.9276444 0.9912028 1.5243366 0
= data.frame(t(datamatrix_df_anomalias))
datamatrix_df_anomalias_t = datamatrix_df_anomalias_t[-11,]
datamatrix_df_anomalias_t datamatrix_df_anomalias_t
## X1 X2 X3 X4 X5 X6
## X1 0.8775826 -0.93645669 -0.82055936 -0.839071529 -0.70239706 -1.49788814
## X2 0.7316889 -0.82055936 -0.65364362 -0.678393850 -0.50446272 -0.87330464
## X3 0.5403023 -0.65364362 -0.44608749 -0.475536928 -0.27516334 -0.72562681
## X4 0.3153224 -0.44608749 -0.21079580 -0.243113423 -0.02875563 -0.53283302
## X5 0.0707372 -0.21079580 0.03760215 0.004425698 0.21943996 -0.30691025
## X6 -0.1782461 0.03760215 0.28366219 0.251689650 0.45399184 -0.06190529
## X7 -0.4161468 0.28366219 0.51208548 0.483304759 0.66031671 0.18694864
## X8 -0.6281736 0.51208548 0.70866977 0.684870318 0.82558628 0.42417901
## X9 -0.8011436 0.70866977 1.39239594 0.843853959 0.93952489 0.63503598
## X10 -1.4555059 1.39239594 0.96017029 1.481574372 1.52625193 0.80640949
## X7 X8
## X1 -0.72562681 -0.53283302
## X2 -0.53283302 -0.30691025
## X3 -0.30691025 -0.06190529
## X4 -0.06190529 0.18694864
## X5 0.18694864 0.42417901
## X6 0.42417901 0.63503598
## X7 0.63503598 0.80640949
## X8 0.80640949 0.92764437
## X9 0.92764437 0.99120281
## X10 0.99120281 1.52433659
O boxplot detectaria as anomalias?
::boxplot(datamatrix_df_anomalias_t) graphics
Estrategias para detectar a anomalia dentre as linhas anômalas apontadas pelo método
#máximo do desvio médio absoluto
= function(dados) {
max_mean = which.max(abs(dados - mean(dados)))
a = dados[a]
b #c = list(a,b)
return( b )
}
= function(dados) {
max_median = which.max(abs(dados - median(dados)))
a = dados[a]
b #c = list(a,b)
return( b )
}
= function(dados) {
max_log = which.max(log(abs(dados) - median(dados)))
a = dados[a]
b #c = list(a,b)
return( b )
}
= apply(datamatrix_df_anomalias_t,2,max_mean)
list_v_max_mean = unique(list_v_max_mean)
list_v_max_mean list_v_max_mean
## [1] -1.4555059 1.3923959 1.4815744 1.5262519 -1.4978881 -0.7256268 1.5243366
= apply(datamatrix_df_anomalias_t,2,max_median)
list_v_max_median = unique(list_v_max_median)
list_v_max_median list_v_max_median
## [1] -1.4555059 1.3923959 1.4815744 1.5262519 -1.4978881 -0.7256268 -0.5328330
= apply(datamatrix_df_anomalias_t,2,max_log)
list_v_max_log = unique(list_v_max_log)
list_v_max_log list_v_max_log
## [1] -1.4555059 1.3923959 1.4815744 1.5262519 -1.4978881 0.9912028 1.5243366
= dados$serie[dados$event=="TRUE"]
vetor_evento
= function (dados1,dados2){
compara_anomalias = unique(round(dados1,6)) %in% unique(round(dados2,6))
a = table(a)
b = dados1[a == F]
c = dados1[a == T]
d = list(a,b,c,d)
e return(e)
}= compara_anomalias(list_v_max_mean,vetor_evento)
c1 c1
## [[1]]
## [1] TRUE TRUE TRUE TRUE TRUE FALSE TRUE
##
## [[2]]
## a
## FALSE TRUE
## 1 6
##
## [[3]]
## [1] -0.7256268
##
## [[4]]
## [1] -1.455506 1.392396 1.481574 1.526252 -1.497888 1.524337
= compara_anomalias(list_v_max_median,vetor_evento)
c2 c2
## [[1]]
## [1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE
##
## [[2]]
## a
## FALSE TRUE
## 2 5
##
## [[3]]
## [1] -0.7256268 -0.5328330
##
## [[4]]
## [1] -1.455506 1.392396 1.481574 1.526252 -1.497888
= compara_anomalias(list_v_max_log,vetor_evento)
c3 c3
## [[1]]
## [1] TRUE TRUE TRUE TRUE TRUE FALSE TRUE
##
## [[2]]
## a
## FALSE TRUE
## 1 6
##
## [[3]]
## [1] 0.9912028
##
## [[4]]
## [1] -1.455506 1.392396 1.481574 1.526252 -1.497888 1.524337
Plotando as anomalias detectadas com max_mean
$event_max_mean = dados$serie %in% c1[[4]]
dadosplot.ts(my_ts)
points(dados$indice[dados$event_max_mean == "TRUE"],dados$serie[dados$event_max_mean == "TRUE"], pch = 20, col = "red")
Plotando as anomalias detectadas com max_median
$event_max_median = dados$serie %in% c2[[4]]
dadosplot.ts(my_ts)
points(dados$indice[dados$event_max_median == "TRUE"],dados$serie[dados$event_max_median == "TRUE"], pch = 20, col = "red")
Plotando as anomalias detectadas com max_log
$event_max_log = dados$serie %in% c3[[4]]
dadosplot.ts(my_ts)
points(dados$indice[dados$event_max_log == "TRUE"],dados$serie[dados$event_max_log == "TRUE"], pch = 20, col = "red")
Tabela Comparativa
= dados %>% filter(event == "TRUE")
dados_comparativos_DBSCAN %>%
dados_comparativos_DBSCAN kbl() %>%
kable_styling()
serie | event | indice | event_max_mean | event_max_median | event_max_log |
---|---|---|---|---|---|
-1.455506 | TRUE | 12 | TRUE | TRUE | TRUE |
1.392396 | TRUE | 24 | TRUE | TRUE | TRUE |
-1.515969 | TRUE | 38 | FALSE | FALSE | FALSE |
1.481574 | TRUE | 50 | TRUE | TRUE | TRUE |
-1.530320 | TRUE | 64 | FALSE | FALSE | FALSE |
1.526252 | TRUE | 76 | TRUE | TRUE | TRUE |
-1.497888 | TRUE | 90 | TRUE | TRUE | TRUE |
1.524337 | TRUE | 102 | TRUE | FALSE | TRUE |
Normalizando e padronizando
#padronização
#máximo do desvio médio absoluto modificada
= function(dados) {
max_mean_mod = scale(dados)
dados_scale = which.max(abs(dados_scale - mean(dados_scale)))
a = dados[a]
b #c = list(a,b)
return( b )
}
#máximo do desvio mediano absoluto modificada
= function(dados) {
max_median_mod = scale(dados)
dados_scale = which.max(abs(dados - median(dados)))
a = dados[a]
b #c = list(a,b)
return( b )
}
= apply(datamatrix_df_anomalias_t,2,max_mean_mod)
list_v_max_mod list_v_max_mod
## X1 X2 X3 X4 X5 X6 X7
## -1.4555059 1.3923959 1.3923959 1.4815744 1.5262519 -1.4978881 -0.7256268
## X8
## 1.5243366
compara_anomalias(list_v_max_mod,vetor_evento)
## [[1]]
## [1] TRUE TRUE TRUE TRUE TRUE FALSE TRUE
##
## [[2]]
## a
## FALSE TRUE
## 1 6
##
## [[3]]
## X6
## -1.497888
##
## [[4]]
## X1 X2 X3 X4 X5 X7 X8
## -1.4555059 1.3923959 1.3923959 1.4815744 1.5262519 -0.7256268 1.5243366
= apply(datamatrix_df_anomalias_t,2,max_median_mod)
list_v_max_median_mod list_v_max_median_mod
## X1 X2 X3 X4 X5 X6 X7
## -1.4555059 1.3923959 1.3923959 1.4815744 1.5262519 -1.4978881 -0.7256268
## X8
## -0.5328330
compara_anomalias(list_v_max_median_mod,vetor_evento)
## [[1]]
## [1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE
##
## [[2]]
## a
## FALSE TRUE
## 2 5
##
## [[3]]
## X6 X7
## -1.4978881 -0.7256268
##
## [[4]]
## X1 X2 X3 X4 X5 X8
## -1.455506 1.392396 1.392396 1.481574 1.526252 -0.532833
#Normalização Min-max
#máximo do desvio médio absoluto modificada
= function(dados) {
max_mean_mod2 #preproc2 = preProcess(dados, method = c("range"))
#dados_normalizado = predict(preproc2, dados)
= which.max(abs(dados - mean(dados)))
a ##b = dados[a]
#c = list(a,b)
return(a)
}
#máximo do desvio mediano absoluto modificada
= function(dados) {
max_median_mod2 #preproc2 = preProcess(dados, method=c("range"))
#dados_normalizado = predict(preproc2, dados)
= which.max(abs(dados - median(dados)))
a #b = dados[a]
#c = list(a,b)
return( a )
}
= preProcess(datamatrix_df_anomalias_t, method = c("range"))
preproc2 = predict(preproc2, datamatrix_df_anomalias_t)
dados_normalizado
= apply(dados_normalizado,2,max_mean_mod2)
list_v_max_mod2_posicoes list_v_max_mod2_posicoes
## X1 X2 X3 X4 X5 X6 X7 X8
## 10 10 9 10 10 1 1 10
= c()
list_v_max_mod2
for (i in 1:length(list_v_max_mod2_posicoes) ) {
= datamatrix_df_anomalias_t[i][[1]][ list_v_max_mod2_posicoes[[i]] ]
list_v_max_mod2[i]
}
list_v_max_mod2
## [1] -1.4555059 1.3923959 1.3923959 1.4815744 1.5262519 -1.4978881 -0.7256268
## [8] 1.5243366
compara_anomalias(list_v_max_mod2,vetor_evento)
## [[1]]
## [1] TRUE TRUE TRUE TRUE TRUE FALSE TRUE
##
## [[2]]
## a
## FALSE TRUE
## 1 6
##
## [[3]]
## [1] -1.497888
##
## [[4]]
## [1] -1.4555059 1.3923959 1.3923959 1.4815744 1.5262519 -0.7256268 1.5243366
= apply(dados_normalizado,2,max_median_mod2)
list_v_max_median_mod2 list_v_max_median_mod2
## X1 X2 X3 X4 X5 X6 X7 X8
## 10 10 9 10 10 1 1 1
for (i in 1:length(list_v_max_median_mod2) ) {
= datamatrix_df_anomalias_t[i][[1]][ list_v_max_median_mod2[[i]] ]
list_v_max_median_mod2[i]
}
compara_anomalias(list_v_max_median_mod2,vetor_evento)
## [[1]]
## [1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE
##
## [[2]]
## a
## FALSE TRUE
## 2 5
##
## [[3]]
## X6 X7
## -1.4978881 -0.7256268
##
## [[4]]
## X1 X2 X3 X4 X5 X8
## -1.455506 1.392396 1.392396 1.481574 1.526252 -0.532833
Estudando as distribuições empíricas
#x1
descdist(datamatrix_df_anomalias_t$X1,discrete=F)
## summary statistics
## ------
## min: -1.455506 max: 0.8775826
## median: -0.05375443
## mean: -0.09435827
## estimated sd: 0.7433202
## estimated skewness: -0.4227883
## estimated kurtosis: 2.46643
plotdist(datamatrix_df_anomalias_t$X1, histo = TRUE, demp = TRUE)
= fitdistrplus::fitdist(datamatrix_df_anomalias_t$X1,"unif")
fit_x1
ks.test(datamatrix_df_anomalias_t$X1, "punif", fit_x1$estimate[[1]],fit_x1$estimate[[2]] )
##
## Exact one-sample Kolmogorov-Smirnov test
##
## data: datamatrix_df_anomalias_t$X1
## D = 0.18047, p-value = 0.8451
## alternative hypothesis: two-sided
#x2
descdist(datamatrix_df_anomalias_t$X2,discrete=F)
## summary statistics
## ------
## min: -0.9364567 max: 1.392396
## median: -0.08659682
## mean: -0.01331274
## estimated sd: 0.7456738
## estimated skewness: 0.5565226
## estimated kurtosis: 2.625219
plotdist(datamatrix_df_anomalias_t$X2, histo = TRUE, demp = TRUE)
= fitdistrplus::fitdist(datamatrix_df_anomalias_t$X2,"unif")
fit_x1
ks.test(datamatrix_df_anomalias_t$X2, "punif", fit_x1$estimate[[1]],fit_x1$estimate[[2]] )
##
## Exact one-sample Kolmogorov-Smirnov test
##
## data: datamatrix_df_anomalias_t$X2
## D = 0.19359, p-value = 0.7815
## alternative hypothesis: two-sided
Estudando a distribuição dos 2 não detectados por ambos os métodos
$indice = 1:dim(datamatrix_df)[1]
datamatrix_df= datamatrix_df %>% filter ( indice %in% c(29:38) )
datamatrix_df_nao_detectados = data.frame(t(datamatrix_df_nao_detectados[-c(11,12)]))
datamatrix_df_nao_detectados_t datamatrix_df_nao_detectados_t
## X1 X2 X3 X4 X5 X6
## X1 0.7539023 0.5679242 0.3466353 0.1037944 -0.1455000 -0.3857479
## X2 0.5679242 0.3466353 0.1037944 -0.1455000 -0.3857479 -0.6020119
## X3 0.3466353 0.1037944 -0.1455000 -0.3857479 -0.6020119 -0.7808457
## X4 0.1037944 -0.1455000 -0.3857479 -0.6020119 -0.7808457 -0.9111303
## X5 -0.1455000 -0.3857479 -0.6020119 -0.7808457 -0.9111303 -1.5159687
## X6 -0.3857479 -0.6020119 -0.7808457 -0.9111303 -1.5159687 -0.9971722
## X7 -0.6020119 -0.7808457 -0.9111303 -1.5159687 -0.9971722 -0.9475798
## X8 -0.7808457 -0.9111303 -1.5159687 -0.9971722 -0.9475798 -0.8390715
## X9 -0.9111303 -1.5159687 -0.9971722 -0.9475798 -0.8390715 -0.6783939
## X10 -1.5159687 -0.9971722 -0.9475798 -0.8390715 -0.6783939 -0.4755369
## X7 X8 X9 X10
## X1 -0.6020119 -0.780845684 -0.911130262 -1.515968699
## X2 -0.7808457 -0.911130262 -1.515968699 -0.997172156
## X3 -0.9111303 -1.515968699 -0.997172156 -0.947579804
## X4 -1.5159687 -0.997172156 -0.947579804 -0.839071529
## X5 -0.9971722 -0.947579804 -0.839071529 -0.678393850
## X6 -0.9475798 -0.839071529 -0.678393850 -0.475536928
## X7 -0.8390715 -0.678393850 -0.475536928 -0.243113423
## X8 -0.6783939 -0.475536928 -0.243113423 0.004425698
## X9 -0.4755369 -0.243113423 0.004425698 0.251689650
## X10 -0.2431134 0.004425698 0.251689650 0.483304759
X3 segue uma normal e não uma uniforme, como desconfiávamos
#x3
descdist(datamatrix_df_nao_detectados_t$X3,discrete=F)
## summary statistics
## ------
## min: -1.515969 max: 0.3466353
## median: -0.6914288
## mean: -0.5835527
## estimated sd: 0.5664981
## estimated skewness: 0.1901468
## estimated kurtosis: 2.530191
plotdist(datamatrix_df_nao_detectados_t$X3, histo = TRUE, demp = TRUE)
= fitdistrplus::fitdist(datamatrix_df_nao_detectados_t$X3,"norm")
fit_x3
=list()
a1]] = ks.test(datamatrix_df_nao_detectados_t$X3, "punif", fit_x3$estimate[[1]],fit_x3$estimate[[2]] )
a[[2]] = ks.test(datamatrix_df_nao_detectados_t$X3, "pnorm", fit_x3$estimate[[1]],fit_x3$estimate[[2]] )
a[[ a
## [[1]]
##
## Exact one-sample Kolmogorov-Smirnov test
##
## data: datamatrix_df_nao_detectados_t$X3
## D = 0.6, p-value = 0.0005682
## alternative hypothesis: two-sided
##
##
## [[2]]
##
## Exact one-sample Kolmogorov-Smirnov test
##
## data: datamatrix_df_nao_detectados_t$X3
## D = 0.14323, p-value = 0.9686
## alternative hypothesis: two-sided
X4 segue uma normal e não uma uniforme, como desconfiávamos
#x4
descdist(datamatrix_df_nao_detectados_t$X4,discrete=F)
## summary statistics
## ------
## min: -1.515969 max: 0.1037944
## median: -0.8099586
## mean: -0.7021234
## estimated sd: 0.4652038
## estimated skewness: 0.188818
## estimated kurtosis: 3.228361
plotdist(datamatrix_df_nao_detectados_t$X4, histo = TRUE, demp = TRUE)
= fitdistrplus::fitdist(datamatrix_df_nao_detectados_t$X4,"norm")
fit_x4
=list()
a1]] = ks.test(datamatrix_df_nao_detectados_t$X4, "punif", fit_x4$estimate[[1]],fit_x4$estimate[[2]] )
a[[2]] = ks.test(datamatrix_df_nao_detectados_t$X4, "pnorm", fit_x4$estimate[[1]],fit_x4$estimate[[2]] )
a[[ a
## [[1]]
##
## Exact one-sample Kolmogorov-Smirnov test
##
## data: datamatrix_df_nao_detectados_t$X4
## D = 0.61245, p-value = 0.0003909
## alternative hypothesis: two-sided
##
##
## [[2]]
##
## Exact one-sample Kolmogorov-Smirnov test
##
## data: datamatrix_df_nao_detectados_t$X4
## D = 0.17079, p-value = 0.8868
## alternative hypothesis: two-sided
X5 segue uma logística e não uma uniforme, nem normal, como desconfiávamos
#x5
descdist(datamatrix_df_nao_detectados_t$X5,discrete=F)
## summary statistics
## ------
## min: -1.515969 max: -0.1455
## median: -0.8099586
## mean: -0.7803422
## estimated sd: 0.3708263
## estimated skewness: -0.2488493
## estimated kurtosis: 4.246206
plotdist(datamatrix_df_nao_detectados_t$X5, histo = TRUE, demp = TRUE)
= fitdistrplus::fitdist(datamatrix_df_nao_detectados_t$X5,"logis")
fit_x5
=list()
a1]] = ks.test(datamatrix_df_nao_detectados_t$X5, "punif", fit_x5$estimate[[1]],fit_x5$estimate[[2]] )
a[[2]] = ks.test(datamatrix_df_nao_detectados_t$X5, "pnorm", fit_x5$estimate[[1]],fit_x5$estimate[[2]] )
a[[3]] = ks.test(datamatrix_df_nao_detectados_t$X5, "plogis", fit_x5$estimate[[1]],fit_x5$estimate[[2]] )
a[[ a
## [[1]]
##
## Exact one-sample Kolmogorov-Smirnov test
##
## data: datamatrix_df_nao_detectados_t$X5
## D = 0.61853, p-value = 0.0003243
## alternative hypothesis: two-sided
##
##
## [[2]]
##
## Exact one-sample Kolmogorov-Smirnov test
##
## data: datamatrix_df_nao_detectados_t$X5
## D = 0.17898, p-value = 0.8519
## alternative hypothesis: two-sided
##
##
## [[3]]
##
## Exact one-sample Kolmogorov-Smirnov test
##
## data: datamatrix_df_nao_detectados_t$X5
## D = 0.14348, p-value = 0.9681
## alternative hypothesis: two-sided
Comparando os ajustes pelo BIC E AIC
.1 = fitdistrplus::fitdist(datamatrix_df_nao_detectados_t$X5,"unif")
fit_x5.2 = fitdistrplus::fitdist(datamatrix_df_nao_detectados_t$X5,"logis")
fit_x5.3 = fitdistrplus::fitdist(datamatrix_df_nao_detectados_t$X5,"norm")
fit_x5#fit_x5.4 = fitdistrplus::fitdist(datamatrix_df_nao_detectados_t$X5,"lnorm")
#fit_x5.5 = fitdistrplus::fitdist(datamatrix_df_nao_detectados_t$X5,"exp")
#fit_x5.6 = fitdistrplus::fitdist(datamatrix_df_nao_detectados_t$X5,"gamma")
#fit_x5.7 = fitdistrplus::fitdist(datamatrix_df_nao_detectados_t$X5,"beta")
#teste = gofstat(list(fit_x5.1, fit_x5.2,fit_x5.3,fit_x5.4,fit_x5.5,fit_x5.6,fit_x5.7),fitnames = c("Uniforme", "logística","Normal","lognormal","Exponencial","Gamma","Beta"))
= gofstat(list(fit_x5.1, fit_x5.2,fit_x5.3),fitnames = c("Uniforme", "logística","Normal"))
teste
teste
## Goodness-of-fit statistics
## Uniforme logística Normal
## Kolmogorov-Smirnov statistic 0.2785541 0.14347851 0.16883171
## Cramer-von Mises statistic 0.1122213 0.02691184 0.03584558
## Anderson-Darling statistic Inf 0.20734582 0.25846406
##
## Goodness-of-fit criteria
## Uniforme logística Normal
## Akaike's Information Criterion 10.30306 11.30462 11.48473
## Bayesian Information Criterion 10.90823 11.90979 12.08990
names(which.min(teste$aic))
## [1] "Uniforme"
# versao do histograma que nao deu certo
#load("har_examples.RData")
#dados = har_examples$example17
#dados$event = factor(dados$event, labels=c("FALSE", "TRUE"))
#head(dados)
#
#data10 <- ts_data(dados$serie, 10)
#data10_df = data.frame(data10)
#
## Create a histogram of the time series data
#
#teste=list()
#dados_anomalia_hist = list()
#anomalies <- numeric(dim(data10_df)[1])
#for (i in 1:dim(data10_df)[1]) {
#
# for (j in 1:dim(data10_df)[2]) {
#
# hist_data <- hist(data10_df[[j]], plot = FALSE)
#
# # Calculate bin edges and midpoints
# bin_edges <- hist_data$breaks
#
# bin_index <- findInterval(data10_df[[j]][i], bin_edges)
#
# if (bin_index < 1)
# bin_index <- 1
# lower_bound <- bin_edges[bin_index]
# if (bin_index < length(bin_edges))
# upper_bound <- bin_edges[bin_index+1]
# else
# upper_bound <- bin_edges[bin_index]
#
#if ( data10_df[[j]][i] < lower_bound || data10_df[[j]][i] > upper_bound || hist_data$density[bin_index] < 0.5) {
#
# #anomalies[j] <- 1
# fit_x.1 = fitdistrplus::fitdist(data10_df[[j]],"unif")
# fit_x.2 = fitdistrplus::fitdist(data10_df[[j]],"logis")
# fit_x.3 = fitdistrplus::fitdist(data10_df[[j]],"norm")
# teste[[j]] = gofstat(list(fit_x.1, fit_x.2,fit_x.3),fitnames = c("Uniforme", "logística","Normal"))
# cat("Pelo método do histograma, essa janela foi considerada anomalia :", data10_df[[j]], "\n")
# cat("---------------------------------------------------------------------------------------","\n")
# cat("Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao:", names(which.min(teste[[j]]$bic)), "\n")
# cat("---------------------------------------------------------------------------------------")
# cat("Pela métrica AIC, A distribuicao melhor se ajustou a distribuicao:", names(which.min(teste[[j]]$aic)), "\n")
# cat("Observação",c(i,j),"\n")
# dados_anomalia_hist[[j]] = list(data10_df[[j]])
# dados_anomalia_hist[[j]] = c(i,j)
# #anomalies[i] <- 1
# }
# }
#}
#anomaly_indices <- which(anomalies == 1)
#anomaly_indices
# if (all(between(as.numeric(data10_df[i, ]), 0, 1))) {
#
# fit_x3 = fitdistrplus::fitdist(as.numeric(data10_df[i, ]), "gamma")
# fit_x7 = fitdistrplus::fitdist(as.numeric(data10_df[i, ]), "beta")
#
# teste[[i]] = gofstat(list(fit_x3,fit_x7),
# fitnames = c("Gamma","Beta"))
# }
#load("har_examples.RData")
##dados = har_examples$example15
##dados = har_examples$example16
#dados = har_examples$example17
##dados = har_examples$example18
##dados = rexp(100)
#
##dados$event = factor(dados$event, labels=c("FALSE", "TRUE"))
##head(dados)
#
#data10 <- ts_data(dados$serie, 10)
##data10 <- ts_data(dados, 10)
#
#datamatrix <- matrix(data10,nrow = 104,ncol = 10)
#
#dbscanResult <- dbscan::dbscan(datamatrix, eps=0.53 , minPts=3) # clustering
#
#dbscanResult
#
#datamatrix_df = data.frame(datamatrix)
#
#datamatrix_df$clusters = dbscanResult$cluster
#
#datamatrix_df_anomalias = datamatrix_df %>% filter(clusters==0)
#datamatrix_df_anomalias = datamatrix_df_anomalias[,-11]
#
#data10_df = datamatrix_df_anomalias
#
#teste = list()
#dados_anomalia = list()
#nomes_dist_aic = list()
#nomes_dist_bic = list()
#
#for (i in 1:dim(data10_df)[1]) {
# if (all(data10_df[i,] > 0)) {
# fit_x1 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "lnorm")
# fit_x2 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "exp")
# fit_x3 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "gamma")
# fit_x4 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "unif")
# fit_x5 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "logis")
# fit_x6 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "norm")
#
# teste[[i]] = gofstat(
# list(fit_x1, fit_x2, fit_x3, fit_x4, fit_x5, fit_x6),
# fitnames = c(
# "lognormal",
# "Exponencial",
# "Gamma",
# "Uniforme",
# "logística",
# "Normal"
# )
# )
# nomes_dist_aic[[i]] = names(which.min(teste[[i]]$bic))
# nomes_dist_bic[[i]] = names(which.min(teste[[i]]$aic))
# cat(
# "Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_aic[[i]],
# "\n"
# )
# cat(
# "---------------------------------------------------------------------------------------"
# )
# cat(
# "Pela métrica AIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_bic[[i]],
# "\n"
# )
# }
#
# # if (all(between(as.numeric(data10_df[i, ]), 0, 1))) {
# #
# # fit_x3 = fitdistrplus::fitdist(as.numeric(data10_df[i, ]), "gamma")
# # fit_x7 = fitdistrplus::fitdist(as.numeric(data10_df[i, ]), "beta")
# #
# # teste[[i]] = gofstat(list(fit_x3,fit_x7),
# # fitnames = c("Gamma","Beta"))
# # }
#
# else {
# fit_x4 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "unif")
# fit_x5 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "logis")
# fit_x6 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "norm")
# teste[[i]] = gofstat(list(fit_x4, fit_x5, fit_x6),
# fitnames = c("Uniforme", "logística", "Normal"))
#
# nomes_dist_aic[[i]] = names(which.min(teste[[i]]$bic))
# nomes_dist_bic[[i]] = names(which.min(teste[[i]]$aic))
# cat(
# "Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_aic[[i]],
# "\n"
# )
# cat(
# "---------------------------------------------------------------------------------------"
# )
# cat(
# "Pela métrica AIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_bic[[i]],
# "\n"
# )
# }
#
# #cat(
# # "Pelo método da distribuição, essa janela foi considerada anomalia :",
# # as.numeric(data10_df[i, ]),
# # "\n"
# #)
# #cat(
# # "---------------------------------------------------------------------------------------",
# # "\n"
# #)
#
# dados_anomalia[[i]] = list(as.numeric(data10_df[i,]))
#
# #anomalies[i] <- 1
#}
#ok
V.final2
#load("har_examples.RData")
##dados = har_examples$example15
##dados = har_examples$example16
#dados = har_examples$example17
##dados = har_examples$example18
##dados = rexp(100)
#
##dados$event = factor(dados$event, labels=c("FALSE", "TRUE"))
##head(dados)
#
#data10 <- ts_data(dados$serie, 10)
##data10 <- ts_data(dados, 10)
#
#datamatrix <- matrix(data10,nrow = 104,ncol = 10)
#
#dbscanResult <- dbscan::dbscan(datamatrix, eps=0.53 , minPts=3) # clustering
#
#dbscanResult
#
#datamatrix_df = data.frame(datamatrix)
#
#datamatrix_df$clusters = dbscanResult$cluster
#
#datamatrix_df_anomalias = datamatrix_df %>% filter(clusters==0)
#datamatrix_df_anomalias = datamatrix_df_anomalias[,-11]
#
#data10_df = datamatrix_df_anomalias
#
#
#teste = list()
#dados_anomalia = list()
#nomes_dist_aic = list()
#nomes_dist_bic = list()
#probab_anomalias_bic = list()
#
#
#for (i in 1:dim(data10_df)[1]) {
# if (all(data10_df[i,] > 0)) {
# fit_x1 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "lnorm")
# fit_x2 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "exp")
# fit_x3 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "gamma")
# fit_x4 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "unif")
# fit_x5 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "logis")
# fit_x6 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "norm")
#
# teste[[i]] = gofstat(
# list(fit_x1, fit_x2, fit_x3, fit_x4, fit_x5, fit_x6),
# fitnames = c(
# "lognormal",
# "Exponencial",
# "Gamma",
# "Uniforme",
# "logística",
# "Normal"
# )
# )
# nomes_dist_aic[[i]] = names(which.min(teste[[i]]$bic))
# nomes_dist_bic[[i]] = names(which.min(teste[[i]]$aic))
# cat(
# "Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_aic[[i]],
# "\n"
# )
# cat(
# "---------------------------------------------------------------------------------------"
# )
# cat(
# "Pela métrica AIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_bic[[i]],
# "\n"
# )
#
# }
#
# else {
# fit_x4 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "unif")
# fit_x5 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "logis")
# fit_x6 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "norm")
# teste[[i]] = gofstat(list(fit_x4, fit_x5, fit_x6),
# fitnames = c("Uniforme", "logística", "Normal"))
#
# nomes_dist_aic[[i]] = names(which.min(teste[[i]]$bic))
# nomes_dist_bic[[i]] = names(which.min(teste[[i]]$aic))
# cat(
# "Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_aic[[i]],
# "\n"
# )
# cat(
# "---------------------------------------------------------------------------------------"
# )
# cat(
# "Pela métrica AIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_bic[[i]],
# "\n"
# )
# }
#
# dados_anomalia[[i]] = as.numeric(data10_df[i,])
#
#
# if (nomes_dist_aic[[i]] == "lognormal") {
# probab_anomalias_bic[[i]] = dlnorm(dados_anomalia[[i]],
# meanlog = fit_x1$estimate[[1]],
# sdlog = fit_x1$estimate[[2]]) [dlnorm(dados_anomalia[[i]],
# meanlog = #fit_x1$estimate[[1]],
# sdlog = #fit_x1$estimate[[2]]) < 0.5]
# }
# if (nomes_dist_aic[[i]] == "exp") {
# probab_anomalias_bic[[i]] = dexp(dados_anomalia[[i]],
# rate = fit_x2$estimate[[1]]) [dexp(dados_anomalia[[i]],
# rate = fit_x2$estimate[[1]]) #< 0.5]
# }
# if (nomes_dist_aic[[i]] == "gamma") {
# probab_anomalias_bic[[i]] = dgamma(dados_anomalia[[i]],
# shape = fit_x3$estimate[[1]],
# rate = fit_x3$estimate[[2]]) [dgamma(dados_anomalia[[i]],
# shape = #fit_x3$estimate[[1]],
# rate = #fit_x3$estimate[[2]]) < 0.5]
# }
#
# if (nomes_dist_aic[[i]] == "unif") {
# probab_anomalias_bic[[i]] = dunif(dados_anomalia[[i]],
# min = fit_x4$estimate[[1]],
# max = fit_x4$estimate[[2]]) [dunif(dados_anomalia[[i]],
# min = fit_x4$estimate[[1]],
# max = fit_x4$estimate[[2]]) #< 0.5]
# }
#
# if (nomes_dist_aic[[i]] == "logística") {
# probab_anomalias_bic[[i]] = dlogis(dados_anomalia[[i]],
# location = fit_x5$estimate[[1]],
# scale = fit_x5$estimate[[2]]) [dlogis(dados_anomalia[[i]],
# location = #fit_x5$estimate[[1]],
# scale = #fit_x5$estimate[[2]]) < 0.5]
#
# } else {
# probab_anomalias_bic[[i]] = dnorm(dados_anomalia[[i]],
# mean = fit_x6$estimate[[1]],
# sd = fit_x6$estimate[[2]]) [dnorm(dados_anomalia[[i]],
# mean = fit_x6$estimate[[1]],
# sd = fit_x6$estimate[[2]]) < #0.5]
#
# }
#
#
#
#
# #cat(
# # "Pelo método da distribuição, essa janela foi considerada anomalia :",
# # as.numeric(data10_df[i, ]),
# # "\n"
# #)
# #cat(
# # "---------------------------------------------------------------------------------------",
# # "\n"
# #)
#
#
#}
#
#ok
V.final3
##backup
### introduzindo o cálculo das probabilidades
#
#load("har_examples.RData")
##dados = har_examples$example15
##dados = har_examples$example16
#dados = har_examples$example17
##dados = har_examples$example18
##dados = rexp(100)
#
#data10 <- ts_data(dados$serie, 10)
#
#data10_df = data.frame(data10)
#
#teste = list()
#dados_anomalia = list()
#nomes_dist_aic = list()
#nomes_dist_bic = list()
#probab_anomalias_bic = list()
#
#
#for (i in 1:dim(data10_df)[1]) {
# if (all(data10_df[i,] > 0)) {
# fit_x1 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "lnorm")
# fit_x2 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "exp")
# fit_x3 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "gamma")
# fit_x4 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "unif")
# fit_x5 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "logis")
# fit_x6 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "norm")
#
# teste[[i]] = gofstat(
# list(fit_x1, fit_x2, fit_x3, fit_x4, fit_x5, fit_x6),
# fitnames = c(
# "lognormal",
# "Exponencial",
# "Gamma",
# "Uniforme",
# "logística",
# "Normal"
# )
# )
# nomes_dist_aic[[i]] = names(which.min(teste[[i]]$bic))
# nomes_dist_bic[[i]] = names(which.min(teste[[i]]$aic))
# cat(
# "Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_aic[[i]],
# "\n"
# )
# cat(
# "---------------------------------------------------------------------------------------"
# )
# cat(
# "Pela métrica AIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_bic[[i]],
# "\n"
# )
#
# }
#
# else {
# fit_x4 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "unif")
# fit_x5 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "logis")
# fit_x6 = fitdistrplus::fitdist(as.numeric(data10_df[i,]), "norm")
# teste[[i]] = gofstat(list(fit_x4, fit_x5, fit_x6),
# fitnames = c("Uniforme", "logística", "Normal"))
#
# nomes_dist_aic[[i]] = names(which.min(teste[[i]]$bic))
# nomes_dist_bic[[i]] = names(which.min(teste[[i]]$aic))
# cat(
# "Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_aic[[i]],
# "\n"
# )
# cat(
# "---------------------------------------------------------------------------------------"
# )
# cat(
# "Pela métrica AIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_bic[[i]],
# "\n"
# )
# }
#
# dados_anomalia[[i]] = as.numeric(data10_df[i,])
#
# limiar = 0.2
#
# if (nomes_dist_aic[[i]] == "lognormal") {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [ (dlnorm(dados_anomalia[[i]],
# meanlog = #fit_x1$estimate[[1]],
# sdlog = #fit_x1$estimate[[2]]) < limiar)=="TRUE"]
# }
# if (nomes_dist_aic[[i]] == "exp") {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [ (dexp(dados_anomalia[[i]],
# rate = fit_x2$estimate[[1]]) #< limiar)=="TRUE" ]
# }
# if (nomes_dist_aic[[i]] == "gamma") {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [ (dgamma(dados_anomalia[[i]],
# shape = #fit_x3$estimate[[1]],
# rate = #fit_x3$estimate[[2]]) < limiar)=="TRUE"]
# }
#
# if (nomes_dist_aic[[i]] == "unif") {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [ ( dunif(dados_anomalia[[i]],
# min = fit_x4$estimate[[1]],
# max = fit_x4$estimate[[2]]) #< limiar )=="TRUE" ]
# }
#
# if (nomes_dist_aic[[i]] == "logística") {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [ (dlogis(dados_anomalia[[i]],
# location = #fit_x5$estimate[[1]],
# scale = #fit_x5$estimate[[2]]) < limiar )=="TRUE" ]
#
# } else {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [ (dnorm(dados_anomalia[[i]],
# mean = fit_x6$estimate[[1]],
# sd = fit_x6$estimate[[2]]) < #limiar)=="TRUE"]
#
# }
#
#
#
#
# #cat(
# # "Pelo método da distribuição, essa janela foi considerada anomalia :",
# # as.numeric(data10_df[i, ]),
# # "\n"
# #)
# #cat(
# # "---------------------------------------------------------------------------------------",
# # "\n"
# #)
#
#
#}
#
##probab_anomalias_bic[probab_anomalias_bic == dados$serie[dados$event==TRUE] == "FALSE"]
#
##unlist(probab_anomalias_bic) [ unlist(probab_anomalias_bic) %in% dados$serie[dados$event==TRUE] == #"FALSE" ]
##dados$serie[dados$event==TRUE] [ dados$serie[dados$event==TRUE] %in% unlist(probab_anomalias_bic) == #"FALSE"]
##table(unlist(probab_anomalias_bic) %in% dados$serie[dados$event==TRUE])
#
#ok
V.final4 Para distribuições contínuas
#backup
## introduzindo o cálculo das probabilidades
#load("har_examples.RData")
##dados = har_examples$example15
##dados = har_examples$example16
#dados = har_examples$example17
##dados = har_examples$example18
##dados = rexp(100)
#
#teste = list()
#dados_anomalia = list()
##nomes_dist_aic = list()
#nomes_dist_bic = list()
#probab_anomalias_bic = list()
#
#
#dbscan_dist_prob_ts = function(vetor_serie, tamanho_janela, eps, minPts,limiar) {
#
# data_ts_janela <- ts_data(vetor_serie, tamanho_janela)
#
# datamatrix <-
# matrix(data_ts_janela,
# nrow = dim(data_ts_janela)[1],
# ncol = tamanho_janela)
#
# dbscanResult <-
# dbscan::dbscan(datamatrix, eps = eps , minPts = minPts) # clustering
#
# datamatrix_df = data.frame(datamatrix)
#
# datamatrix_df$clusters = dbscanResult$cluster
#
# datamatrix_df_anomalias = datamatrix_df %>% filter(clusters == 0)
#
# datamatrix_df_anomalias = subset(datamatrix_df_anomalias, select = -c(clusters))
#
# for (i in 1:dim(datamatrix_df_anomalias)[1]) {
# if (all(datamatrix_df_anomalias[i, ] > 0)) {
# fit_x1 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "lnorm")
# fit_x2 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "exp")
# fit_x3 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "gamma")
# fit_x4 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "unif")
# fit_x5 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "logis")
# fit_x6 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "norm")
#
# teste[[i]] = gofstat(
# list(fit_x1, fit_x2, fit_x3, fit_x4, fit_x5, fit_x6),
# fitnames = c(
# "lognormal",
# "Exponencial",
# "Gamma",
# "Uniforme",
# "logística",
# "Normal"
# )
# )
# nomes_dist_bic[[i]] = names(which.min(teste[[i]]$bic))
# #nomes_dist_bic[[i]] = names(which.min(teste[[i]]$aic))
# #cat(
# # "Pela métrica AIC, A distribuicao melhor se ajustou a distribuicao:",
# # nomes_dist_aic[[i]],
# # "\n"
# #)
# #cat(
# # "---------------------------------------------------------------------------------------"
# #)
# cat(
# "Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_bic[[i]],
# "\n"
# )
#
# }
#
# else {
# fit_x4 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "unif")
# fit_x5 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "logis")
# fit_x6 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "norm")
# teste[[i]] = gofstat(list(fit_x4, fit_x5, fit_x6),
# fitnames = c("Uniforme", "logística", "Normal"))
#
# #nomes_dist_aic[[i]] = names(which.min(teste[[i]]$aic))
# nomes_dist_bic[[i]] = names(which.min(teste[[i]]$bic))
# #cat(
# # "Pela métrica AIC, A distribuicao melhor se ajustou a distribuicao:",
# # nomes_dist_aic[[i]],
# # "\n"
# #)
# #cat(
# # "---------------------------------------------------------------------------------------"
# #)
# cat(
# "Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_bic[[i]],
# "\n"
# )
# }
#
# dados_anomalia[[i]] = as.numeric(datamatrix_df_anomalias[i, ])
#
# if (nomes_dist_bic[[i]] == "lognormal") {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [(
# dlnorm(
# dados_anomalia[[i]],
# meanlog = fit_x1$estimate[[1]],
# sdlog = fit_x1$estimate[[2]]
# ) < limiar
# ) == "TRUE"]
# }
# if (nomes_dist_bic[[i]] == "exp") {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [(dexp(dados_anomalia[[i]],
# rate = fit_x2$estimate[[1]]) < limiar) ==
# "TRUE"]
# }
# if (nomes_dist_bic[[i]] == "gamma") {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [(
# dgamma(
# dados_anomalia[[i]],
# shape = fit_x3$estimate[[1]],
# rate = fit_x3$estimate[[2]]
# ) < limiar
# ) == "TRUE"]
# }
#
# if (nomes_dist_bic[[i]] == "unif") {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [(dunif(
# dados_anomalia[[i]],
# min = fit_x4$estimate[[1]],
# max = fit_x4$estimate[[2]]
# ) < limiar) == "TRUE"]
# }
#
# if (nomes_dist_bic[[i]] == "logística") {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [(
# dlogis(
# dados_anomalia[[i]],
# location = fit_x5$estimate[[1]],
# scale = fit_x5$estimate[[2]]
# ) < limiar
# ) == "TRUE"]
#
# } else {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [(dnorm(
# dados_anomalia[[i]],
# mean = fit_x6$estimate[[1]],
# sd = fit_x6$estimate[[2]]
# ) < limiar) == "TRUE"]
#
# }
#
#
#
#
# #cat(
# # "Pelo método da distribuição, essa janela foi considerada anomalia :",
# # as.numeric(datamatrix_df_anomalias[i, ]),
# # "\n"
# #)
# #cat(
# # "---------------------------------------------------------------------------------------",
# # "\n"
# #)
#
#
# }
#
# vetor_anomalias_unicas_detectadas = unique(unlist(probab_anomalias_bic))
#
# grafico_dbscan = dbscan::hullplot(datamatrix, dbscanResult, main="DBSCAN")
#
# grafico_boxplot = boxplot(data.frame(t(datamatrix_df_anomalias)),plot = "TRUE")
#
# grafico_knn = dbscan::kNNdistplot(datamatrix, k = minPts)
#
# assign("datamatrix_df_anomalias",datamatrix_df_anomalias,envir = .GlobalEnv)
# assign("probab_anomalias_bic_por_janela",probab_anomalias_bic,envir = .GlobalEnv)
# assign("nomes_dist_bic",nomes_dist_bic,envir = .GlobalEnv)
# assign("dados_anomalia",dados_anomalia,envir = .GlobalEnv)
# assign("grafico_knn",grafico_knn,envir = .GlobalEnv)
# assign("grafico_dbscan",grafico_dbscan,envir = .GlobalEnv)
# assign("grafico_boxplot",grafico_boxplot,envir = .GlobalEnv)
# assign("dbscanresult",dbscanResult,envir = .GlobalEnv)
# assign("vetor_anomalias_unicas_detectadas",vetor_anomalias_unicas_detectadas,envir = .GlobalEnv)
#
# return(
# list(
# #datamatrix_df_anomalias,
# probab_anomalias_bic,
# vetor_anomalias_unicas_detectadas,
# nomes_dist_bic,
# dados_anomalia,
# dbscanResult
# )
# )
#
#}
#
#dbscan_dist_prob_ts(dados$serie,tamanho_janela=10,eps=0.53,minPts=3,limiar = 0.25)
#
#table(vetor_anomalias_unicas_detectadas %in% dados$serie[dados$event==TRUE])
#ok
#c1 = compara_anomalias(vetor_anomalias_unicas_detectadas,dados$serie)
#
#dados$event_dbscan_dist_prob_ts = dados$serie %in% c1[[4]]
#
#dados$indice = 1:length(dados$serie)
#my_ts = ts(dados$serie,dados$indice)
#plot.ts(my_ts)
#points(dados$indice[dados$event=="TRUE"],dados$serie[dados$event], pch = 20, col = "red")
#plot.ts(my_ts)
#points(dados$indice[dados$event_dbscan_dist_prob_ts=="TRUE"],dados$serie[dados$event_dbscan_dist_prob_ts], #pch = 20, col = "red")
V.final4 Para distribuições contínuas Binseg eps automático
## introduzindo o binseg
load("har_examples.RData")
#dados = har_examples$example15
#dados = har_examples$example16
= har_examples$example17
dados #dados = har_examples$example18
#dados = rexp(100)
= list()
teste = list()
dados_anomalia #nomes_dist_aic = list()
= list()
nomes_dist_bic = list()
probab_anomalias_bic = matrix()
distancias = list()
lista_anomalias_unicas_detectadas = list()
lista_dbscanresult
= function(vetor_serie,
dbscan_dist_prob_ts
tamanho_janela,eps = NULL,
minPts,
limiar) {#list(missing(eps), eps)
<- ts_data(vetor_serie, tamanho_janela)
data_ts_janela
<-
datamatrix matrix(data_ts_janela,
nrow = dim(data_ts_janela)[1],
ncol = tamanho_janela)
= kNNdist(data_ts_janela, k = minPts, all = TRUE)
distancias
<- cpt.meanvar(cumsum(distancias), method = "BinSeg")
Binseg_cp
for (i in 1:length(Binseg_cp@cpts)) {
<-
dbscanResult ::dbscan(datamatrix, eps = distancias[Binseg_cp@cpts[i]], minPts = minPts) # clustering
dbscan
= data.frame(datamatrix)
datamatrix_df
if (any(dbscanResult$cluster == 0)) {
$clusters = dbscanResult$cluster
datamatrix_df
= datamatrix_df %>% filter(clusters == 0)
datamatrix_df_anomalias
= subset(datamatrix_df_anomalias, select = -c(clusters))
datamatrix_df_anomalias
cat(
"Binseg change point for diff",
i,"at location",
@cpts[i],
Binseg_cp"with value",
@cpts[i]],
distancias[Binseg_cp"\n"
)
= dbscanResult
lista_dbscanresult[[i]]
#x11()
= dbscan::kNNdistplot(datamatrix, k = minPts)
grafico_knn abline(h = distancias[Binseg_cp@cpts[i]], lty = 2)
#x11()
= boxplot(data.frame(t(datamatrix_df_anomalias)), plot = "TRUE")
grafico_boxplot
#x11()
= dbscan::hullplot(datamatrix, dbscanResult, main = "DBSCAN")
grafico_dbscan
for (i in 1:dim(datamatrix_df_anomalias)[1]) {
if (all(datamatrix_df_anomalias[i,] > 0)) {
= fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i,]), "lnorm")
fit_x1 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i,]), "exp")
fit_x2 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i,]), "gamma")
fit_x3 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i,]), "unif")
fit_x4 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i,]), "logis")
fit_x5 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i,]), "norm")
fit_x6
= gofstat(
teste[[i]] list(fit_x1, fit_x2, fit_x3, fit_x4, fit_x5, fit_x6),
fitnames = c(
"lognormal",
"Exponencial",
"Gamma",
"Uniforme",
"logística",
"Normal"
)
)= names(which.min(teste[[i]]$bic))
nomes_dist_bic[[i]] #nomes_dist_bic[[i]] = names(which.min(teste[[i]]$aic))
#cat(
# "Pela métrica AIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_aic[[i]],
# "\n"
#)
#cat(
# "---------------------------------------------------------------------------------------"
#)
cat(
"Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao:",
nomes_dist_bic[[i]],"\n"
)
}
else {
= fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i,]), "unif")
fit_x4 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i,]), "logis")
fit_x5 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i,]), "norm")
fit_x6 = gofstat(
teste[[i]] list(fit_x4, fit_x5, fit_x6),
fitnames = c("Uniforme", "logística", "Normal")
)
#nomes_dist_aic[[i]] = names(which.min(teste[[i]]$aic))
= names(which.min(teste[[i]]$bic))
nomes_dist_bic[[i]] #cat(
# "Pela métrica AIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_aic[[i]],
# "\n"
#)
#cat(
# "---------------------------------------------------------------------------------------"
#)
cat(
"Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao:",
nomes_dist_bic[[i]],"\n"
)
}
= as.numeric(datamatrix_df_anomalias[i,])
dados_anomalia[[i]]
if (nomes_dist_bic[[i]] == "lognormal") {
= dados_anomalia[[i]] [(
probab_anomalias_bic[[i]] dlnorm(
dados_anomalia[[i]],meanlog = fit_x1$estimate[[1]],
sdlog = fit_x1$estimate[[2]]
< limiar
) == "TRUE"]
)
}if (nomes_dist_bic[[i]] == "exp") {
= dados_anomalia[[i]] [(dexp(dados_anomalia[[i]],
probab_anomalias_bic[[i]] rate = fit_x2$estimate[[1]]) < limiar) ==
"TRUE"]
}if (nomes_dist_bic[[i]] == "gamma") {
= dados_anomalia[[i]] [(
probab_anomalias_bic[[i]] dgamma(
dados_anomalia[[i]],shape = fit_x3$estimate[[1]],
rate = fit_x3$estimate[[2]]
< limiar
) == "TRUE"]
)
}
if (nomes_dist_bic[[i]] == "unif") {
= dados_anomalia[[i]] [(
probab_anomalias_bic[[i]] dunif(
dados_anomalia[[i]],min = fit_x4$estimate[[1]],
max = fit_x4$estimate[[2]]
< limiar
) == "TRUE"]
)
}
if (nomes_dist_bic[[i]] == "logística") {
= dados_anomalia[[i]] [(
probab_anomalias_bic[[i]] dlogis(
dados_anomalia[[i]],location = fit_x5$estimate[[1]],
scale = fit_x5$estimate[[2]]
< limiar
) == "TRUE"]
)
else {
} = dados_anomalia[[i]] [(
probab_anomalias_bic[[i]] dnorm(
dados_anomalia[[i]],mean = fit_x6$estimate[[1]],
sd = fit_x6$estimate[[2]]
< limiar
) == "TRUE"]
)
}
#cat(
# "Pelo método da distribuição, essa janela foi considerada anomalia :",
# as.numeric(datamatrix_df_anomalias[i, ]),
# "\n"
#)
#cat(
# "---------------------------------------------------------------------------------------",
# "\n"
#)
}
= unique(unlist(probab_anomalias_bic))
lista_anomalias_unicas_detectadas[[i]]
else {
} cat("Não foram detectadas anomalias")
}
}
#grafico_knn = dbscan::kNNdistplot(datamatrix, k = minPts)
# Print the location and value of each change point using the AMOC method
assign("datamatrix_df_anomalias", datamatrix_df_anomalias, envir = .GlobalEnv)
assign("probab_anomalias_bic_por_janela",probab_anomalias_bic,envir = .GlobalEnv)
assign("nomes_dist_bic", nomes_dist_bic, envir = .GlobalEnv)
assign("dados_anomalia", dados_anomalia, envir = .GlobalEnv)
assign("grafico_knn", grafico_knn, envir = .GlobalEnv)
assign("grafico_dbscan", grafico_dbscan, envir = .GlobalEnv)
assign("grafico_boxplot", grafico_boxplot, envir = .GlobalEnv)
assign("lista_dbscanresult", lista_dbscanresult, envir = .GlobalEnv)
assign("lista_anomalias_unicas_detectadas",lista_anomalias_unicas_detectadas,envir = .GlobalEnv)
return(
list(
#datamatrix_df_anomalias,
lista_anomalias_unicas_detectadas,
lista_anomalias_unicas_detectadas,
nomes_dist_bic,
dados_anomalia,
lista_dbscanresult
)
)
}
dbscan_dist_prob_ts(dados$serie,tamanho_janela=8, minPts=3,limiar = 0.20)
## Binseg change point for diff 1 at location 62 with value 0.3422411
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Não foram detectadas anomaliasBinseg change point for diff 3 at location 176 with value 0.4421227
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Não foram detectadas anomaliasNão foram detectadas anomaliasBinseg change point for diff 6 at location 318 with value 0.3497361
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## [[1]]
## [[1]][[1]]
## NULL
##
## [[1]][[2]]
## NULL
##
## [[1]][[3]]
## NULL
##
## [[1]][[4]]
## NULL
##
## [[1]][[5]]
## NULL
##
## [[1]][[6]]
## NULL
##
## [[1]][[7]]
## NULL
##
## [[1]][[8]]
## NULL
##
## [[1]][[9]]
## NULL
##
## [[1]][[10]]
## NULL
##
## [[1]][[11]]
## NULL
##
## [[1]][[12]]
## NULL
##
## [[1]][[13]]
## NULL
##
## [[1]][[14]]
## NULL
##
## [[1]][[15]]
## [1] -1.455506 1.392396 -1.515969 1.481574 -1.530320 1.526252 -1.497888
## [8] 1.524337
##
## [[1]][[16]]
## NULL
##
## [[1]][[17]]
## NULL
##
## [[1]][[18]]
## NULL
##
## [[1]][[19]]
## NULL
##
## [[1]][[20]]
## NULL
##
## [[1]][[21]]
## NULL
##
## [[1]][[22]]
## NULL
##
## [[1]][[23]]
## NULL
##
## [[1]][[24]]
## NULL
##
## [[1]][[25]]
## NULL
##
## [[1]][[26]]
## NULL
##
## [[1]][[27]]
## NULL
##
## [[1]][[28]]
## NULL
##
## [[1]][[29]]
## NULL
##
## [[1]][[30]]
## NULL
##
## [[1]][[31]]
## NULL
##
## [[1]][[32]]
## NULL
##
## [[1]][[33]]
## NULL
##
## [[1]][[34]]
## NULL
##
## [[1]][[35]]
## NULL
##
## [[1]][[36]]
## NULL
##
## [[1]][[37]]
## NULL
##
## [[1]][[38]]
## NULL
##
## [[1]][[39]]
## NULL
##
## [[1]][[40]]
## NULL
##
## [[1]][[41]]
## NULL
##
## [[1]][[42]]
## NULL
##
## [[1]][[43]]
## NULL
##
## [[1]][[44]]
## NULL
##
## [[1]][[45]]
## NULL
##
## [[1]][[46]]
## NULL
##
## [[1]][[47]]
## NULL
##
## [[1]][[48]]
## NULL
##
## [[1]][[49]]
## NULL
##
## [[1]][[50]]
## NULL
##
## [[1]][[51]]
## NULL
##
## [[1]][[52]]
## [1] -1.455506 1.392396 -1.515969 1.481574 -1.530320 1.526252 -1.497888
## [8] 1.524337
##
## [[1]][[53]]
## NULL
##
## [[1]][[54]]
## NULL
##
## [[1]][[55]]
## [1] -1.455506 1.392396 -1.515969 1.481574 -1.530320 1.526252 -1.497888
## [8] 1.524337
##
##
## [[2]]
## [[2]][[1]]
## NULL
##
## [[2]][[2]]
## NULL
##
## [[2]][[3]]
## NULL
##
## [[2]][[4]]
## NULL
##
## [[2]][[5]]
## NULL
##
## [[2]][[6]]
## NULL
##
## [[2]][[7]]
## NULL
##
## [[2]][[8]]
## NULL
##
## [[2]][[9]]
## NULL
##
## [[2]][[10]]
## NULL
##
## [[2]][[11]]
## NULL
##
## [[2]][[12]]
## NULL
##
## [[2]][[13]]
## NULL
##
## [[2]][[14]]
## NULL
##
## [[2]][[15]]
## [1] -1.455506 1.392396 -1.515969 1.481574 -1.530320 1.526252 -1.497888
## [8] 1.524337
##
## [[2]][[16]]
## NULL
##
## [[2]][[17]]
## NULL
##
## [[2]][[18]]
## NULL
##
## [[2]][[19]]
## NULL
##
## [[2]][[20]]
## NULL
##
## [[2]][[21]]
## NULL
##
## [[2]][[22]]
## NULL
##
## [[2]][[23]]
## NULL
##
## [[2]][[24]]
## NULL
##
## [[2]][[25]]
## NULL
##
## [[2]][[26]]
## NULL
##
## [[2]][[27]]
## NULL
##
## [[2]][[28]]
## NULL
##
## [[2]][[29]]
## NULL
##
## [[2]][[30]]
## NULL
##
## [[2]][[31]]
## NULL
##
## [[2]][[32]]
## NULL
##
## [[2]][[33]]
## NULL
##
## [[2]][[34]]
## NULL
##
## [[2]][[35]]
## NULL
##
## [[2]][[36]]
## NULL
##
## [[2]][[37]]
## NULL
##
## [[2]][[38]]
## NULL
##
## [[2]][[39]]
## NULL
##
## [[2]][[40]]
## NULL
##
## [[2]][[41]]
## NULL
##
## [[2]][[42]]
## NULL
##
## [[2]][[43]]
## NULL
##
## [[2]][[44]]
## NULL
##
## [[2]][[45]]
## NULL
##
## [[2]][[46]]
## NULL
##
## [[2]][[47]]
## NULL
##
## [[2]][[48]]
## NULL
##
## [[2]][[49]]
## NULL
##
## [[2]][[50]]
## NULL
##
## [[2]][[51]]
## NULL
##
## [[2]][[52]]
## [1] -1.455506 1.392396 -1.515969 1.481574 -1.530320 1.526252 -1.497888
## [8] 1.524337
##
## [[2]][[53]]
## NULL
##
## [[2]][[54]]
## NULL
##
## [[2]][[55]]
## [1] -1.455506 1.392396 -1.515969 1.481574 -1.530320 1.526252 -1.497888
## [8] 1.524337
##
##
## [[3]]
## [[3]][[1]]
## [1] "Uniforme"
##
## [[3]][[2]]
## [1] "Uniforme"
##
## [[3]][[3]]
## [1] "Uniforme"
##
## [[3]][[4]]
## [1] "Uniforme"
##
## [[3]][[5]]
## [1] "Uniforme"
##
## [[3]][[6]]
## [1] "Uniforme"
##
## [[3]][[7]]
## [1] "Uniforme"
##
## [[3]][[8]]
## [1] "Uniforme"
##
## [[3]][[9]]
## [1] "Uniforme"
##
## [[3]][[10]]
## [1] "Uniforme"
##
## [[3]][[11]]
## [1] "Uniforme"
##
## [[3]][[12]]
## [1] "Uniforme"
##
## [[3]][[13]]
## [1] "Uniforme"
##
## [[3]][[14]]
## [1] "Uniforme"
##
## [[3]][[15]]
## [1] "Uniforme"
##
## [[3]][[16]]
## [1] "Uniforme"
##
## [[3]][[17]]
## [1] "Uniforme"
##
## [[3]][[18]]
## [1] "Uniforme"
##
## [[3]][[19]]
## [1] "Uniforme"
##
## [[3]][[20]]
## [1] "Uniforme"
##
## [[3]][[21]]
## [1] "Uniforme"
##
## [[3]][[22]]
## [1] "Uniforme"
##
## [[3]][[23]]
## [1] "Uniforme"
##
## [[3]][[24]]
## [1] "Uniforme"
##
## [[3]][[25]]
## [1] "Uniforme"
##
## [[3]][[26]]
## [1] "Uniforme"
##
## [[3]][[27]]
## [1] "Uniforme"
##
## [[3]][[28]]
## [1] "Uniforme"
##
## [[3]][[29]]
## [1] "Uniforme"
##
## [[3]][[30]]
## [1] "Uniforme"
##
## [[3]][[31]]
## [1] "Uniforme"
##
## [[3]][[32]]
## [1] "Uniforme"
##
## [[3]][[33]]
## [1] "Uniforme"
##
## [[3]][[34]]
## [1] "Uniforme"
##
## [[3]][[35]]
## [1] "Uniforme"
##
## [[3]][[36]]
## [1] "Uniforme"
##
## [[3]][[37]]
## [1] "Uniforme"
##
## [[3]][[38]]
## [1] "Uniforme"
##
## [[3]][[39]]
## [1] "Uniforme"
##
## [[3]][[40]]
## [1] "Uniforme"
##
## [[3]][[41]]
## [1] "Uniforme"
##
## [[3]][[42]]
## [1] "Uniforme"
##
## [[3]][[43]]
## [1] "Uniforme"
##
## [[3]][[44]]
## [1] "Uniforme"
##
## [[3]][[45]]
## [1] "Uniforme"
##
## [[3]][[46]]
## [1] "Uniforme"
##
## [[3]][[47]]
## [1] "Uniforme"
##
## [[3]][[48]]
## [1] "Uniforme"
##
## [[3]][[49]]
## [1] "Uniforme"
##
## [[3]][[50]]
## [1] "Uniforme"
##
## [[3]][[51]]
## [1] "Uniforme"
##
## [[3]][[52]]
## [1] "Uniforme"
##
## [[3]][[53]]
## [1] "Uniforme"
##
## [[3]][[54]]
## [1] "Uniforme"
##
## [[3]][[55]]
## [1] "Uniforme"
##
##
## [[4]]
## [[4]][[1]]
## [1] 0.5403023 0.3153224 0.0707372 -0.1782461 -0.4161468 -0.6281736 -0.8011436
## [8] -1.4555059
##
## [[4]][[2]]
## [1] 0.3153224 0.0707372 -0.1782461 -0.4161468 -0.6281736 -0.8011436 -1.4555059
## [8] -0.9899925
##
## [[4]][[3]]
## [1] 0.0707372 -0.1782461 -0.4161468 -0.6281736 -0.8011436 -1.4555059 -0.9899925
## [8] -0.9941297
##
## [[4]][[4]]
## [1] -0.1782461 -0.4161468 -0.6281736 -0.8011436 -1.4555059 -0.9899925 -0.9941297
## [8] -0.9364567
##
## [[4]][[5]]
## [1] -0.8011436 -1.4555059 -0.9899925 -0.9941297 -0.9364567 -0.8205594 -0.6536436
## [8] -0.4460875
##
## [[4]][[6]]
## [1] -1.4555059 -0.9899925 -0.9941297 -0.9364567 -0.8205594 -0.6536436 -0.4460875
## [8] -0.2107958
##
## [[4]][[7]]
## [1] -0.98999250 -0.99412968 -0.93645669 -0.82055936 -0.65364362 -0.44608749
## [7] -0.21079580 0.03760215
##
## [[4]][[8]]
## [1] -0.99412968 -0.93645669 -0.82055936 -0.65364362 -0.44608749 -0.21079580
## [7] 0.03760215 0.28366219
##
## [[4]][[9]]
## [1] -0.65364362 -0.44608749 -0.21079580 0.03760215 0.28366219 0.51208548
## [7] 0.70866977 1.39239594
##
## [[4]][[10]]
## [1] -0.44608749 -0.21079580 0.03760215 0.28366219 0.51208548 0.70866977
## [7] 1.39239594 0.96017029
##
## [[4]][[11]]
## [1] -0.21079580 0.03760215 0.28366219 0.51208548 0.70866977 1.39239594
## [7] 0.96017029 0.99944942
##
## [[4]][[12]]
## [1] 0.03760215 0.28366219 0.51208548 0.70866977 1.39239594 0.96017029 0.99944942
## [8] 0.97658763
##
## [[4]][[13]]
## [1] 0.7086698 1.3923959 0.9601703 0.9994494 0.9765876 0.8930063 0.7539023
## [8] 0.5679242
##
## [[4]][[14]]
## [1] 1.3923959 0.9601703 0.9994494 0.9765876 0.8930063 0.7539023 0.5679242
## [8] 0.3466353
##
## [[4]][[15]]
## [1] 0.9601703 0.9994494 0.9765876 0.8930063 0.7539023 0.5679242 0.3466353
## [8] 0.1037944
##
## [[4]][[16]]
## [1] 0.3466353 0.1037944 -0.1455000 -0.3857479 -0.6020119 -0.7808457 -0.9111303
## [8] -1.5159687
##
## [[4]][[17]]
## [1] 0.1037944 -0.1455000 -0.3857479 -0.6020119 -0.7808457 -0.9111303 -1.5159687
## [8] -0.9971722
##
## [[4]][[18]]
## [1] -0.1455000 -0.3857479 -0.6020119 -0.7808457 -0.9111303 -1.5159687 -0.9971722
## [8] -0.9475798
##
## [[4]][[19]]
## [1] -0.9111303 -1.5159687 -0.9971722 -0.9475798 -0.8390715 -0.6783939 -0.4755369
## [8] -0.2431134
##
## [[4]][[20]]
## [1] -1.515968699 -0.997172156 -0.947579804 -0.839071529 -0.678393850
## [6] -0.475536928 -0.243113423 0.004425698
##
## [[4]][[21]]
## [1] -0.997172156 -0.947579804 -0.839071529 -0.678393850 -0.475536928
## [6] -0.243113423 0.004425698 0.251689650
##
## [[4]][[22]]
## [1] -0.475536928 -0.243113423 0.004425698 0.251689650 0.483304759
## [6] 0.684870318 0.843853959 1.481574372
##
## [[4]][[23]]
## [1] -0.243113423 0.004425698 0.251689650 0.483304759 0.684870318
## [6] 0.843853959 1.481574372 0.997798279
##
## [[4]][[24]]
## [1] 0.004425698 0.251689650 0.483304759 0.684870318 0.843853959 1.481574372
## [7] 0.997798279 0.983187447
##
## [[4]][[25]]
## [1] 0.8438540 1.4815744 0.9977983 0.9831874 0.9074468 0.7752855 0.5949207
## [8] 0.3775666
##
## [[4]][[26]]
## [1] 1.4815744 0.9977983 0.9831874 0.9074468 0.7752855 0.5949207 0.3775666
## [8] 0.1367372
##
## [[4]][[27]]
## [1] 0.1367372 -0.1125938 -0.3549243 -0.5751873 -0.7596879 -0.8969548 -0.9784535
## [8] -1.5303201
##
## [[4]][[28]]
## [1] -0.1125938 -0.3549243 -0.5751873 -0.7596879 -0.8969548 -0.9784535 -1.5303201
## [8] -0.9576595
##
## [[4]][[29]]
## [1] -0.3549243 -0.5751873 -0.7596879 -0.8969548 -0.9784535 -1.5303201 -0.9576595
## [8] -0.8566597
##
## [[4]][[30]]
## [1] -0.97845346 -1.53032011 -0.95765948 -0.85665975 -0.70239706 -0.50446272
## [7] -0.27516334 -0.02875563
##
## [[4]][[31]]
## [1] -1.53032011 -0.95765948 -0.85665975 -0.70239706 -0.50446272 -0.27516334
## [7] -0.02875563 0.21943996
##
## [[4]][[32]]
## [1] -0.50446272 -0.27516334 -0.02875563 0.21943996 0.45399184 0.66031671
## [7] 0.82558628 0.93952489
##
## [[4]][[33]]
## [1] -0.27516334 -0.02875563 0.21943996 0.45399184 0.66031671 0.82558628
## [7] 0.93952489 1.52625193
##
## [[4]][[34]]
## [1] -0.02875563 0.21943996 0.45399184 0.66031671 0.82558628 0.93952489
## [7] 1.52625193 0.98870462
##
## [[4]][[35]]
## [1] 0.2194400 0.4539918 0.6603167 0.8255863 0.9395249 1.5262519 0.9887046
## [8] 0.9208880
##
## [[4]][[36]]
## [1] 0.9395249 1.5262519 0.9887046 0.9208880 0.7958150 0.6212620 0.4080821
## [8] 0.1695295
##
## [[4]][[37]]
## [1] 1.52625193 0.98870462 0.92088797 0.79581497 0.62126205 0.40808206
## [7] 0.16952951 -0.07956357
##
## [[4]][[38]]
## [1] 0.16952951 -0.07956357 -0.32370977 -0.54772926 -0.73769360 -0.88179173
## [7] -0.97106431 -0.99996083
##
## [[4]][[39]]
## [1] -0.07956357 -0.32370977 -0.54772926 -0.73769360 -0.88179173 -0.97106431
## [7] -0.99996083 -1.49788814
##
## [[4]][[40]]
## [1] -0.3237098 -0.5477293 -0.7376936 -0.8817917 -0.9710643 -0.9999608 -1.4978881
## [8] -0.8733046
##
## [[4]][[41]]
## [1] -0.5477293 -0.7376936 -0.8817917 -0.9710643 -0.9999608 -1.4978881 -0.8733046
## [8] -0.7256268
##
## [[4]][[42]]
## [1] -0.97106431 -0.99996083 -1.49788814 -0.87330464 -0.72562681 -0.53283302
## [7] -0.30691025 -0.06190529
##
## [[4]][[43]]
## [1] -0.99996083 -1.49788814 -0.87330464 -0.72562681 -0.53283302 -0.30691025
## [7] -0.06190529 0.18694864
##
## [[4]][[44]]
## [1] -1.49788814 -0.87330464 -0.72562681 -0.53283302 -0.30691025 -0.06190529
## [7] 0.18694864 0.42417901
##
## [[4]][[45]]
## [1] -0.53283302 -0.30691025 -0.06190529 0.18694864 0.42417901 0.63503598
## [7] 0.80640949 0.92764437
##
## [[4]][[46]]
## [1] -0.30691025 -0.06190529 0.18694864 0.42417901 0.63503598 0.80640949
## [7] 0.92764437 0.99120281
##
## [[4]][[47]]
## [1] -0.06190529 0.18694864 0.42417901 0.63503598 0.80640949 0.92764437
## [7] 0.99120281 1.52433659
##
## [[4]][[48]]
## [1] 0.1869486 0.4241790 0.6350360 0.8064095 0.9276444 0.9912028 1.5243366
## [8] 0.9333151
##
## [[4]][[49]]
## [1] 0.4241790 0.6350360 0.8064095 0.9276444 0.9912028 1.5243366 0.9333151
## [8] 0.8154681
##
## [[4]][[50]]
## [1] 0.9276444 0.9912028 1.5243366 0.9333151 0.8154681 0.6469193 0.4381482
## [8] 0.2021351
##
## [[4]][[51]]
## [1] 0.99120281 1.52433659 0.93331511 0.81546815 0.64691932 0.43814819
## [7] 0.20213512 -0.04644573
##
## [[4]][[52]]
## [1] 1.52433659 0.93331511 0.81546815 0.64691932 0.43814819 0.20213512
## [7] -0.04644573 -0.29213881
##
## [[4]][[53]]
## [1] 0.9276444 0.9912028 1.5243366 0.9333151 0.8154681 0.6469193 0.4381482
## [8] 0.2021351
##
## [[4]][[54]]
## [1] 0.99120281 1.52433659 0.93331511 0.81546815 0.64691932 0.43814819
## [7] 0.20213512 -0.04644573
##
## [[4]][[55]]
## [1] 1.52433659 0.93331511 0.81546815 0.64691932 0.43814819 0.20213512
## [7] -0.04644573 -0.29213881
##
##
## [[5]]
## [[5]][[1]]
## DBSCAN clustering for 106 objects.
## Parameters: eps = 0.342241063719983, minPts = 3
## Using euclidean distances and borderpoints = TRUE
## The clustering contains 10 cluster(s) and 55 noise points.
##
## 0 1 2 3 4 5 6 7 8 9 10
## 55 21 3 4 4 3 3 4 3 3 3
##
## Available fields: cluster, eps, minPts, dist, borderPoints
##
## [[5]][[2]]
## NULL
##
## [[5]][[3]]
## DBSCAN clustering for 106 objects.
## Parameters: eps = 0.442122712193792, minPts = 3
## Using euclidean distances and borderpoints = TRUE
## The clustering contains 16 cluster(s) and 15 noise points.
##
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
## 15 25 14 4 4 4 4 4 3 4 4 4 4 4 3 3 3
##
## Available fields: cluster, eps, minPts, dist, borderPoints
##
## [[5]][[4]]
## NULL
##
## [[5]][[5]]
## NULL
##
## [[5]][[6]]
## DBSCAN clustering for 106 objects.
## Parameters: eps = 0.349736076179323, minPts = 3
## Using euclidean distances and borderpoints = TRUE
## The clustering contains 10 cluster(s) and 52 noise points.
##
## 0 1 2 3 4 5 6 7 8 9 10
## 52 24 3 4 4 3 3 4 3 3 3
##
## Available fields: cluster, eps, minPts, dist, borderPoints
#eps=0.53
#table( lista_anomalias_unicas_detectadas[[55]] %in% dados$serie[dados$event==TRUE])
#ok
= compara_anomalias(lista_anomalias_unicas_detectadas[[55]],dados$serie)
c1
$event_dbscan_dist_prob_ts = dados$serie %in% c1[[4]]
dados
$indice = 1:length(dados$serie)
dados= ts(dados$serie,dados$indice)
my_ts plot.ts(my_ts)
points(dados$indice[dados$event=="TRUE"],dados$serie[dados$event], pch = 20, col = "red")
plot.ts(my_ts)
points(dados$indice[dados$event_dbscan_dist_prob_ts=="TRUE"],dados$serie[dados$event_dbscan_dist_prob_ts], pch = 20, col = "red")
V.final4 Para distribuições contínuas Binseg eps automático e distribuições discretas
## introduzindo o binseg discretas
#load("har_examples.RData")
#dados = har_examples$example2
#dados = har_examples$example15
#dados = har_examples$example16
#dados = har_examples$example17
#dados = har_examples$example18
#dados$series = rpois(100,lambda = 3)
= rnbinom(100, size=10, prob=.5)
dados
= list()
teste = list()
dados_anomalia #nomes_dist_aic = list()
= list()
nomes_dist_bic = list()
lista_nomes_dist_bic = list()
probab_anomalias_bic = matrix()
distancias = list()
lista_anomalias_unicas_detectadas = list()
lista_dbscanresult
= function(vetor_serie,
dbscan_dist_prob_ts
tamanho_janela,eps = NULL,
minPts,
limiar) {#list(missing(eps), eps)
<- ts_data(vetor_serie, tamanho_janela)
data_ts_janela
<-
datamatrix matrix(data_ts_janela,
nrow = dim(data_ts_janela)[1],
ncol = tamanho_janela)
= kNNdist(data_ts_janela, k = minPts, all = TRUE)
distancias
<- cpt.meanvar(cumsum(distancias), method = "BinSeg")
Binseg_cp
for (i in 1:length(Binseg_cp@cpts)) {
<-
dbscanResult ::dbscan(datamatrix, eps = distancias[Binseg_cp@cpts[i]], minPts = minPts) # clustering
dbscan
= data.frame(datamatrix)
datamatrix_df
if (any(dbscanResult$cluster == 0)) {
$clusters = dbscanResult$cluster
datamatrix_df
= datamatrix_df %>% filter(clusters == 0)
datamatrix_df_anomalias
= subset(datamatrix_df_anomalias, select = -c(clusters))
datamatrix_df_anomalias
cat(
"Binseg change point for diff",
i,"at location",
@cpts[i],
Binseg_cp"with value",
@cpts[i]],
distancias[Binseg_cp"\n"
)
= dbscanResult
lista_dbscanresult[[i]]
#x11()
= dbscan::kNNdistplot(datamatrix, k = minPts)
grafico_knn abline(h = distancias[Binseg_cp@cpts[i]], lty = 2)
#x11()
= boxplot(data.frame(t(datamatrix_df_anomalias)), plot = "TRUE")
grafico_boxplot
#x11()
= dbscan::hullplot(datamatrix, dbscanResult, main = "DBSCAN")
grafico_dbscan
for (i in 1:dim(datamatrix_df_anomalias)[1]) {
if (class(unlist(datamatrix_df_anomalias[i,])) == "integer") {
#fit_x.1 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "binom")
.2 = fitdistrplus::fitdist(unlist(datamatrix_df_anomalias[i,]), "nbinom")
fit_x.3 = fitdistrplus::fitdist(unlist(datamatrix_df_anomalias[i,]), "geom")
fit_x#fit_x.4 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "hyper")
.5 = fitdistrplus::fitdist(unlist(datamatrix_df_anomalias[i,]), "pois")
fit_x
= gofstat(
teste[[i]] list(fit_x.2, fit_x.3, fit_x.5),
#fit_x.1,, fit_x.4,
fitnames = c(#"Binomial",
"Multinomial",
"Geométrica",
#"Hypergeom�trica",
"Poisson")
)= names(which.min(teste[[i]]$bic))
nomes_dist_bic[[i]] #nomes_dist_bic[[i]] = names(which.min(teste[[i]]$aic))
#cat(
# "Pela m�trica AIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_aic[[i]],
# "\n"
#)
#cat(
# "---------------------------------------------------------------------------------------"
#)
cat(
"Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao:",
nomes_dist_bic[[i]],"\n"
)
}
if (all(datamatrix_df_anomalias[i,] > 0)) {
= fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i,]), "lnorm")
fit_x1 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i,]), "exp")
fit_x2 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i,]), "gamma")
fit_x3 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i,]), "unif")
fit_x4 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i,]), "logis")
fit_x5 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i,]), "norm")
fit_x6
= gofstat(
teste[[i]] list(fit_x1, fit_x2, fit_x3, fit_x4, fit_x5, fit_x6),
fitnames = c(
"lognormal",
"Exponencial",
"Gamma",
"Uniforme",
"logística",
"Normal"
)
)= names(which.min(teste[[i]]$bic))
nomes_dist_bic[[i]] #nomes_dist_bic[[i]] = names(which.min(teste[[i]]$aic))
#cat(
# "Pela métrica AIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_aic[[i]],
# "\n"
#)
#cat(
# "---------------------------------------------------------------------------------------"
#)
cat(
"Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao:",
nomes_dist_bic[[i]],"\n"
)
}
else {
= fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "unif")
fit_x4 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "logis")
fit_x5 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "norm")
fit_x6 = gofstat(
teste[[i]] list(fit_x4, fit_x5, fit_x6),
fitnames = c("Uniforme", "logística", "Normal")
)
#nomes_dist_aic[[i]] = names(which.min(teste[[i]]$aic))
= names(which.min(teste[[i]]$bic))
nomes_dist_bic[[i]] #cat(
# "Pela métrica AIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_aic[[i]],
# "\n"
#)
#cat(
# "---------------------------------------------------------------------------------------"
#)
cat(
"Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao:",
nomes_dist_bic[[i]],"\n"
)
}
= as.numeric(datamatrix_df_anomalias[i, ])
dados_anomalia[[i]]
if (nomes_dist_bic[[i]] == "lognormal") {
= dados_anomalia[[i]] [(
probab_anomalias_bic[[i]] dlnorm(
dados_anomalia[[i]],meanlog = fit_x1$estimate[[1]],
sdlog = fit_x1$estimate[[2]]
< limiar
) == "TRUE"]
)
}if (nomes_dist_bic[[i]] == "exp") {
= dados_anomalia[[i]] [(dexp(dados_anomalia[[i]],
probab_anomalias_bic[[i]] rate = fit_x2$estimate[[1]]) < limiar) ==
"TRUE"]
}if (nomes_dist_bic[[i]] == "gamma") {
= dados_anomalia[[i]] [(
probab_anomalias_bic[[i]] dgamma(
dados_anomalia[[i]],shape = fit_x3$estimate[[1]],
rate = fit_x3$estimate[[2]]
< limiar
) == "TRUE"]
)
}
if (nomes_dist_bic[[i]] == "unif") {
= dados_anomalia[[i]] [(
probab_anomalias_bic[[i]] dunif(
dados_anomalia[[i]],min = fit_x4$estimate[[1]],
max = fit_x4$estimate[[2]]
< limiar
) == "TRUE"]
)
}
if (nomes_dist_bic[[i]] == "logística") {
= dados_anomalia[[i]] [(
probab_anomalias_bic[[i]] dlogis(
dados_anomalia[[i]],location = fit_x5$estimate[[1]],
scale = fit_x5$estimate[[2]]
< limiar
) == "TRUE"]
)
else {
} = dados_anomalia[[i]] [(
probab_anomalias_bic[[i]] dnorm(
dados_anomalia[[i]],mean = fit_x6$estimate[[1]],
sd = fit_x6$estimate[[2]]
< limiar
) == "TRUE"]
)
}
#cat(
# "Pelo método da distribuição, essa janela foi considerada anomalia :",
# as.numeric(datamatrix_df_anomalias[i, ]),
# "\n"
#)
#cat(
# "---------------------------------------------------------------------------------------",
# "\n"
#)
}#lista_nomes_dist_bic[[i]] = nomes_dist_bic
= unique(unlist(probab_anomalias_bic))
lista_anomalias_unicas_detectadas[[i]]
else {
} cat("Não foram detectadas anomalias")
}
}
#grafico_knn = dbscan::kNNdistplot(datamatrix, k = minPts)
# Print the location and value of each change point using the AMOC method
assign("datamatrix_df_anomalias", datamatrix_df_anomalias, envir = .GlobalEnv)
assign("probab_anomalias_bic_por_janela",
probab_anomalias_bic,envir = .GlobalEnv)
assign("lista_nomes_dist_bic", lista_nomes_dist_bic, envir = .GlobalEnv)
assign("dados_anomalia", dados_anomalia, envir = .GlobalEnv)
assign("grafico_knn", grafico_knn, envir = .GlobalEnv)
assign("grafico_dbscan", grafico_dbscan, envir = .GlobalEnv)
assign("grafico_boxplot", grafico_boxplot, envir = .GlobalEnv)
assign("lista_dbscanresult", lista_dbscanresult, envir = .GlobalEnv)
assign("lista_anomalias_unicas_detectadas",
lista_anomalias_unicas_detectadas,envir = .GlobalEnv)
return(
list(
#datamatrix_df_anomalias,
lista_anomalias_unicas_detectadas,#lista_nomes_dist_bic,
dados_anomalia,
lista_dbscanresult
)
)
}
dbscan_dist_prob_ts(
dados,tamanho_janela = 19,
minPts = 3,
limiar = 0.10
)
## Binseg change point for diff 1 at location 62 with value 21.9089
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Binseg change point for diff 2 at location 94 with value 21.47091
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: lognormal
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: lognormal
## Binseg change point for diff 3 at location 126 with value 19.26136
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Normal
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Normal
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Normal
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Normal
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: lognormal
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: lognormal
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: lognormal
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: lognormal
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: lognormal
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: lognormal
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: lognormal
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Binseg change point for diff 4 at location 185 with value 21.51743
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: lognormal
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: lognormal
## Binseg change point for diff 5 at location 216 with value 21.67948
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: lognormal
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: lognormal
## Binseg change point for diff 6 at location 246 with value 21.47091
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: Uniforme
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Poisson
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: lognormal
## Pela m�trica BIC, A distribuicao melhor se ajustou a distribuicao: Multinomial
## Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao: lognormal
## [[1]]
## [[1]][[1]]
## NULL
##
## [[1]][[2]]
## NULL
##
## [[1]][[3]]
## [1] 11 20 7 10 8 15 2 12 18 14 4 5 17 19 13 6 23 9 21
##
## [[1]][[4]]
## NULL
##
## [[1]][[5]]
## NULL
##
## [[1]][[6]]
## NULL
##
## [[1]][[7]]
## NULL
##
## [[1]][[8]]
## NULL
##
## [[1]][[9]]
## NULL
##
## [[1]][[10]]
## NULL
##
## [[1]][[11]]
## NULL
##
## [[1]][[12]]
## NULL
##
## [[1]][[13]]
## [1] 11 20 7 10 8 15 2 12 18 14 4 5 9 6 17 19 13 23 21 16
##
## [[1]][[14]]
## NULL
##
## [[1]][[15]]
## NULL
##
## [[1]][[16]]
## NULL
##
## [[1]][[17]]
## NULL
##
## [[1]][[18]]
## NULL
##
## [[1]][[19]]
## NULL
##
## [[1]][[20]]
## NULL
##
## [[1]][[21]]
## NULL
##
## [[1]][[22]]
## NULL
##
## [[1]][[23]]
## NULL
##
## [[1]][[24]]
## NULL
##
## [[1]][[25]]
## NULL
##
## [[1]][[26]]
## NULL
##
## [[1]][[27]]
## NULL
##
## [[1]][[28]]
## NULL
##
## [[1]][[29]]
## NULL
##
## [[1]][[30]]
## NULL
##
## [[1]][[31]]
## NULL
##
## [[1]][[32]]
## NULL
##
## [[1]][[33]]
## NULL
##
## [[1]][[34]]
## NULL
##
## [[1]][[35]]
## NULL
##
## [[1]][[36]]
## NULL
##
## [[1]][[37]]
## NULL
##
## [[1]][[38]]
## NULL
##
## [[1]][[39]]
## NULL
##
## [[1]][[40]]
## NULL
##
## [[1]][[41]]
## NULL
##
## [[1]][[42]]
## NULL
##
## [[1]][[43]]
## NULL
##
## [[1]][[44]]
## NULL
##
## [[1]][[45]]
## NULL
##
## [[1]][[46]]
## NULL
##
## [[1]][[47]]
## NULL
##
## [[1]][[48]]
## NULL
##
## [[1]][[49]]
## NULL
##
## [[1]][[50]]
## NULL
##
## [[1]][[51]]
## NULL
##
## [[1]][[52]]
## NULL
##
## [[1]][[53]]
## NULL
##
## [[1]][[54]]
## NULL
##
## [[1]][[55]]
## NULL
##
## [[1]][[56]]
## NULL
##
## [[1]][[57]]
## NULL
##
## [[1]][[58]]
## NULL
##
## [[1]][[59]]
## NULL
##
## [[1]][[60]]
## NULL
##
## [[1]][[61]]
## NULL
##
## [[1]][[62]]
## NULL
##
## [[1]][[63]]
## NULL
##
## [[1]][[64]]
## NULL
##
## [[1]][[65]]
## NULL
##
## [[1]][[66]]
## NULL
##
## [[1]][[67]]
## NULL
##
## [[1]][[68]]
## [1] 11 3 9 15 8 12 20 7 10 2 18 14 4 5 6 13 17 19 23 21 16
##
##
## [[2]]
## [[2]][[1]]
## [1] 11 20 7 10 8 11 7 8 15 2 15 12 18 10 14 10 4 18 5
##
## [[2]][[2]]
## [1] 8 15 2 15 12 18 10 14 10 4 18 5 9 4 7 7 9 4 5
##
## [[2]][[3]]
## [1] 15 2 15 12 18 10 14 10 4 18 5 9 4 7 7 9 4 5 5
##
## [[2]][[4]]
## [1] 2 15 12 18 10 14 10 4 18 5 9 4 7 7 9 4 5 5 9
##
## [[2]][[5]]
## [1] 6 17 19 13 10 15 14 14 6 11 10 13 13 15 6 10 20 6 23
##
## [[2]][[6]]
## [1] 17 19 13 10 15 14 14 6 11 10 13 13 15 6 10 20 6 23 5
##
## [[2]][[7]]
## [1] 10 13 13 15 6 10 20 6 23 5 14 9 14 11 18 10 14 11 21
##
## [[2]][[8]]
## [1] 15 6 10 20 6 23 5 14 9 14 11 18 10 14 11 21 10 10 12
##
## [[2]][[9]]
## [1] 6 10 20 6 23 5 14 9 14 11 18 10 14 11 21 10 10 12 4
##
## [[2]][[10]]
## [1] 20 6 23 5 14 9 14 11 18 10 14 11 21 10 10 12 4 6 14
##
## [[2]][[11]]
## [1] 23 5 14 9 14 11 18 10 14 11 21 10 10 12 4 6 14 6 14
##
## [[2]][[12]]
## [1] 14 11 21 10 10 12 4 6 14 6 14 7 18 10 8 7 9 8 8
##
## [[2]][[13]]
## [1] 21 10 10 12 4 6 14 6 14 7 18 10 8 7 9 8 8 16 14
##
## [[2]][[14]]
## [1] 7 8 15 2 15 12 18 10 14 10 4 18 5 9 4 7 7 9 4
##
## [[2]][[15]]
## [1] 8 15 2 15 12 18 10 14 10 4 18 5 9 4 7 7 9 4 5
##
## [[2]][[16]]
## [1] 15 2 15 12 18 10 14 10 4 18 5 9 4 7 7 9 4 5 5
##
## [[2]][[17]]
## [1] 2 15 12 18 10 14 10 4 18 5 9 4 7 7 9 4 5 5 9
##
## [[2]][[18]]
## [1] 15 12 18 10 14 10 4 18 5 9 4 7 7 9 4 5 5 9 11
##
## [[2]][[19]]
## [1] 12 18 10 14 10 4 18 5 9 4 7 7 9 4 5 5 9 11 6
##
## [[2]][[20]]
## [1] 18 10 14 10 4 18 5 9 4 7 7 9 4 5 5 9 11 6 2
##
## [[2]][[21]]
## [1] 10 14 10 4 18 5 9 4 7 7 9 4 5 5 9 11 6 2 4
##
## [[2]][[22]]
## [1] 4 18 5 9 4 7 7 9 4 5 5 9 11 6 2 4 15 6 4
##
## [[2]][[23]]
## [1] 18 5 9 4 7 7 9 4 5 5 9 11 6 2 4 15 6 4 9
##
## [[2]][[24]]
## [1] 4 7 7 9 4 5 5 9 11 6 2 4 15 6 4 9 14 13 14
##
## [[2]][[25]]
## [1] 4 5 5 9 11 6 2 4 15 6 4 9 14 13 14 6 17 19 13
##
## [[2]][[26]]
## [1] 9 11 6 2 4 15 6 4 9 14 13 14 6 17 19 13 10 15 14
##
## [[2]][[27]]
## [1] 11 6 2 4 15 6 4 9 14 13 14 6 17 19 13 10 15 14 14
##
## [[2]][[28]]
## [1] 4 15 6 4 9 14 13 14 6 17 19 13 10 15 14 14 6 11 10
##
## [[2]][[29]]
## [1] 15 6 4 9 14 13 14 6 17 19 13 10 15 14 14 6 11 10 13
##
## [[2]][[30]]
## [1] 6 4 9 14 13 14 6 17 19 13 10 15 14 14 6 11 10 13 13
##
## [[2]][[31]]
## [1] 4 9 14 13 14 6 17 19 13 10 15 14 14 6 11 10 13 13 15
##
## [[2]][[32]]
## [1] 14 13 14 6 17 19 13 10 15 14 14 6 11 10 13 13 15 6 10
##
## [[2]][[33]]
## [1] 13 14 6 17 19 13 10 15 14 14 6 11 10 13 13 15 6 10 20
##
## [[2]][[34]]
## [1] 14 6 17 19 13 10 15 14 14 6 11 10 13 13 15 6 10 20 6
##
## [[2]][[35]]
## [1] 6 17 19 13 10 15 14 14 6 11 10 13 13 15 6 10 20 6 23
##
## [[2]][[36]]
## [1] 17 19 13 10 15 14 14 6 11 10 13 13 15 6 10 20 6 23 5
##
## [[2]][[37]]
## [1] 19 13 10 15 14 14 6 11 10 13 13 15 6 10 20 6 23 5 14
##
## [[2]][[38]]
## [1] 13 10 15 14 14 6 11 10 13 13 15 6 10 20 6 23 5 14 9
##
## [[2]][[39]]
## [1] 10 15 14 14 6 11 10 13 13 15 6 10 20 6 23 5 14 9 14
##
## [[2]][[40]]
## [1] 15 14 14 6 11 10 13 13 15 6 10 20 6 23 5 14 9 14 11
##
## [[2]][[41]]
## [1] 14 14 6 11 10 13 13 15 6 10 20 6 23 5 14 9 14 11 18
##
## [[2]][[42]]
## [1] 14 6 11 10 13 13 15 6 10 20 6 23 5 14 9 14 11 18 10
##
## [[2]][[43]]
## [1] 6 11 10 13 13 15 6 10 20 6 23 5 14 9 14 11 18 10 14
##
## [[2]][[44]]
## [1] 11 10 13 13 15 6 10 20 6 23 5 14 9 14 11 18 10 14 11
##
## [[2]][[45]]
## [1] 10 13 13 15 6 10 20 6 23 5 14 9 14 11 18 10 14 11 21
##
## [[2]][[46]]
## [1] 13 13 15 6 10 20 6 23 5 14 9 14 11 18 10 14 11 21 10
##
## [[2]][[47]]
## [1] 13 15 6 10 20 6 23 5 14 9 14 11 18 10 14 11 21 10 10
##
## [[2]][[48]]
## [1] 15 6 10 20 6 23 5 14 9 14 11 18 10 14 11 21 10 10 12
##
## [[2]][[49]]
## [1] 6 10 20 6 23 5 14 9 14 11 18 10 14 11 21 10 10 12 4
##
## [[2]][[50]]
## [1] 10 20 6 23 5 14 9 14 11 18 10 14 11 21 10 10 12 4 6
##
## [[2]][[51]]
## [1] 20 6 23 5 14 9 14 11 18 10 14 11 21 10 10 12 4 6 14
##
## [[2]][[52]]
## [1] 6 23 5 14 9 14 11 18 10 14 11 21 10 10 12 4 6 14 6
##
## [[2]][[53]]
## [1] 23 5 14 9 14 11 18 10 14 11 21 10 10 12 4 6 14 6 14
##
## [[2]][[54]]
## [1] 14 9 14 11 18 10 14 11 21 10 10 12 4 6 14 6 14 7 18
##
## [[2]][[55]]
## [1] 9 14 11 18 10 14 11 21 10 10 12 4 6 14 6 14 7 18 10
##
## [[2]][[56]]
## [1] 14 11 18 10 14 11 21 10 10 12 4 6 14 6 14 7 18 10 8
##
## [[2]][[57]]
## [1] 11 18 10 14 11 21 10 10 12 4 6 14 6 14 7 18 10 8 7
##
## [[2]][[58]]
## [1] 18 10 14 11 21 10 10 12 4 6 14 6 14 7 18 10 8 7 9
##
## [[2]][[59]]
## [1] 10 14 11 21 10 10 12 4 6 14 6 14 7 18 10 8 7 9 8
##
## [[2]][[60]]
## [1] 14 11 21 10 10 12 4 6 14 6 14 7 18 10 8 7 9 8 8
##
## [[2]][[61]]
## [1] 11 21 10 10 12 4 6 14 6 14 7 18 10 8 7 9 8 8 16
##
## [[2]][[62]]
## [1] 21 10 10 12 4 6 14 6 14 7 18 10 8 7 9 8 8 16 14
##
## [[2]][[63]]
## [1] 10 10 12 4 6 14 6 14 7 18 10 8 7 9 8 8 16 14 9
##
## [[2]][[64]]
## [1] 10 12 4 6 14 6 14 7 18 10 8 7 9 8 8 16 14 9 13
##
## [[2]][[65]]
## [1] 12 4 6 14 6 14 7 18 10 8 7 9 8 8 16 14 9 13 5
##
## [[2]][[66]]
## [1] 4 6 14 6 14 7 18 10 8 7 9 8 8 16 14 9 13 5 8
##
## [[2]][[67]]
## [1] 6 14 6 14 7 18 10 8 7 9 8 8 16 14 9 13 5 8 11
##
## [[2]][[68]]
## [1] 14 6 14 7 18 10 8 7 9 8 8 16 14 9 13 5 8 11 20
##
##
## [[3]]
## [[3]][[1]]
## DBSCAN clustering for 82 objects.
## Parameters: eps = 21.9089023002066, minPts = 3
## Using euclidean distances and borderpoints = TRUE
## The clustering contains 1 cluster(s) and 3 noise points.
##
## 0 1
## 3 79
##
## Available fields: cluster, eps, minPts, dist, borderPoints
##
## [[3]][[2]]
## DBSCAN clustering for 82 objects.
## Parameters: eps = 21.4709105535839, minPts = 3
## Using euclidean distances and borderpoints = TRUE
## The clustering contains 1 cluster(s) and 13 noise points.
##
## 0 1
## 13 69
##
## Available fields: cluster, eps, minPts, dist, borderPoints
##
## [[3]][[3]]
## DBSCAN clustering for 82 objects.
## Parameters: eps = 19.2613602842582, minPts = 3
## Using euclidean distances and borderpoints = TRUE
## The clustering contains 4 cluster(s) and 68 noise points.
##
## 0 1 2 3 4
## 68 5 3 3 3
##
## Available fields: cluster, eps, minPts, dist, borderPoints
##
## [[3]][[4]]
## DBSCAN clustering for 82 objects.
## Parameters: eps = 21.51743479135, minPts = 3
## Using euclidean distances and borderpoints = TRUE
## The clustering contains 1 cluster(s) and 13 noise points.
##
## 0 1
## 13 69
##
## Available fields: cluster, eps, minPts, dist, borderPoints
##
## [[3]][[5]]
## DBSCAN clustering for 82 objects.
## Parameters: eps = 21.6794833886788, minPts = 3
## Using euclidean distances and borderpoints = TRUE
## The clustering contains 1 cluster(s) and 13 noise points.
##
## 0 1
## 13 69
##
## Available fields: cluster, eps, minPts, dist, borderPoints
##
## [[3]][[6]]
## DBSCAN clustering for 82 objects.
## Parameters: eps = 21.4709105535839, minPts = 3
## Using euclidean distances and borderpoints = TRUE
## The clustering contains 1 cluster(s) and 13 noise points.
##
## 0 1
## 13 69
##
## Available fields: cluster, eps, minPts, dist, borderPoints
#eps=0.53
#table( lista_anomalias_unicas_detectadas[[41]] %in% dados$serie[dados$event==TRUE])
#c1 = compara_anomalias(lista_anomalias_unicas_detectadas[[20]],dados$serie)
#
#dados$event_dbscan_dist_prob_ts = dados$serie %in% c1[[4]]
#
#dados$indice = 1:length(dados$serie)
#my_ts = ts(dados$serie,dados$indice)
#plot.ts(my_ts)
#points(dados$indice[dados$event=="TRUE"],dados$serie[dados$event], pch = 20, col = "red")
#plot.ts(my_ts)
#points(dados$indice[dados$event_dbscan_dist_prob_ts=="TRUE"],dados$serie[dados$event_dbscan_dist_prob_ts], pch = #20, col = "red")
V.final5
##backup
### introduzindo o cálculo das probabilidades
#
#load("har_examples.RData")
##dados = har_examples$example15
##dados = har_examples$example16
#dados = har_examples$example17
##dados = har_examples$example18
#dados = rexp(100)
#dados = rpois(100,lambda = 3)
#dados = rbinom(1000,size=10,prob=0.5)
#
#
#
#teste = list()
#dados_anomalia = list()
##nomes_dist_aic = list()
#nomes_dist_bic = list()
#probab_anomalias_bic = list()
#
#
#dbscan_dist_prob_ts2 = function(vetor_serie, tamanho_janela, eps, minPts,limiar) {
# data_ts_janela <- ts_data(vetor_serie, tamanho_janela)
#
# datamatrix <-
# matrix(data_ts_janela,
# nrow = dim(data_ts_janela)[1],
# ncol = tamanho_janela)
#
# dbscanResult <-
# dbscan::dbscan(datamatrix, eps = eps , minPts = minPts) # clustering
#
# datamatrix_df = data.frame(datamatrix)
#
# datamatrix_df$clusters = dbscanResult$cluster
#
# datamatrix_df_anomalias = datamatrix_df %>% filter(clusters == 0)
#
# datamatrix_df_anomalias = subset(datamatrix_df_anomalias, select = -c(clusters))
#
# for (i in 1:dim(datamatrix_df_anomalias)[1]) {
#
# if (class(unlist(datamatrix_df_anomalias[3, ] )) == "integer" ) {
# #fit_x.1 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "binom")
# fit_x.2 = fitdistrplus::fitdist(unlist(datamatrix_df_anomalias[i, ]), "nbinom")
# fit_x.3 = fitdistrplus::fitdist(unlist(datamatrix_df_anomalias[i, ]), "geom")
# #fit_x.4 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "hyper")
# fit_x.5 = fitdistrplus::fitdist(unlist(datamatrix_df_anomalias[i, ]), "pois")
#
# teste[[i]] = gofstat(
# list( fit_x.2, fit_x.3, fit_x.5),
# #fit_x.1,, fit_x.4,
# fitnames = c(
# #"Binomial",
# "Multinomial",
# "Geométrica",
# #"Hypergeométrica",
# "Poisson"
# )
# )
# nomes_dist_bic[[i]] = names(which.min(teste[[i]]$bic))
# #nomes_dist_bic[[i]] = names(which.min(teste[[i]]$aic))
# #cat(
# # "Pela métrica AIC, A distribuicao melhor se ajustou a distribuicao:",
# # nomes_dist_aic[[i]],
# # "\n"
# #)
# #cat(
# # "---------------------------------------------------------------------------------------"
# #)
# cat(
# "Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_bic[[i]],
# "\n"
# )
#
# }
#
# if (all(datamatrix_df_anomalias[i, ] > 0)) {
# fit_x1 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "lnorm")
# fit_x2 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "exp")
# fit_x3 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "gamma")
# fit_x4 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "unif")
# fit_x5 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "logis")
# fit_x6 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "norm")
#
# teste[[i]] = gofstat(
# list(fit_x1, fit_x2, fit_x3, fit_x4, fit_x5, fit_x6),
# fitnames = c(
# "lognormal",
# "Exponencial",
# "Gamma",
# "Uniforme",
# "logística",
# "Normal"
# )
# )
# nomes_dist_bic[[i]] = names(which.min(teste[[i]]$bic))
# #nomes_dist_bic[[i]] = names(which.min(teste[[i]]$aic))
# #cat(
# # "Pela métrica AIC, A distribuicao melhor se ajustou a distribuicao:",
# # nomes_dist_aic[[i]],
# # "\n"
# #)
# #cat(
# # "---------------------------------------------------------------------------------------"
# #)
# cat(
# "Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_bic[[i]],
# "\n"
# )
#
# }
#
# else {
# fit_x4 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "unif")
# fit_x5 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "logis")
# fit_x6 = fitdistrplus::fitdist(as.numeric(datamatrix_df_anomalias[i, ]), "norm")
# teste[[i]] = gofstat(list(fit_x4, fit_x5, fit_x6),
# fitnames = c("Uniforme", "logística", "Normal"))
#
# #nomes_dist_aic[[i]] = names(which.min(teste[[i]]$aic))
# nomes_dist_bic[[i]] = names(which.min(teste[[i]]$bic))
# #cat(
# # "Pela métrica AIC, A distribuicao melhor se ajustou a distribuicao:",
# # nomes_dist_aic[[i]],
# # "\n"
# #)
# #cat(
# # "---------------------------------------------------------------------------------------"
# #)
# cat(
# "Pela métrica BIC, A distribuicao melhor se ajustou a distribuicao:",
# nomes_dist_bic[[i]],
# "\n"
# )
# }
#
# dados_anomalia[[i]] = unlist(datamatrix_df_anomalias[i, ])
#
# #"Binomial",
# #"Hypergeométrica"
#
# if (nomes_dist_bic[[i]] == "Multinomial") {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [(
# dnbinom(
# dados_anomalia[[i]],
# size = fit_x.2$estimate[[1]],
# mu = fit_x.2$estimate[[2]]
# ) < limiar
# ) == "TRUE"]
# }
#
# if (nomes_dist_bic[[i]] == "Geométrica") {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [(
# dgeom(
# dados_anomalia[[i]],
# prob = fit_x.3$estimate[[1]]
# ) < limiar
# ) == "TRUE"]
# }
#
# if (nomes_dist_bic[[i]] == "Poisson") {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [(
# dpois(
# dados_anomalia[[i]],
# lambda = fit_x.5$estimate[[1]]
# ) < limiar
# ) == "TRUE"]
# }
#
##--
# if (nomes_dist_bic[[i]] == "lognormal") {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [(
# dlnorm(
# dados_anomalia[[i]],
# meanlog = fit_x1$estimate[[1]],
# sdlog = fit_x1$estimate[[2]]
# ) < limiar
# ) == "TRUE"]
# }
# if (nomes_dist_bic[[i]] == "exp") {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [(dexp(dados_anomalia[[i]],
# rate = fit_x2$estimate[[1]]) < limiar) ==
# "TRUE"]
# }
# if (nomes_dist_bic[[i]] == "gamma") {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [(
# dgamma(
# dados_anomalia[[i]],
# shape = fit_x3$estimate[[1]],
# rate = fit_x3$estimate[[2]]
# ) < limiar
# ) == "TRUE"]
# }
#
# if (nomes_dist_bic[[i]] == "unif") {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [(dunif(
# dados_anomalia[[i]],
# min = fit_x4$estimate[[1]],
# max = fit_x4$estimate[[2]]
# ) < limiar) == "TRUE"]
# }
#
# if (nomes_dist_bic[[i]] == "logística") {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [(
# dlogis(
# dados_anomalia[[i]],
# location = fit_x5$estimate[[1]],
# scale = fit_x5$estimate[[2]]
# ) < limiar
# ) == "TRUE"]
#
# } else {
# probab_anomalias_bic[[i]] = dados_anomalia[[i]] [(dnorm(
# dados_anomalia[[i]],
# mean = fit_x6$estimate[[1]],
# sd = fit_x6$estimate[[2]]
# ) < limiar) == "TRUE"]
#
# }
#
#
#
#
# #cat(
# # "Pelo método da distribuição, essa janela foi considerada anomalia :",
# # as.numeric(datamatrix_df_anomalias[i, ]),
# # "\n"
# #)
# #cat(
# # "---------------------------------------------------------------------------------------",
# # "\n"
# #)
#
#
# }
#
# grafico_dbscan = dbscan::hullplot(datamatrix, dbscanResult, main="DBSCAN")
#
# grafico_boxplot = boxplot(data.frame(t(datamatrix_df_anomalias)),plot = "TRUE")
#
# grafico_knn = dbscan::kNNdistplot(datamatrix, k = minPts)
#
# assign("datamatrix_df_anomalias",datamatrix_df_anomalias,envir = .GlobalEnv)
# assign("probab_anomalias_bic",probab_anomalias_bic,envir = .GlobalEnv)
# assign("nomes_dist_bic",nomes_dist_bic,envir = .GlobalEnv)
# assign("dados_anomalia",dados_anomalia,envir = .GlobalEnv)
# assign("grafico_knn",grafico_knn,envir = .GlobalEnv)
# assign("grafico_dbscan",grafico_dbscan,envir = .GlobalEnv)
# assign("grafico_boxplot",grafico_boxplot,envir = .GlobalEnv)
# assign("dbscanresult",dbscanResult,envir = .GlobalEnv)
#
# return(
# list(
# #datamatrix_df_anomalias,
# probab_anomalias_bic,
# nomes_dist_bic,
# dados_anomalia,
# dbscanResult
# )
# )
#
#}
#
#dbscan_dist_prob_ts2(dados,tamanho_janela=10,eps=2.2,minPts=3,limiar = 0.05)
#