Você está na página 1de 23

1 AVALIAÇÃO E IMPLEMENTAÇÃO DO ARTIGO: "NONLINEAR

2 LEAST SQUARES ESTIMATION FOR PARAMETERS OF MIXED


3 WEIBULL DISTRIBUTIONS BY USING PARTICLE SWARM
4 OPTIMIZATION"

5 Roberto C. Ferreira

6 E-mail: roberto.ferreira@usp.br

7 RESUMO. Neste artigo avaliamos o algoritmo proposto por Lu et al. (2019) em sua pub-
8 licação (o qual chamaremos de artigo base) através de sua aplicação em dois casos com

9 dados reais dos artigos de Fernandes et al. (2019) e Bothma et al. (2022). Inicialmente de-

10 senvolvemos o algoritmo proposto no artigo base, baseado no método de Otimização por

11 Enxame de Partículas (Particle Swarm Optimization, ou PSO). O artigo base demon-

12 stra a eciência deste método na estimação de parâmetros de distribuição de Weibull

13 mista (Mixed Weibull Distribuition, ou MWD), e mostramos o passo a passo deste

14 desenvolvimento, explicando características especícas tanto da MWD como do PSO.

15 Realizamos a calibração do modelo por nós desenvolvido através dos próprios exemplos

16 utilizados no artigo base. Com o algoritmo devidamente calibrado e aprovado, testamos

17 sua aplicação em dois casos com dados reais de dados que, supostamente, seguem uma

18 MWD, com resultados positivos.

19 Palavras-chave: Otimização por Enxame de Partículas, Distribuição de Weibull Mista,


20 estimação de parâmetros, estimação não linear por mínimos quadrados.

21 ABSTRACT. In this article, we evaluate the algorithm proposed by Lu et al. (2019)


22 in their publication (referred to as the "base article" hereafter) , through its application

23 in two real-data cases from the articles of Fernandes et al. (2019) and Bothma et al.

24 (2022). Initially, we develop the algorithm as proposed in the base article, which is based

25 on the Particle Swarm Optimization (PSO) method. The base article demonstrates the

26 eciency of this method in estimating parameters of the Mixed Weibull Distribution

27 (MWD), and we provide a step-by-step account of this development, explaining specic

28 characteristics of both the MWD and PSO. We calibrate the model we have developed

29 using the examples provided in the base article. With the algorithm properly calibrated

30 and validated, we test its application in two real-data cases that are supposed to follow

31 an MWD, yielding positive results.

1
1 Keywords: Particle Swarm Optmization, mixed Weibull distribution, parameter esti-
2 mation, nonlinear least squares estimation

3 1 Introdução

4 Estou iniciando um estudo sobre a distribuição de Weibull, distribuição chave


5 para modelar eventos de falha ou degradação ao longo do tempo, entre outros.
6 Sabemos que a soma de distribuições de Weibull geralmente não segue uma dis-
7 tribuição Weibull simples, dicultando uma formulação analítica geral para a
8 distribuição resultante. Isso pode dicultar o cálculo de estatísticas importantes,
9 como a função de densidade de probabilidade (PDF) ou a função de distribuição
10 acumulativa (CDF) da soma.
11 No contexto da Programação não Linear (PNL) é possível utilizar algoritmos de
12 otimização, como o Particle Swarm Optimization (PSO), para lidar com proble-
13 mas que envolvem distribuições de probabilidade, como a distribuição de Weibull,
14 quando essas distribuições estão relacionadas a parâmetros de um modelo matemático
15 a ser otimizado. Nesse contexto, algoritmos de otimização como o PSO podem
16 ser aplicados para encontrar os valores dos parâmetros da distribuição de Weibull
17 que melhor se ajustam aos dados observados. O objetivo pode ser maximizar
18 a verossimilhança dos dados ou minimizar uma função de erro, dependendo da
19 formulação do problema. Resolvi, então, buscar um problema que envolvesse este
20 tema, permitindo conhecer uma nova técnica de otimização não linear associado à
21 distribuição Weibull que é de interesse para o desenvolvimento do meu trabalho.
22 Com este objetivo z, então, uma revisão bibliográca a respeito deste tema, e
23 resolvi analisar mais detalhamente o artigo desenvolvido por Zhong Lu, Li Dong
24 e Jia Zhou Lu et al. (2019). Dado que o modelo apresentado no artigo demon-
25 strou vantagens em relação a outros modelos de otimização, a ideia foi estudá-lo
26 e simular em determinadas situações, sendo talvez uma ferramenta para o desen-
27 volvimento de trabalhos voltados à minha tese. O objetivo deste estudo foi, desta
28 forma, baseado no artigo, realizar uma análise detalhada de seu conteúdo e de
29 algumas bibliograas citadas, desenvolver o algoritmo para resolver o problema
30 utilizado em seu desenvolvimento comparando os resultados obtidos e, conr-
31 mando sua validação, aplicar o algoritmo em problemas similares para analisar
32 sua viabilidade.
33 Um artigo similar, que também utilizei como fonte de análise, foi desenvolvido
34 por Okafor, E.G et all Okafor et al. (2019). Como no caso do artigo de Zhong
35 Lu, ele mostra os excelentes resultados obtidos na estimação dos parâmetros da
36 distribuição de Weibull através do algoritmo de PSO.

2
1 Estes trabalhos apontam diversos artigos relacionados aos temas de otimização
2 através da técnica de PSO, bem como à distribuição de Weibull. Os principais
3 que me ajudaram na análise ou que poderão ser parte de futuros estudos estão
4 citados no item de bibliograa deste artigo.

5 2 Métodos

6 Nesta seção descrevemos o método utilizado para validação do algoritmo utilizado


7 no artigo e sua utilização em outras bases de dados.

8 2.1 Análise do Artigo

9 O artigo apresenta o método PSO - "Particle Swarm Optmization" para deter-


10 minação de valores aproximados dos parâmetros distribuição de Weibull mista
11 através do método de estimação não linear de mínimos quadrados (LSE), e compara-
12 o a outros dois modelos de otimização: modelo "genetic algorithm (GA) baseado
13 no método não linear LSE, e o método de estimativa por máxima verossimilhança
14 (MLE). A conclusão é que o algoritmo desenvolvido através do PSO apresentou
15 vantagens signicativas em relação à eciência.
16 Em sua parte introdutória ele apresenta uma vasta bibliograa relacionada aos
17 temas. Alguns dos principais artigos e que considero que poderão fazer parte
18 de estudos mais detalhados e voltados às minhas necessidades estão citados na
19 bibliograa deste documento. Em seguida ele apresenta as denições conceituais
20 relacionadas à distribuição de Weibull mista.
21 Denido que seria utilizado o PSO como base para elaboração de um algoritmo que
22 seria utilizado para minimizar a somatória dos desvios relativos entre os valores
23 reais da função de distribuição e os valores previstos pelo modelo, inicialmente ele
24 apresenta um modelo para denição dos valores aproximados dos parâmetros das
25 distribuições que servem como base para a distribuição mista e, a partir deles, a
26 denição de limites rugosos, objetivando a denição de pontos iniciais adequados
27 na utilização do modelo de otimização através de enxame de partículas (Particle
28 Swarm Optimization  PSO). A partir do estabelecimento de pontos e velocidades
29 iniciais, o PSO é apresentado passo a passo na solução do LSE para estimação dos
30 parâmetros da distribuição mista de Weibull. A gura 1 apresenta um diagrama
31 de uxo com o procedimento PSO.
32 Em seguida, o artigo apresenta um estudo de caso simulado, gerando dados de
33 uma distribuição mista de Weibull a partir da geração aleatória de dados para
34 três distribuições de Weibull (distribuições-base) com parâmetros distintos. Estes

3
Figure 1: Diagrama de uxo do processo de estimativa de parâmetros usando o
PSO-LSE

1 dados gerados, chamados de t-values, são a base para a aplicação do algoritmo


2 desenvolvido.
3 A parte nal do artigo é dedicada à comparação dos resultados obtidos com o
4 algoritmo em relação aos outros dois métodos ("GA based nonlinear LSE" e "MLE
5 method"), concluindo que os três métodos são ecientes em seus objetivos, com o
6 PSO apresentando resultados com maior acurácia e um algoritmo mais eciente.

7 2.2 Desenvolvimento do primeiro modelo

8 Desenvolvemos um código para o procedimento de estimação dos parâmetros da


9 distribuição de Weibull mista, em linguagem R, reproduzindo as equações apre-
10 sentadas no artigo. O código desenvolvido está no anexo II deste documento.
11 A estrutura do procedimento está constituída por 5 passos:
12 1. Denição dos intervalos rugosos dos parâmetros das distribuições-base a partir
13 das estimativas dos parâmetros das distribuições-base. Os dados da amostra de
14 valores (t-values, ou seja, os tempos) são transformados (a base é a linearização da
15 equação da distribuição de Weibull - maiores detalhes podem ser vistos no artigo
16 Lu et al. (2019) ) e plotados em um gráco sequencial crescente. A visualização
17 gráca permite identicar os pontos de inexão (que representam as "fronteiras"

4
1 entre as distribuições de Weibull que constituem o conjunto de dados base) e
2 estimar os parâmetros das (n) retas resultantes. Com algumas transformações,
3 estimam-se os parâmetros das distribuições-base;
4 2. Inicialização da posição das partículas e velocidades. A base inicial do algo-
5 ritmo PSO são formadas pelas matrizes de partículas Theta (que é uma população
6 de dados para os parâmetros desconhecidos das distribuições-base), criada com
7 os dados iniciais (ponto inicial dos algoritmos de otimização), e de velocidades
8 V-Theta (que constituem a taxa de alteração dos dados dos parâmetros, ou seja,
9 da matriz de partículas, nas iterações). Estas matrizes são geradas a partir dos
10 intervalos rugosos previamente estabelecidos;
11 3. Inicialização das melhores posições locais e global. A matriz de partículas, asso-
12 ciada aos t-values, permite calcular os valores da função de densidade acumulada
13 da distribuição de Weibull mista; comparando-os com a função empírica baseada
14 nos dados da amostra, pode-se calcular o erro relativo, resultando na função de
15 ajuste. Estas posições iniciais passam a ser as melhores posições locais (P-Best).
16 A melhor posição local (ou seja, o melhor resultado inicial) é, automaticamente,
17 a melhor posição global (G-Best).
18 4. Atualização da matriz de partículas Theta e da matriz de velocidades V-
19 Theta. Os melhores valores já encontrados formam uma base, junto com outros
20 componentes aleatórios, para a atualização das matrizes. Estas matrizes, por sua
21 vez, atualizam as melhores posições locais. Finalmente, a melhor posição local
22 passa a ser a melhor posição global caso ela seja melhor que a melhor posição
23 global anterior;
24 5. O passo 4 é repetido iterativamente por k vezes, ou até que o ajuste entre as
25 iterações seja menor que uma tolerância pré-estabelecida. A melhor posição nal
26 (G-Best) é a melhor estimativa alcançada para os parâmetros da distribuição de
27 Weibull mista.

28 2.3 Calibração do modelo

29 Para a calibração do modelo utilizamos as próprias informações e dados utilizados


30 no artigo base. O artigo dene, para os t-values (que representariam uma amostra
31 de dados "reais"), uma amostra de 200 valores resultantes da geração de valores
32 de três distribuições de Weibull (de tamanho 40, 120 e 40, respectivamente). No
33 algoritmo que desenvolvemos esta geração pode ser feita de forma aleatória para
34 as três distribuições. Para a calibração, utilizamos os próprios 200 valores do
35 artigo base.
36 Como o artigo base não separa os 200 dados de tempos entre as três distribuições-
37 base, para a estimação dos parâmetros iniciais e intervalos rugosos (passo 1

5
1 da subseção anterior) geramos 200 amostras aleatórias de tempos para as três
2 distribuições-base, utilizando os parâmetros indicados no artigo base para cada
3 distribuição-base, a saber:
4 a. Subpopulação 1 (40 amostras) α1 = 800 β1 = 0.5
5 b. Subpopulação 2 (120 amostras) α2 = 1200 β2 = 3
6 c. Subpopulação 3 (40 amostras) α3 = 2000 β3 = 1
7 Para a estimação dos parâmetros de cada subpopulação existente no conjunto
8 de dados, inicialmente transformamos os dados buscando identicar gracamente
9 três segmentos de reta distintos, como segue:
10 a. A distribuição simples de Weibull é expressa como:

t β
11 F (t) = 1 − e−( α ) (1)

12 b. Esta equação pode ser linearizada da seguinte forma:


13 ln (− ln [1 − F (t)]) = β ln(t) − β ln(α) (2)

14 c. As 200 amostras aleatórias geradas e suas correspondentes funções de dis-


15 tribuição empíricas podem ser transformadas da seguinte forma:

16 xj = ln(tj ) (3)
17
18 yj = ln [− ln (1 − F (tj ))] (4)
19 onde j = 1, 2, . . . , 200.
20 d. Pela equação (2), a inclinação da i-ésima reta é o valor aproximado do
21 parâmetro de forma βi .
22 e. De acordo com os dois pontos de inexão denidos, a quantidade de pontos
23 que formam cada uma das três retas denem a estimativa do parâmetro de peso
24 de cada fator:
mi
25 pi = (5)
200
26 onde mi é a quantidade de cada população estimada
27 f. Finalmente, como para cada distribuição temos que a função distribuição é
28 estimada por:
j(α)
29 F (α) = (6)
m
30 Onde j(α) é o número ordinal da amostra de tempos cujo valor se aproxima de
31 α. Como a equação da função de distribuição Weibull (1), para t = α, é:
32 F (α) = 1 − e−1 (7)

6
1 Consequentemente,
2 j(α) = m · (1 − e−1 ) (8)
3 Então, para cada subpopulação, temos:

4 ji (α) = [mi · (1 − e−1 )] (9)

5 e, portanto, a ji-ésima(α) amostra relativa à i-ésima reta é aproximadamente o


6 valor do parâmetro αi .
7 A gura 2 é um exemplo de gráco com os dados de tempos do artigo, para
8 estimação dos parâmetros iniciais do modelo, com o qual chegamos aos parâmetros
9 estimados e aos limites rugosos descritos na tabela 1.

Figure 2: Gráco sequencial dos tempos (t-values) transformados

Table 1: Parâmetros e limites rugosos estimados

Valor ou
Limite p1 p2 p3 α1 α2 α3 β1 β2 β3
Valor 0.16 0.74 0.11 128 1079 3547 0.36 1.71 0.84
Lim. Sup. 0.36 0.94 0.305 603 2313 3901 0.54 2.56 1.26
Lim. Inf. 0.00 0.54 0.00 115 1079 2313 0.18 0.85 0.42

10 A partir destes parâmetros utilizamos o algoritmo desenvolvido para calcular os


11 parâmetros da distribuição Weibull mista. O gráco da gura 3 mostra o processo
12 evolutivo (valor do erro relativo) para uma simulação do algoritmo PSO em função
13 do número de iterações realizadas. A tabela 2 apresenta os valores resultantes
14 para a distribuição de Weibull mista, que permitem uma comparação com os
15 resultados apresentados no artigo e a conclusão sobre a validação da calibração
16 nal do modelo.

7
Figure 3: Processo evolutivo do algoritmo baseado no PSO

Table 2: Valores estimados para os Parâmetros

Algoritmo p1 p2 p3 α1 α2 α3 β1 β2 β3
Nosso 0.18 0.67 0.15 252 1083 2758 0.58 2.73 1.34
Artigo-base 0.23 0.59 0.18 695 1051 1765 0.41 2.82 1.72

1 Para a comparação nal do modelo desenvolvido desenhamos a curva da CDF


2 obtida a partir do nosso modelo e a correspondente obtida no modelo do artigo.
3 A gura 4 mostra diferenças mínimas entre estas curvas, validando a calibração
4 do modelo desenvolvido.

5 2.4 Aplicação do modelo em outras bases de dados

6 Uma vez com o modelo devidamente calibrado, procedemos a aplicá-lo utilizando


7 outras instâncias, para analisar sua adequação e facilidade na estimação de parâmet-
8 ros de possíveis distribuições de Weibull mistas. Analisamos para dois conjuntos
9 de dados.

10 2.4.1 Caso 1: resistência à quebra de bras de carbono


11 O primeiro conjunto foi utilizado no artigo Fernandes et al. (2019), e está repro-
12 duzido na tabela 5, no anexo I.
13 Aplicamos o algoritmo para este conjunto de dados. Inicialmente detectamos três
14 distribuições, conforme observamos na gura 5.

8
Figure 4: CDFs do modelo do artigo e de nosso modelo

Figure 5: Dados da tabela 3 transformados

1 A partir desta identicação, estabelecemos os cortes nos pontos 0,8 e 1,4 para que
2 o algoritmo gerasse as três distribuições constituintes da distribuição mista resul-
3 tante. Finalmente, utilizamos o algoritmo desenvolvido para estimar os parâmet-
4 ros desta distribuição. A gura 6 apresenta o processo evolutivo do PSO e a
5 tabela 3 apresenta os parâmetros estimados para a distribuição de Weibull mista.

9
Figure 6: Processo evolutivo do PSO

Table 3: Valores estimados para os Parâmetros - caso 1

p1 p2 p3 α1 α2 α3 β1 β2 β3
Estimativas 0,327 0,673 0,000 2,010 3,253 4,725 3,112 4,187 8,882

1 2.4.2 Caso 2: tempo de vida em dias após detecção de leucemia em


2 43 pacientes
3 O segundo conjunto foi utilizado no artigo Bothma et al. (2022), e está reproduzido
4 na tabela 6, anexo I.
5 Aplicamos o algoritmo para este conjunto de dados. Detectamos três distribuições,
6 conforme observamos na gura 7.
7 Estabelecemos, então, os cortes nos pontos 4,7 e 5,9 para que o algoritmo gerasse
8 as três distribuições constituintes da distribuição mista resultante. Finalmente,
9 utilizamos o algoritmo desenvolvido para estimar os parâmetros desta distribuição.
10 A gura 8 apresenta o processo evolutivo do PSO e a tabela 4 apresenta os
11 parâmetros estimados para a distribuição de Weibull mista.

Table 4: Valores estimados para os Parâmetros - caso 2

p1 p2 p3 α1 α2 α3 β1 β2 β3
Estimativas 0,01 0,01 0,98 110 467 997 0,462 0,929 1,231

10
Figure 7: Dados da tabela 3 transformados

Figure 8: Processo evolutivo do PSO

1 3 Resultados

2 3.1 Validação do modelo desenvolvido em relação ao proposto


3 pelo artigo base

4 Na parte inicial do algoritmo, no qual são estimados os parâmetros das dis-


5 tribuições simples de Weibull a partir dos dados da amostra (t-values), obtivemos
11
1 valores um pouco diferentes aos descritos no artigo. A diferença provavelmente é
2 resultado de métodos distintos para denição das retas resultantes apresentadas
3 na gura 2. Estes valores servem para a denição dos limites rugosos que, por sua
4 vez, servem apenas para a denição da posição inicial das partículas e velocidades.
5 Como o algoritmo é baseado na metodologia do PSO, que é um método de busca
6 global e, portanto, depende menos desta posição inicial em relação aos métodos
7 tradicionais de otimização, estas diferenças não modicaram os resultados nais
8 do algoritmo desenvolvido. Em algumas simulações realizadas para calibração do
9 modelo, o número de iterações no algoritmo desenvolvido foi um pouco superior
10 á média descrita no artigo base, e estas diferenças podem ser a causa.
11 Nestas mesmas simulações sempre comparamos a CDF do modelo desenvolvido
12 no artigo base com a CDF resultante da simulação. A gura 4 apresentada an-
13 teriormente é a principal identicação da adequação do modelo. Também com-
14 paramos os valores do erro relativo resultante ("tness", ou LSE resultante) aos
15 valores apresentados no artigo base. Em ambos os modelos o erro encontrado
16 foi de aproximadamente 0,012. O resultado, desta forma, pode ser considerado
17 excelente.

18 3.2 Validação do algoritmo desenvolvido em relação a outras


19 bases de dados

20 Aplicamos o algoritmo desenvolvido em outras duas bases de dados obtidas em


21 artigos cientícos publicados. Em ambos os casos realizamos simulações limi-
22 tando o número de iterações. Diferentemente do caso quando utilizamos dados
23 gerados a partir de três distribuições simples de Weibull, o algoritmo apresenta
24 um processo evolutivo em direção ao ótimo bem mais lento, o que é esperado. Os
25 valores de erro relativo, nestes casos, foram respectivamente em torno de 0,051 e
26 0,038. Futuramente realizaremos testes mais robustos, aumentando o número de
27 iterações e alterando as quantidades e valores de cortes nos dados das amostras
28 transformadas, para analisar a convergência resultante.

29 4 Conclusões e Futuras Perspectivas

30 O trabalho realizado permitiu desenvolver um algoritmo no programa R tendo


31 como base o método de Otimização por Enxame de Partículas (PSO) para esti-
32 mação dos parâmetros de uma distribuição de Weibull mista a partir da identi-
33 cação de distribuições simples constituintes. O processo de calibração do modelo
34 foi determinante para a sua adequação.
35 A aplicação do modelo desenvolvido utilizando bases de dados reais mostrou que

12
1 o método sempre converge para uma solução otimizada, mesmo que a um ritmo
2 mais lento. A maior diculdade reside em identicar a existência de distribuições
3 simples que sejam as constituintes da distribuição resultante. Outras técnicas
4 para esta identicação poderiam ser melhor exploradas.
5 Futuramente poderiam ser utilizadas outras técnicas e análises para se concluir
6 sobre a adequação da distribuição estimada pelo algoritmo aos dados reais, e
7 compará-lo a outras técnicas de estimação de parâmetros de distribuições de
8 Weibull mistas.

13
1 References

2 Bothma, E., Allison, J., and Visagie, I. (2022). New classes of tests for the weibull
3 distribution using stein's method in the presence of random right censoring.
4 "Computational Statistics", 37(4):17511770. https://doi.org/10.1007/s00180-
5 021-01178-0.
6 Fernandes, F. H., Lee Ho, L., and Bourguignon, M. (2019). About shewhart
7 control charts to monitor the weibull mean. Quality and Reliability Engineering
8 International, 35(7):23432357.
9 Jiang, H., Wang, J., Wu, J., and Geng, W. (2017). Comparison of numerical
10 methods and metaheuristic optimization algorithms for estimating parameters
11 for wind energy potential assessment in low wind regions. Renew. Sustain.,
12 pages 11991217.
13 Lu, Z., Dong, L., and Zhou, J. (2019). Nonlinear least squares estimation for
14 parameters of mixed weibull distributions by using particle swarm optimization.
15 IEEE Access, PP:11.
16 Lu, Z., Sun, Y., and Zhou, J. (2010). Particle swarm optimization based nonlinear
17 least-squares parameter estimation of maintenance time distribution. Proc. Int.
18 Colloq, pages 590593.
19 Ma, D., Deng, J., and Zhang, Z. (2013). Comparison and improvements of opti-
20 mization methods for gas emission source identication. Atmos., pages 188198.
21 Ma, D., Tan, W.and Zhang, Z., and Hu, J. (2018). Gas emission source term
22 estimation with 1-step nonlinear partial swarm optimization-tikhonov regular-
23 ization hybrid method. Chin. J. Chem. Eng., pages 356363.
24 Ma, D. e. a. (2013). Application and improvement of swarm intelligence opti-
25 mization algorithm in gas emission source identication in atmosphere. J. Loss
26 Prevention Process Ind., pages 188198.
27 Okafor, E., Ezugwu, E., Jemitola, P., Sun, Y., and Lu, Z. (2019). Weibull param-
28 eter estimation using particle swarm optimization algorithm.
29 Okafor, E. G., Ezugwu, O. E., Jemitola, P. O., and Sun, Y. andLu, Z. (2018).
30 Weibull parameter estimation using particle swarm optimization algorithm. In-
31 ternational Journal of Engineering -Technology, pages 710.
32 Örkcü, H. H., Özsoy, V. S., Aksoy, E., and Dogan, M. I. (2015). Estimating the
33 parameters of 3-p weibull distribution using particle swarm optimization: A
34 comprehensive experimental comparison. Appl. Math, pages 201226.

14
1 A Anexo I - Dados utilizados na aplicação do algoritmo
2 desenvolvido

Table 5: Conjunto de dados relacionado à resistência à quebra de bras de carbono


(G-Pascal).

Sample X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
1 3,7 2,74 2,73 2,5 3,6 1,41 3,68 2,97 1,36 0,98
2 3,11 3,27 2,87 1,47 3,11 2,76 4,91 3,68 1,84 1,59
3 4,42 2,41 3,19 3,22 1,69 3,19 1,57 0,81 5,56 1,73
4 3,28 3,09 1,87 3,15 4,9 1,59 2 1,22 1,12 1,71
5 3,75 2,43 2,95 2,97 3,39 2,17 1,17 5,08 2,48 1,18
6 2,96 2,53 2,67 2,93 3,22 3,51 2,17 1,69 1,25 4,38
7 3,39 2,81 4,2 3,33 2,55 1,84 0,39 3,68 2,48 0,85
8 3,31 3,31 2,85 2,56 3,56 1,61 2,79 4,7 2,03 1,8
9 3,15 2,35 2,55 2,59 2,38 1,57 1,08 2,03 1,61 2,12
10 2,81 2,77 2,17 2,83 1,92 1,89 2,88 2,82 2,05 3,65

Table 6: Conjunto de dados relacionado a tempo de vida (em dias) após leucemia
detectada.

7 715 2056 47 779 2260 58 881 2429 2509


74 177 232 273 285 317 429 440 445 455
468 495 900 930 968 1077 1109 1314 1334 1367
1534 1712 1784 571 579 581 650 702 497 532
1886 2045 1877

3 B Anexo II - Algoritmo PSO-MWD em R

Listing 1: Algoritmo em R
4 # Para facilitar , segue nomenclatura do artigo base
5 # ### II Problem Statement ####
6 # A . MWD - F(t , param ) (3) ####
7
8 F <- function (t , param ) {
9 n <- length ( param ) /3 # N ú mero de subpopula ç õ es ( nú mero de colunas da matriz theta / 3)
10 result <- 1
11
12 for ( i in 1: n) {
13 pi <- param [i] # Peso da subpopula ção i
14 beta <- param [i+n ] # Par â metro de forma da subpopula ção i

15
1 alpha <- param [ i +2 *n ] # Par â metro de escala da subpopula ção i
2
3 result <- result - ( pi * exp ( -(( t / alpha ) ^ beta )))
4
5 }
6 return ( result )
7 }
8
9 # B . Empirical Distribution Functions ####
10 # ####### Fun ção Festim (7) e (8)
11
12 Festim <- function (t , j , m , t1 , tm ) {
13 if (t < t1 ) {
14 result <- 0
15 } else {
16 if (m >= 20) {
17 result <- j / m
18 } else {
19 result <- (j - 0.3) / (m + 0.4)
20 }
21 }
22
23 # Condi ç ão para t >= tm
24 if (t >= tm ) {
25 result <- 1 -0.00000000000001 # se deixar 1 dá problema no cá lculo do ú ltimo yj ( ln (0))
26 }
27
28 return ( result )
29 }
30 # C . NonLinear LSE - Model ( Fun ção objetivo ) ####
31 # Fun ção objetivo para otimiza ção (9)
32
33 f_ fit <- function ( param , t_ values , Festim ) {
34 m <- length ( t_ values )
35 n = length ( param )/ 3 # nú mero de subpopula ç õ es
36 lse = 0
37 t1 = t_ values [1]
38 tm = t_ values [m]
39 Festim _ inf =0
40 for ( j in 1: m) {
41
42 tj <- t_ values [j ]
43 F_ tj <- F(tj , param )
44 lse <- lse + (( Festim _ inf + Festim [j ]) /2 - F_ tj )^2 # alterei na V2
45 Festim _ inf = Festim [j]
46 }
47 return ( lse )
# retorno a soma dos res í duo entre os m tempos de amostra
48 }
49 # ### III . PSO Solution .... ####
50 # A . Estimando os par â metros da MWD ####
51 ## Fun çã o para transformar os dados das amostras em coordenadas ( xj , yj )
52
53 transform _ data <- function (t_ values ,m , Festim ) {
54
55 data _ transformed <- data . frame ( xj = numeric (m), yj = numeric ( m ))
56 for ( j in 1: m) {
57 tj <- t_ values [j ]
58 data _ transformed $ xj [j] <- log ( tj )

16
1 data _ transformed $ yj [j] <- log (- log (1 - Festim [j ])) # (12)
2 }
3
4 return ( data _ transformed )
5 }
6
7 ## Fun çã o para plotar o gr á fico com os dados transformados
8 plot _ data <- function ( data ) {
9 plot ( data $xj , data $yj , pch =16 , col =" blue " , xlab = " ln ( tj )" , ylab = " ln { - ln [1 - Festim ( tj )]} " )
10
11 # Adicionar eixos verticais para cada unidade no eixo x
12 xmin <- floor ( min ( data $ xj ))
13 xmax <- ceiling ( max ( data $ xj ))
14 for ( x_ unit in seq ( xmin , xmax )) {
15 for ( i in 0:4) {
16 abline (v = x _ unit +0.2 *i , col = " gray " , lty = " dotted ")
17 }
18 }
19
20 # Definir intervalos para o eixo x
21 axis (1 , at = xmin : xmax , labels = xmin : xmax )
22 }
23
24 ## Fun çã o para cá lculo dos par â metros rugosos da MWD ####
25 calculate _ bounds <- function (p_ estimado , alpha _ estimado , beta _ estimado ) {
26 n <- length ( p_ estimado )
27
28 # Inicializar vetores para armazenar as bounds aproximadas
29 p_ lower <- numeric (n)
30 p_ upper <- numeric (n)
31 alpha _ lower <- numeric (n)
32 alpha _ upper <- numeric (n)
33 beta _ lower <- numeric ( n)
34 beta _ upper <- numeric ( n)
35
36 # Calcular bounds aproximadas para p
37 for ( i in 1: n) {
38 p_ lower [i ] <- max ( p_ estimado [ i] - 0.2 , 0) # (17)
39 p_ upper [i ] <- min ( p_ estimado [ i] + 0.2 , 1)
40 }
41
42 # Calcular bounds aproximadas para alpha
43 for ( i in 1: n) {
44 if (i > 1) {
45 alpha _ lower [i] <- ( alpha _ estimado [i -1] + alpha _ estimado [ i ]) / 2
46 } else {
47 alpha _ lower [i] <- 0.9 * alpha _ estimado [i ] # (18)
48 }
49
50 if (i < n) {
51 alpha _ upper [i] <- ( alpha _ estimado [i +1] + alpha _ estimado [ i ]) / 2
52 } else {
53 alpha _ upper [i] <- 1.1 * alpha _ estimado [i ] # (19)
54 }
55 }
56
57 # Calcular bounds aproximadas para beta
58 for ( i in 1: n) {

17
1 beta _ lower [i] <- max (0.5 * beta _ estimado [i] , 0)
2 beta _ upper [i] <- 1.5 * beta _ estimado [ i] # (20)
3 }
4
5 # Criar uma lista com os vetores de bounds
6 bounds <- list (p_ lower = p _ lower , p_ upper = p _ upper ,
7 alpha _ lower = alpha _ lower , alpha _ upper = alpha _ upper ,
8 beta _ lower = beta _ lower , beta _ upper = beta _ upper )
9
10 return ( bounds )
11 }
12 # Fun ção para calcular w (k) conforme a equa ção (29) ####
13
14 calculate _w <- function (k , a) {
15 return (0.4 + 0.5 * (1 - 10^ - a )^ k)
16 }
17
18 # ## PSO _ MWD Algoritmo e Par â metros de entrada e Algoritmo PSO _ MWD ####
19
20 PSO _ MWD = function ( cortes ,q ,a ,c1 ,c2 ,K , Eps _ 1, Eps _ 2, t _ values , data _ transformed , Festim ) {
21 start _ time = Sys . time ()
22 # ## III . A. Cá lculos par â metros alpha , beta e p - generalizando para qualquer n (14) a (16)
23 n = length ( cortes )+1
24 m = length (t _ values )
25
26 # Inicializar vetores para armazenar os resultados
27 beta <- numeric (n ) # Coeficientes beta
28 alpha <- numeric (n) # Valores de alpha
29 p <- numeric (n) # Valores de p
30
31 # Dividir os dados em n segmentos usando os cortes
32 segmentos <- list ()
33 mpop <- numeric (n ) # tamanho de cada segmento
34 for (i in 1: n) {
35 if (i == 1) {
36 segmentos [[ i ]] <- data _ transformed [ data _ transformed $ xj <= cortes [i], ]
37 } else if (i == n) {
38 segmentos [[ i ]] <- data _ transformed [ data _ transformed $ xj > cortes [i -1] , ]
39 } else {
40 segmentos [[ i ]] <- data _ transformed [ data _ transformed $xj > cortes [i -1]
41 & data _ transformed $xj <= cortes [i ], ]
42 }
43 mpop [i] <- nrow ( segmentos [[ i ]])
44 }
45
46 # Ajustar uma reta para cada segmento usando a fun ção lm
47 for ( i in 1: n) {
48 modelo <- lm ( yj ~ xj , data = segmentos [[ i ]])
49 beta [i] <- coef ( modelo )[[2]]
50 }
51
52 # Calcular os valores de p e alpha ( ji é simo valor da amostra da subpop .) para cada subpop .
53 macum =0
54 for ( i in 1: n) {
55 p[i ] <- mpop [ i] / m
56 alpha [ i] = t_ values [ macum + mpop [ i]* (1 - exp ( -1))]
57 macum = macum + mpop [i ]
58 }

18
1
2 # Imprimir os resultados
3 for (i in 1: n) {
4 print ( paste (" Subpopula ção" ,i ,": beta =" , beta [i ]," ,p =" ,p[ i], " , alpha =" , mean ( alpha [i ])))
5 }
6 # ########## III . A . Cá lculo dos intervalos rugosos de cada par â metro
7
8 bounds = calculate _ bounds (p , alpha , beta )
9
10 ## B. STEP BY STEP PROCEDURE ####
11 theta <- array ( dim = c(q , 3* n )) # (21)
12 V_ theta <- array ( dim = c(q , 3*n )) # (22)
13 pbest <- array ( dim = c(q , 3* n ))
14
15 # STEP 1: Inicializar as posi çõ es das part í culas ( theta ) e as velocidades (V - theta ) ####
16 # e
17 # STEP 2 - Initialize Local and Global Best Known Positions ####
18
19 pi _ lower <- bounds $p_ lower
20 pi _ upper <- bounds $p_ upper
21 alpha _ lower <- bounds $ alpha _ lower
22 alpha _ upper <- bounds $ alpha _ upper
23 beta _ lower <- bounds $ beta _ lower
24 beta _ upper <- bounds $ beta _ upper
25
26 f_ fit _ min <- 100 # apenas para iniciar a vari á vel que retornar á o fit mí nimo
27 for ( l in 1: q) {
28 rand _p <- runif (1) # ## crio um nú mero randomico para cada part í cula ,
29 rand _ beta <- runif (1) # ## mas igual para cada subpopula ção
30 rand _ alpha <- runif (1)
31 rand _ vp <- runif (1)
32 rand _ vbeta <- runif (1)
33 rand _ valpha <- runif (1)
34
35 # ### Part í culas
36 for ( i in 1: n) {
37 # Posi çã o de pi (l , 0) (23)
38 theta [l , i ] <-( pi _ lower [i ]+( pi _ upper [i ]- pi _ lower [ i ]) * rand _p) /
39 + sum (( pi _ lower +( pi _ upper - pi _ lower ) * rand _p ))
40 pbest [l , i ] = theta [l , i] # (27)
41 # Posi çã o de beta _i(l , 0) (24)
42 theta [l , i + n] <- beta _ lower [i] + ( beta _ upper [i ] - beta _ lower [i ]) * rand _ beta
43 pbest [l , i + n] = theta [l , i + n] # (27)
44 # Posi çã o de alpha _i(l , 0) (25)
45 theta [l , i + 2*n] <- alpha _ lower [ i] + ( alpha _ upper [i] - alpha _ lower [ i ]) * rand _ alpha
46 pbest [l , i + 2*n] = theta [l , i + 2*n ] # (27)
47 # #### Velocidades (26)
48 # Velocidade de vpi (l , 0)
49 V_ theta [l , i] <- ( pi _ lower [i ] - pi _ upper [i ]) + 2 * ( pi _ upper [i] - pi _ lower [ i ]) * rand _ vp
50
51 # Velocidade de vbeta _i(l , 0)
52 V_ theta [l , i + n] <-( beta _ lower [i] - beta _ upper [i ])+
53 + 2*( beta _ upper [i]- beta _ lower [i ]) * rand _ vbeta
54
55 # Velocidade de valpha _i(l , 0)
56 V_ theta [l ,i +2 * n] <-( alpha _ lower [i]- alpha _ upper [i ])+
57 +2 *( alpha _ upper [i] - alpha _ lower [i ]) * rand _ valpha
58 }

19
1 f_ fit = f_ fit ( pbest [l ,] , t_ values , Festim )
2
3 if (f_ fit < f_ fit _ min ) {
4 f_ fit _ min = f_ fit
5 qmin = l # resultar á na part í cula com o menor res í duo entre as q op çõ es testadas
6 }
7
8 }
9 gbest = pbest [ qmin ,, drop = FALSE ]
10 f_ fit _ gbest = numeric (1)
11 f_ fit _ gbest [1] = f _ fit _ min # guardo evolu ção do processo de fitness
12
13 # STEP 3 , 4 e 5 - UPDATE PARTICLES ' POSITIONS AND VELOCITIES , PBEST e GBEST ####
14 # #### UNTIL TERMINATION CRITERION
15
16 # Tamanho do espa ço de busca ( q) e nú mero de subpopula çõ es (n)
17 q <- nrow ( theta )
18 n <- ncol ( theta ) / 3
19 # browser ()
20 # Loop principal (k) para atualizar as posi çõ es e velocidades das part í culas
21 for ( k in 2: K) { # K é o nú mero total de itera ç õ es do PSO
22 w_k <- calculate _w (k , a )
23
24 # ### STEP 3 e 4 ( dentro da itera ção k) ####
25 f_ fit _ gbest [k] = f _ fit _ gbest [k -1] # na pior hip ó tese fica igual ao anterior
26 for ( l in 1: q) {
27 # Atualiza ção da velocidade conforme a equa ção (28)
28 rand = runif (1)
29 V_ theta [l , ] <- w _k * V_ theta [l , ] + c1 * rand * ( pbest [l , ] - theta [l , ]) +
30 + c2 * rand * ( gbest - theta [l , ])
31
32 # Atualiza ção da posi ç ão conforme a equa ç ão (30)
33 theta [l , ] <- theta [l , ] + V_ theta [l , ]
34
35 # como nunca atender á a restri ç ão " sum ( pi = 1) , NORMALIZO o theta [ pi ]
36 sum _ pi = sum ( theta [l ,1: n ])
37 for ( i in 1: n) {
38 theta [l ,i] = theta [l ,i] / sum _ pi
39 }
40 # ap ós normalizar pis , pode não atender ( fora da faixa 0 a 1) , ai gero outro abaixo
41
42 # Verificar as restri ç õ es para todas subpopula ç õ es ( dividi entre p e ( beta e alfa ))
43 if ( any ( theta [l ,1: n] < 0) | any ( theta [l ,1: n] > 1)) {
44 rand _p <- runif (1)
45 for ( i in 1: n) {
46 # Posi çã o de pi (l , k) conforme (23)
47 theta [l ,i] <-( pi _ lower [ i ]+( pi _ upper [i]- pi _ lower [i ]) * rand _p)/
48 sum (( pi _ lower +( pi _ upper - pi _ lower )* rand _p ))
49 }
50 }
51 if ( any ( theta [l ,( n +1):(3 *n )] < 0)) {
52 rand _ beta <- runif (1) # ## crio um nú mero randomico para cada part í cula ,
53 rand _ alpha <- runif (1) # ## mas igual para cada subpopula ção
54 for ( i in 1: n) {
55 # Posi çã o de beta _i(l , 0) conforme (24)
56 theta [l , i + n] <- beta _ lower [i] + ( beta _ upper [i ] - beta _ lower [i ]) * rand _ beta
57
58 # Posi çã o de alpha _i(l , 0) conforme (25)

20
1 theta [l , i + 2*n] <- alpha _ lower [ i] + ( alpha _ upper [i] - alpha _ lower [ i ]) * rand _ alpha
2 }
3 }
4 f_ fit _ theta = f_ fit ( theta [l ,] , t_ values , Festim )
5 f_ fit _ pbest = f_ fit ( pbest [l ,] , t_ values , Festim )
6 if (f_ fit _ theta < f_ fit _ pbest ) { # (31)
7 pbest [l ,] = theta [l ,] # atualiza a linha do pbest
8 if (f_ fit _ theta < f_ fit _ gbest [k ]) {
9 f_ fit _ gbest [k] = f _ fit _ theta # atualizo f _ fit do gbest
10 (32)
11 gbest = pbest [l ,, drop = FALSE ] # atualizo gbest
12 qmin = l #nã o uso para nada . S ó para saber o l que gerou o mí nimo na itera çã o
13 }
14 }
15 }
16 # #### STEP 5 - TERMINATION CRITERIO ####
17 if (f_ fit _ gbest [k ] != f_ fit _ gbest [k -1]) { # se não atualizou gbest , continuo
18 if (f_ fit _ gbest [k ] < Eps _1 | +
19 + abs (f_ fit _ gbest [k ] - f_ fit _ gbest [k -1]) < Eps _ 2) {
20 break
21 }
22 }
23 aux1 =c(k ,f_ fit _ gbest [k ])
24 print ( aux1 )
25 # browser ()
26 } # té rmino da itera ção k
27 print ( abs (f _ fit _ gbest [ k] - f_ fit _ gbest [k -1]) / Eps _ 2)
28 print (k)
29
30 t_ process <- Sys . time () - start _ time
31 # #### Apresenta os resultados finais
32 Results <- list (
33 f_ fit _ gbest = f_ fit _ gbest ,
34 gbest = gbest [1 , ],
35 t_ process = t _ process ,
36 Festim = Festim ,
37 k = k,
38 bounds = bounds ,
39 pbest = pbest ,
40 pi _ estim = p ,
41 alpha _ estim = alpha ,
42 beta _ estim = beta
43
44 )
45 return ( Results )
46
47 }
48 # IV . Estudo de Caso amostras t _ values ####
49
50 estudo1 = function ( tipo ) {
51 if ( tipo ==1){
52 # utilizar valores originais do artigo
53 library ( readxl )
54 t_ values _ orig <- read _ excel (" C:/ PPGEP / PRO 5970 / Projeto PLN /t_ values do artigo . xlsx " )
55 # Extrair os valores das colunas e coloc á - los em um ú nico vetor
56 t_ values <- c (t_ values _ orig $ ` Group 1`, t_ values _ orig $ ` Group 2`, t_ values _ orig $ ` Group 3`,
57 t_ values _ orig $ ` Group 4`, t_ values _ orig $ ` Group 5`, t_ values _ orig $ ` Group 6`,
58 t_ values _ orig $ ` Group 7`, t_ values _ orig $ ` Group 8`, t_ values _ orig $ ` Group 9`,

21
1 t_ values _ orig $ ` Group 10 `)
2 } else {
3 # Definir o nú mero de amostras em cada subpopula ção ####
4 n_ samples _ subpop1 <- 40
5 n_ samples _ subpop2 <- 120
6 n_ samples _ subpop3 <- 40
7
8 # Definir os par â metros para cada subpopula ção ####
9 alpha _ subpop1 <- 800
10 beta _ subpop1 <- 0.5
11
12 alpha _ subpop2 <- 1200
13 beta _ subpop2 <- 3
14
15 alpha _ subpop3 <- 2000
16 beta _ subpop3 <- 1
17
18 # Gerar as amostras para cada subpopula ção ####
19 samples _ subpop1 <- rweibull (n_ samples _ subpop1 , shape = beta _ subpop1 , scale = alpha _ subpop1 )
20 samples _ subpop2 <- rweibull (n_ samples _ subpop2 , shape = beta _ subpop2 , scale = alpha _ subpop2 )
21 samples _ subpop3 <- rweibull (n_ samples _ subpop3 , shape = beta _ subpop3 , scale = alpha _ subpop3 )
22
23 # Combinar todas as amostras em um ú nico vetor ####
24 t_ values <- c ( samples _ subpop1 , samples _ subpop2 , samples _ subpop3 )
25 }
26 # Ordenar as amostras ####
27 t_ values <- sort (t _ values )
28
29 # definido t _ values , calculo Festim que ser á usado diversas vezes
30 m = length (t _ values )
31 Festim = numeric ( m)
32 for ( j in 1: m) {
33 tj <- t_ values [j ]
34 Festim [j ] <- Festim (tj , j , m , t _ values [1] , t_ values [ m ])
35 }
36
37 # Transformar os dados em coordenadas (xj , yj ) ####
38 data _ transformed <- transform _ data (t_ values ,m , Festim )
39
40 # Plotar o gr á fico ####
41 plot _ data ( data _ transformed )
42 return ( list (t _ values = t_ values , data _ transformed = data _ transformed , Festim = Festim ))
43 }
44
45
46 estudo2 = function ( corte1 , corte2 ) {
47 # Definir os cortes para os segmentos (n -1 cortes para n segmentos )
48 cortes <- c( corte1 , corte2 )
49
50 # Definir o tamanho da popula çã o (q) , o nú mero de par â metros (n) , e a constante (a ) (29)
51 q <- 200
52 a = 3 # par â metro na equa ção (29) - artigo usou valor 3
53
54 # Constantes no c á lculo do V_ theta ( artigo diz que C1 e C2 em geral sã o iguais a 2)
55 c1 <- 2
56 c2 <- 2
57 # Crit é rio para finalizar itera ç õ es
58 K = 1000 # n ú mero má ximo de itera çõ es

22
1 Eps _1 = 0.01 # mí nimo valor para residual
2 Eps _2 = 10^( -10) # diferen ça mí nima entre duas gbest seguidas
3
4 t_ values = est1 $t_ values
5 data _ transformed = est1 $ data _ transformed
6 Festim = est1 $ Festim
7 PSO _ MWD ( cortes ,q ,a ,c1 ,c2 ,K , Eps _1, Eps _2, t_ values , data _ transformed , Festim )
8 }
9
10 ## para rodar : ####
11 est1 = estudo1 (1) # 1 para dados originais do artigo , 2 para criar dados
12 est2 = estudo2 (5.9 , 7.5)

23

Você também pode gostar