parameter estimation for the two-parameter weibull

108
Brigham Young University Brigham Young University BYU ScholarsArchive BYU ScholarsArchive Theses and Dissertations 2011-03-03 Parameter Estimation for the Two-Parameter Weibull Distribution Parameter Estimation for the Two-Parameter Weibull Distribution Mark A. Nielsen Brigham Young University - Provo Follow this and additional works at: https://scholarsarchive.byu.edu/etd Part of the Statistics and Probability Commons BYU ScholarsArchive Citation BYU ScholarsArchive Citation Nielsen, Mark A., "Parameter Estimation for the Two-Parameter Weibull Distribution" (2011). Theses and Dissertations. 2509. https://scholarsarchive.byu.edu/etd/2509 This Selected Project is brought to you for free and open access by BYU ScholarsArchive. It has been accepted for inclusion in Theses and Dissertations by an authorized administrator of BYU ScholarsArchive. For more information, please contact [email protected], [email protected].

Upload: others

Post on 01-Oct-2021

28 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Parameter Estimation for the Two-Parameter Weibull

Brigham Young University Brigham Young University

BYU ScholarsArchive BYU ScholarsArchive

Theses and Dissertations

2011-03-03

Parameter Estimation for the Two-Parameter Weibull Distribution Parameter Estimation for the Two-Parameter Weibull Distribution

Mark A. Nielsen Brigham Young University - Provo

Follow this and additional works at: https://scholarsarchive.byu.edu/etd

Part of the Statistics and Probability Commons

BYU ScholarsArchive Citation BYU ScholarsArchive Citation Nielsen, Mark A., "Parameter Estimation for the Two-Parameter Weibull Distribution" (2011). Theses and Dissertations. 2509. https://scholarsarchive.byu.edu/etd/2509

This Selected Project is brought to you for free and open access by BYU ScholarsArchive. It has been accepted for inclusion in Theses and Dissertations by an authorized administrator of BYU ScholarsArchive. For more information, please contact [email protected], [email protected].

Page 2: Parameter Estimation for the Two-Parameter Weibull

Parameter Estimation for the Two-Parameter Weibull Distribution

Mark A. Nielsen

A project submitted to the faculty ofBrigham Young University

in partial fulfillment of the requirements for the degree of

Master of Science

David A. Engler PhD, ChairW. Evan Johnson PhDH. Dennis Tolley PhD

Department of Statistics

Brigham Young University

April 2011

Copyright c© 2011 Mark A. Nielsen

All Rights Reserved

Page 3: Parameter Estimation for the Two-Parameter Weibull
Page 4: Parameter Estimation for the Two-Parameter Weibull

ABSTRACT

Parameter Estimation for the Two-Parameter Weibull Distribution

Mark A. NielsenDepartment of Statistics, BYU

Master of Science

The Weibull distribution, an extreme value distribution, is frequently used to modelsurvival, reliability, wind speed, and other data. One reason for this is its flexibility; it canmimic various distributions like the exponential or normal. The two-parameter Weibull hasa shape (γ) and scale (β) parameter. Parameter estimation has been an ongoing search tofind efficient, unbiased, and minimal variance estimators. Through data analysis and sim-ulation studies, the following three methods of estimation will be discussed and compared:maximum likelihood estimation (MLE), method of moments estimation (MME), and medianrank regression (MRR). The analysis of wind speed data from the TW Daniels Experimen-tal Forest are used for this study to test the performance and flexibility of the Weibulldistribution.

Keywords: weibull, extreme value distribution, parameter estimation, wind speed, TWDEF

Page 5: Parameter Estimation for the Two-Parameter Weibull
Page 6: Parameter Estimation for the Two-Parameter Weibull

ACKNOWLEDGMENTS

I appreciate the help and time Dr. Engler gave to assist in the completion of this

project. I also thank those family and friends that helped in the editing and revisions of my

final project. I also appreciate the opportunity to work with Dr. Scott Jones, and for the

use of the TWDEF data.

Page 7: Parameter Estimation for the Two-Parameter Weibull
Page 8: Parameter Estimation for the Two-Parameter Weibull

CONTENTS

Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii

1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1 The Two-Parameter Weibull Distribution . . . . . . . . . . . . . . . . . . . . 1

1.2 Applications of the Weibull Distribution . . . . . . . . . . . . . . . . . . . . 3

2 Parameter Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.1 Maximum Likelihood Estimator . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2 Method of Moments Estimator . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.3 Median Rank Regression Estimator . . . . . . . . . . . . . . . . . . . . . . . 10

3 Simulation Studies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.1 Justification of Parameters and Sample Sizes . . . . . . . . . . . . . . . . . . 13

3.2 Bias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.3 Variance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.4 Mean Square Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.5 Distribution Misspecification . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4 Data Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.1 Description of Data Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.2 Issues with the Wind Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.3 Maximum Likelihood Estimation for a Mixture Model . . . . . . . . . . . . . 26

4.4 Application Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

vii

Page 9: Parameter Estimation for the Two-Parameter Weibull

4.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Appendices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Appendix A: Additional Graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

A.1 Graphs of Normality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

A.2 Wind Speed Data with Overlaid Weibull Curves . . . . . . . . . . . . . . . . 47

Appendix B: C-Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

B.1 Code for Simulation Studies . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

B.2 Code to Generate from Gamma for Misspecification Studies . . . . . . . . . . 63

Appendix C: R-Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

C.1 Code to Generate from Normals for Misspecification Studies . . . . . . . . . . 73

C.2 Code to compute MSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

C.3 Code to read in wind data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

C.4 Code for parameter estimation . . . . . . . . . . . . . . . . . . . . . . . . . . 92

C.5 Source code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

viii

Page 10: Parameter Estimation for the Two-Parameter Weibull

chapter 1

INTRODUCTION

1.1 The Two-Parameter Weibull Distribution

There are many applications for the Weibull distribution in statistics. Although it was first

identified by Frechet in 1927, it is named after Waalobi Weibull and is a cousin to both the

Frechet and Gumbel distributions. Waalobi Weibull was the first to promote the usefulness

of this distribution by modelling data sets from various disciplines (Murthy, Xie, and Jiang

2004). If T ∼Weibull(γ,β) then its density function is defined as:

f(t|γ, β) =γ

βγt(γ−1) exp

{−(t

β

)γ}, for γ > 0, and β > 0.

In this density function, our γ represents the shape parameter, and our β represents the

scale parameter. The distribution function can also be derived and is defined as:

F (t|γ, β) = 1− exp

{−(t

β

)γ},

where, as noted before, γ and β are non-negative.

1

Page 11: Parameter Estimation for the Two-Parameter Weibull

0.0 0.5 1.0 1.5 2.0 2.5

0.0

0.5

1.0

1.5

2.0

2.5

γ − Shape parameter

Den

sity

β = 1,γ = 0.5β = 1,γ = 1β = 1,γ = 1.5β = 1,γ = 5

Figure 1.1: Examples of the Weibull density curve with various values of γ.

0.0 0.5 1.0 1.5 2.0 2.5

0.0

0.5

1.0

1.5

β − Scale parameter

Den

sity

β = 0.5,γ = 2β = 1, γ = 2β = 1.5,γ = 2β = 5, γ = 2

Figure 1.2: Examples of the Weibull density curve with various values of β.

2

Page 12: Parameter Estimation for the Two-Parameter Weibull

1.2 Applications of the Weibull Distribution

Extreme value theory is a unique statistical discipline that develops “models for describing

the unusual rather than the usual (Coles 2001).” Perhaps the simplest example of an extreme

value distribution is the exponential distribution. The Weibull distribution is specifically

used to model extreme value data. One example of this is the frequent use of the Weibull

distribution to model failure time data (Murthy et al. 2004). Its use is also applicable in

various situations including data containing product failure times to data containing survival

times of cancer patients. The extreme values in these analyses would be the unusual longevity

of the shelf life of a product or survival of affected patients. One reason it is widely used in

reliability and life data analysis is due to its flexibility. It can mimic various distributions

like the normal. Special cases of the Weibull include the exponential (γ = 1) and Rayleigh

(γ = 2) distributions. Because of its uses in lifetime analysis, a more useful function is the

probability that the lifetime exceeds any given time, (i.e. P(T > t)). This is called the

survival function or in the case of a product, the reliability. For the Weibull distribution,

this is the following equation:

S(t) = 1− P (T ≤ t) = 1− F (t|γ, β) = exp

{−(t

β

)γ}.

Another function of interest is the hazard function, which is often called the instantaneous

failure rate. The hazard function is computed using both the reliability or survival function

and the density function, h(t) = f(t)S(t)

. For the Weibull distribution, this is derived as follows:

h(t) =f(t)

S(t)=

γβγt(γ−1) exp

{−(tβ

)γ}exp

{−(tβ

)γ} =γ

βγt(γ−1).

An interesting property of this equation is that this function is non-constant in comparison

to the hazard function for the exponential distribution (i.e. h(t) = λ, for f(t|λ) = λe−λt).

This reveals an interesting property of the Weibull distribution. When the parameter γ > 1,

it is said the “instantaneous failure rate,” or hazard function, increases with time, if γ = 1 it

remains constant, and if γ < 1 then the hazard function decreases over time (Collett 2009).

3

Page 13: Parameter Estimation for the Two-Parameter Weibull

Often studies involving product failure times and patient survival times are censored

for a given subset of subjects. The motivation to include these data in analyses, is that

they do contain information about the reliability or survival times of the subjects. It would

be unwise to simply throw out these data points. It would also be inappropriate to treat

them the same as the subjects who each experienced their “events.” An alternate form of

the probability density function is suggested, as follows:

f(ti|γ, β) =

βγt(γ−1)i exp

{−(tiβ

)γ}]δi×[exp

{−(tiβ

)γ}](1−δi),

where γ and β are nonnegative and δi is the indicator function of the ith subject’s event.

(i.e. δi = 1 if the “event” has occurred.) This study will not address censored data.

Another discipline where the Weibull is applicable is in the analysis of wind speeds. Ac-

cording to Weisser (2003), wind energy, in comparison to other renewable sources of energy,

such as solar or tidal energy, “has a more variable and diffuse energy flux.” Because of this

variability, the Weibull distribution is used to model the variation of wind speeds in order to

maximize the benefit obtained from wind energy. This information can be used to optimize

the design of wind energy conversion technologies (WECTs). In the past, the two-parameter

Weibull distribution has been shown to effectively describe the variation of wind speed and

is commonly used in modelling such data (Weisser 2003; Seguro and Lambert 2000; Celik

2003). Wind speed data is usually in time series format. It is reasonable to use the Weibull

distribution to summarize the information contained in large sets of wind speed data into a

couple parameter estimates. This project’s focus will be the parameter estimation of wind

speed data.

There are several functional and mechanical reasons for using the Weibull distribution

in modeling wind speeds. In a study of wind speed durations above and below fixed speeds,

Corotis (1979) determined that the Rayleigh distribution is reasonable in modeling wind

speeds. In his previous research the following cumulative distribution function had been

4

Page 14: Parameter Estimation for the Two-Parameter Weibull

developed to model run duration times (t):

F1(t) = 1−(t

t0

)(1−b)

for t0 ≤ t ≤ t1,

F2(t) = 1− A exp{−λt} for t1 ≤ t ≤ ∞,

where

t0 =1

2,

t1 = t0G1

1−b ,

A = G exp{b− 1}, and

λ =b− 1

t1.

G being approximated at 1/4 for run levels of practical interest. The remaining parameter

b can be found using maximum likelihood estimation.

His research showed a strong correlation between the b parameter and seasonal mean

wind speeds. He then presented a family of smoothed b-parameter curves, which indicated

that the family of curves seemed to vary as a function of the run level to mean speed. The

run level being the fixed wind speed. The Rayleigh distribution, a special case of the Weibull

distribution (i.e. where γ = 2), is a one parameter distribution that implies a constant ratio

of standard deviation to the mean. This implies a constant ratio of run level to the mean,

where run level is considered as the number of standard deviations away from the mean. The

reasonable fit of this distribution implies that the higher the run level is in comparison to

the mean, the probability that a wind speed will continue to increase or that we will observe

a “long duration above the run level” decreases. Now that the usefulness of the Rayleigh

distribution has been established, the flexibility of the shape of the distribution is added by

using the Weibull distribution because the skewness of a Weibull curve depends only on γ

(Hennessey 1977).

Another functional reason for using the Weibull is because wind power (i.e. (wind

speed)3) is easily modeled by using a cubed transformation of the Weibull which is also

distributed as a Weibull(γ/3, β) (Hennessey 1977).

5

Page 15: Parameter Estimation for the Two-Parameter Weibull
Page 16: Parameter Estimation for the Two-Parameter Weibull

chapter 2

PARAMETER ESTIMATION

2.1 Maximum Likelihood Estimator

The maximum likelihood estimator (MLE) is a well known estimator. It is defined by

treating our parameters as unknown values and finding the joint density of all observations

of a data set, which are assumed to be independent and identically distributed (iid). Once the

likelihood function is defined, the maximum of that function is found. If the data points are

all highly likely under specific parameter values, then their product will be the “most likely”

outcome, or the maximum likelihood. This estimator is important in statistics because of is

asymptotic unbiasedness and minimal variance.

Our MLE is computed by first assuming that Tiiid∼Weibull(γ, β), with the probability

given by its density function:

f(ti|γ, β) =γ

βγt(γ−1)i exp

{−(tiβ

)γ}, for γ > 0, and β > 0.

The joint density of the likelihood is the product of the densities of each data point.

L(γ, β|t) =n∏i=1

f(ti|γ, β)

=n∏i=1

βγt(γ−1)i exp

{−(tiβ

)γ}]=

βγ

)n n∏i=1

t(γ−1)i × exp

{−(∑

tiβ

)γ}.

Next, to make the math somewhat simpler, the natural log of our joint density is computed.

This can be done while still preserving the true maximum of our likelihood function because

7

Page 17: Parameter Estimation for the Two-Parameter Weibull

the log transformation is a monotonically increasing function.

`(γ, β|t) = log

[(γ

βγ

)n n∏i=1

t(γ−1)i × exp

{−(∑

tiβ

)γ}]

= log

βγ

)n+ log

[n∏i=1

t(γ−1)i

]−(∑

tiβ

)γ= n log

βγ

)+ (γ − 1) log

[n∏i=1

ti

]−

n∑i=1

(tiβ

)γ= n log γ − n log βγ + (γ − 1)

n∑i=1

log(ti)−n∑i=1

(tiβ

)γ= n log(γ)− γn log(β) + (γ − 1)

n∑i=1

log(ti)−n∑i=1

(tiβ

)γ.

Once the likelihood function has been obtained, the function is optimized by negating it

and finding its minimum. This is done iteratively using an optimization function in the gsl

library in C and using the nlm function in R.

2.2 Method of Moments Estimator

Although in many cases the method of moments estimator (MME) is superseded by Fisher’s

MLE concerning asymptotic unbiasedness and minimal variance, the method of moments

estimators can, in many cases and quite acurately, be derived by hand. The MME is defined

by computing the sample moments,

µk =1

n

n∑i=1

tki ,

and setting them equal to the theoretical moments from the moment generating function,

MT (t). The moment generating function for the Weibull is as follows:

MK(t) = βkΓ

(1 +

k

γ

),

where k represents the kth theoretical moment, and Γ(·) represents the gamma function,

Γ(α) =∫∞0xα−1e−xdx, where α > 0 (Casella and Berger 2002).

8

Page 18: Parameter Estimation for the Two-Parameter Weibull

Only the first two moments are needed to derive the parameter estimates for the

Weibull. Using the equation, σ2

µ21= M2(t)−[M1(t)]2

[M1(t)]2, from Murthy, Xie, and Jiang (2004), we see

that it can be simplified to the following equation:

σ2

µ21

=M2(t)− [M1(t)]

2

[M1(t)]2

⇒ µ2 − µ21

µ21

=M2(t)

[M1(t)]2− 1

⇒ µ2

µ21

− 1 =M2(t)

[M1(t)]2− 1

⇒ µ2

µ21

=M2(t)

[M1(t)]2.

Next, taking the second sample moment divided by the square of the first sample moment,

a function of the theoretical moments using our data is approximated.

µ2

µ21

=M2(t)

[M1(t)]2

⇒1n

∑ni=1 t

2i[

1n

∑ni=1 ti

]2 ≈ β2Γ(

1 + 2γ

)β2Γ2

(1 + 1

γ

)⇒ n

∑ni=1 t

2i

[∑n

i=1 ti]2 ≈

Γ(

1 + 2γ

)Γ2(

1 + 1γ

) .

This function solely depends on γ and therefore we can solve using root finding techniques. I

used the bisection method (Jones, Maillardet, and Robinson 2009) because of its robustness

and simplicity. It is, however, very slow in comparison to other root finding methods such

as the Newton-Raphson method.

We begin by defining our function f(x) as follows:

f(x) =Γ(1 + 2

x

)Γ2(1 + 1

x

) − µ2

µ21

= 0,

knowing that µ2/µ21 is a constant given our data. The bisection method requires two initial

points, x1 and x2, where f(x1) and f(x2) have opposite signs. The interval (x1,x2) is divided

in half and the half where the end points evaluated in the function have opposite signs is

9

Page 19: Parameter Estimation for the Two-Parameter Weibull

found. These values become the endpoints of our new interval and we divide it again. This

process is repeated until the difference of two consecutive midpoints are within ε of each

other, where ε > 0. Once we have found our root, we set this equal to γ. Finally, we can

estimate β by the equation

µ1 = t = βΓ

(1 +

1

γ

)⇒ β =

t

Γ(

1 + 1γ

) ,

plugging in the value obtained in our root finding iteration for γ.

2.3 Median Rank Regression Estimator

The last estimator is computed by using median rank regression. This method is the simplest

of the three in this paper. Although it has neither the asymptotic properties of the MLE nor

the accuracy of the MME estimator, it is quick, simple, and fairly accurate. This method

was specifically used in the past as a method that could be done by hand. Thus, it is safe to

assume that this method’s accuracy will be mediocre in comparison to the previous methods.

The median rank regression estimator includes a simple algorithm. First, the distribution

function for our ordered data is approximated. The data are first sorted in ascending order.

The data are “ranked” by using the median rank approximation by solving the following

equation for Zi.n∑k=i

(n

k

)(Zi)

k(1− Zi)n−k. (2.1)

Because this is computationally intensive we use Bernard’s approximation,

FT (ti) ≈ Zi ≈i− 0.3

n+ 0.4,

which is an estimate to the solution for Equation 2.1, where i is the ascending rank of our

data point and n is the total number of data in our data set (ReliaSoft Corportation 1996–

2006). These estimates will be used later in setting up a regression model.

10

Page 20: Parameter Estimation for the Two-Parameter Weibull

Finally, the distribution function is used to derive a linear relation between a transformation

of the distribution function estimates and the log survival times.

1− FT (t) = exp

{−(t

β

)γ}log [1− FT (t)] = −

(t

β

)γlog

[1

S(t)

]=

(t

β

)γlog

[log

[1

S(t)

]]= γ log t− γ log β

Now we have a linear model and can use regression to find the parameter estimates γ and β.

Allowing y to equal the twice-logged inverse median-rank estimated survival function, and

x to be equal to the log survival times,

log

[log

[1

S(t)

]]= γ log t− γ log β

⇒ y = γx− γ log β

⇒ y = ψ0 + ψ1x,

where γ = ψ1, and

β = exp

{−ψ0

γ

}.

Note that ψ0 is the intercept of the least squares regression model and ψ1 is the slope. This

concept is illustrated in Figure 2.1 on the following page.

11

Page 21: Parameter Estimation for the Two-Parameter Weibull

●●●●●●●●●●●●●●●●●●●

●●●●●●●●●● ● ●●●●●

●●●●●●● ●●●●●●●

●●●●●●● ●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●

−3 −2 −1 0 1 2

−10

−8

−6

−4

−2

02

Median Rank Regression

log(t)

log(

1/S

(t))

y == ψψ0 ++ ψψ1x

Figure 2.1: The linear relationship of the twice-logged inverse estimated survival times(Zi)

and logged survival times is graphically demonstrated.

12

Page 22: Parameter Estimation for the Two-Parameter Weibull

chapter 3

SIMULATION STUDIES

The first step in this simulation study will be to determine and justify parameter values

and sample sizes in order to generate simulation data. For each combination of parameter

values and sample sizes, 1000 data set are simulated. After the new data are generated,

the parameter estimation methods discussed in chapter 2 will be used. Because the true

parameter values of the different data sets are known, statistics measuring bias and variance

of the estimated parameters can be computed using the 1000 repetitions. Once the bias,

variance, and mean square error (defined and discussed later) are computed, the different

methods can be compared in accuracy. Finally, data is then simulated under three different

density functions to determine the accuracy of these parameterizations if misspecification is

an issue.

3.1 Justification of Parameters and Sample Sizes

I chose the first parameters,γ and β, to be 2 and 2.5, respectively. I wanted to see how

the estimators would handle values similar to the shape and scale parameters from the

wind data. Next, I chose a second set of differing values. These values were 5 for γ and

90 for β. I conducted tests of accuracy for these values with small, moderate, and large

(n = 20, 100, 10000) data sets in order to determine the accuracy of each method for various

data sizes.

13

Page 23: Parameter Estimation for the Two-Parameter Weibull

0 2 4 6 8 10

0.00

0.05

0.10

0.15

0.20

0.25

0.30

0.35

β = 2 and γ = 2.5D

ensi

ty

0 50 100 150

0.00

00.

005

0.01

00.

015

0.02

0

β = 5 and γ = 90

Den

sity

Figure 3.1: Weibull density curves for the parameters specified above. These parameters

were selected for the simulation studies.

β

Den

sity

84 86 88 90 92 94 96

0.00

0.05

0.10

0.15

0.20

γ

Den

sity

3.5 4.0 4.5 5.0 5.5 6.0 6.5

0.0

0.2

0.4

0.6

0.8

Figure 3.2: Normally Distributed Parameter Estimates: Both are distributions of the

parameters for the Regression Method, with γ = 5, β = 90, and n = 100.

14

Page 24: Parameter Estimation for the Two-Parameter Weibull

After simulating the data sets and finding our parameter estimates, we assume that

our parameter estimates are normally distributed. This assumption allows us to take the

1,000 repetitions of each parameter estimation and calculate the mean square error (MSE),

or the bias squared plus the variance of the distribution of our parameter estimates. Graphs

showing normality for all parameter estimates can be found in Appendix A.

3.2 Bias

Bias is defined as the difference between the true parameter value and the parameter esti-

mate. Mathematically this is defined to be E(θ) − θ, where θ is our estimated parameter

and θ is the true parameter value. This is computed by finding the average of each of the

1000 parameter estimates and subtracting the true value, which was used to generate the

data.

bias =1

n

n∑i=1

xi − truth.

Below are the biases for each set of parameters and sample sizes.

γ = 5 β = 90

n = 20 100 10000 20 100 10000

MLE 0.38625 0.06758 0.00027 -0.18701 -0.06877 0.00302

MME 0.40456 0.06451 0.00067 -0.23079 -0.07345 0.00277

MRR -0.16904 -0.12781 -0.00497 0.50473 0.20719 0.01181

Table 3.1: Biases for first set of parameters. Specifically for the MLE bias approaches zero

as the sample size, n, gets large. Here all three methods demonstrate the tendency to

asymptotic unbiasedness.

15

Page 25: Parameter Estimation for the Two-Parameter Weibull

γ = 2 β = 2.5

n = 20 100 10000 20 100 10000

MLE 0.15450 0.02703 0.00011 -0.00192 -0.00267 0.00023

MME 0.14956 0.02705 0.00006 -0.00317 -0.00277 0.00022

MRR -0.06761 -0.05112 -0.00199 0.04678 0.01666 0.00084

Table 3.2: Biases for the second set of parameters. Once again, the bias for all three methods

approaches zero as n gets large.

Notice that the bias for the MLE estimates are all smaller than the biases for both

MME and MRR estimates. Also, as n increases, the bias goes to zero for all estimators.

This is a trait that was expected for the MLE, but which is also expressed in the other two

methods. It appears that the MLE and MME converge the quickest to the true value.

3.3 Variance

Variance is defined to be the deviation about the mean. In this case, it is the sample variance

for each of the parameters and sample sizes. This is computed by finding the sum of squared

deviances of each data point from the data’s average value and dividing by n− 1:

variance =1

n− 1

n∑i=1

x2i −

(1

n

n∑i=1

xi

)2 .

The variances for the data simulation studies are shown in the tables below.

16

Page 26: Parameter Estimation for the Two-Parameter Weibull

γ = 5 β = 90

n = 20 100 10000 20 100 10000

MLE 1.00863 0.16372 0.00160 19.16663 3.64719 0.03487

MME 1.19413 0.18421 0.00183 19.15801 3.65998 0.03489

MRR 1.22024 0.26308 0.00290 20.01155 3.87677 0.03652

Table 3.3: Variances for the first set of parameters. The variances’ tendencies toward zero

is expected as the sample size increases.

γ = 2 β = 2.5

n = 20 100 10000 20 100 10000

MLE 0.16138 0.02620 0.00026 0.09090 0.01758 0.00017

MME 0.15715 0.02673 0.00026 0.09106 0.01763 0.00017

MRR 0.19524 0.04209 0.00046 0.09732 0.01890 0.00018

Table 3.4: Variances for the second set of parameters.

In Tables 3.3 and 3.4, we see that the variance is smallest for the MLE estimates.

However, note that the variances of the MME and MRR estimates are approximately the

same as each of the variances for the MLE estimates.

3.4 Mean Square Error

Once we have the measures for bias and variance we can compute the mean square error as

defined below:

MSE = bias2 + variance

Once again, Tables 3.5 and 3.6 below report the MSE for each set of parameters and sample

sizes. Notice also Figure 3.2 which is a graphical representation of the measures of MSE for

17

Page 27: Parameter Estimation for the Two-Parameter Weibull

each method. In all three cases for both parameters the MSE converges to zero, showing

that as sample sizes increase, the accuracies of our methods also increase. Figure 3.3 tells a

similar story for γ = 2 and β = 2.5.

Figure 3.3: These two graphs show the mean square error for various sample sizes. The

parameters γ = 5 and β = 90 are used for these estimations.

● ●01

23

4

γ = 5

Sample Size

Mea

n S

quar

e E

rror

● ●

● ●

MLEMMEMRR

10 20 100 1000 10000

●●0

1020

3040

β = 90

Sample Size

Mea

n S

quar

e E

rror

●●

●●

MLEMMEMRR

10 20 100 1000 10000

γ = 5 β = 90

n = 20 100 10000 20 100 10000

MLE 1.15782 0.16829 0.00160 19.20161 3.65192 0.03488

MME 1.35779 0.18837 0.00184 19.21128 3.66537 0.03489

MRR 1.24881 0.27942 0.00293 20.26631 3.91970 0.03666

Table 3.5: MSE for the first set of parameters.

18

Page 28: Parameter Estimation for the Two-Parameter Weibull

Figure 3.4: These two graphs show the mean square error for various sample sizes. The

parameters γ = 2 and β = 2.5 are used for these estimations.

● ●0.0

0.1

0.2

0.3

0.4

0.5

0.6

γ = 2

Sample Size

Mea

n S

quar

e E

rror ●

● ●

● ●

MLEMMEMRR

10 20 100 1000 10000

●●

0.00

0.05

0.10

0.15

0.20

β = 2.5

Sample Size

Mea

n S

quar

e E

rror

●●

●●

MLEMMEMRR

10 20 100 1000 10000

γ = 2 β = 2.5

n = 20 100 10000 20 100 10000

MLE 0.18525 0.02693 0.00026 0.09090 0.01759 0.00017

MME 0.17952 0.02746 0.00026 0.09107 0.01764 0.00017

MRR 0.19981 0.04471 0.00047 0.09951 0.01918 0.00018

Table 3.6: MSE for second set of parameters.

Notice that the MLE had the smallest MSE for all four parameters. An interesting

attribute of the median rank regression estimator is that for small data sets (n = 10) the

MSE for γ is the smallest. However, we see again that the MLE is the best estimator,

according to the MSE.

19

Page 29: Parameter Estimation for the Two-Parameter Weibull

3.5 Distribution Misspecification

In general, the Weibull distribution is used in modeling a wide variety of data, including

wind speed, patient survival, and product lifetime. There is the possibility that these data

are not truly distributed as Weibull data. I simulated three different data sets which are

distributed as gamma(4,1), normal(5,1), and zero-truncated normal(2,3). After simulating

the data with sizes of n =30 and 1000, I used my three methods of parameter estimation

for the Weibull to obtain estimates for the six data sets. To determine which parameter

estimates fit the data best, I will use the Kolmgorov-Smirnov test in R. The KoImgorov-

Smirnov test assesses whether or not data comes from a reference distribution. The null

hypothesis is that the generated data is from the Weibull distribution, thus a p-value that is

less than α = 0.05 would suggest that the data did not come from the Weibull distribution.

Figure 3.—– below, you will find the histograms of the data with an overlaid Weibull curve

with the estimated parameter estimates followed by the p-values for the Kolmgorov-Smirnov

(KS) tests.

20

Page 30: Parameter Estimation for the Two-Parameter Weibull

Figure 3.5: Data misspecification is a plausible error in modelling data. These plots show

possible misspecification of the data.

Misspecification − Gamma(4,1) n=30

Den

sity

0 5 10 15

0.00

0.05

0.10

0.15

0.20

0.25

MLEMMEMRRGamma

Misspecification − Gamma(4,1) n=1000

Den

sity

0 5 10 15

0.00

0.05

0.10

0.15

0.20

0.25

MLEMMEMRRGamma

n = 30 n = 1000

MLE 0.9739 0.2264

MME 0.9812 0.1800

MRR 0.9883 0.0634

Gamma 0.3442 0.9662

Table 3.7: p-values for the KS tests for the gamma misspecification. H0: The data come

from a Weibull distribution with corresponding parameter estimates.

Notice here that the MRR method performs best with small sample size and the MLE with

large sample size. Because the p-values are not that different for the smaller sample data, I

would conclude that the MLE is best for this misspecification.

21

Page 31: Parameter Estimation for the Two-Parameter Weibull

Figure 3.6: Data misspecification for the normal.

Misspecification − Normal(5,1) n=30

Den

sity

2 4 6 8 10

0.0

0.1

0.2

0.3

0.4

0.5

0.6

MLEMMEMRRNormal

Misspecification − Normal(5,1) n=1000

Den

sity

2 4 6 8 100.

00.

10.

20.

30.

4

MLEMMEMRRNormal

n = 30 n = 1000

MLE 0.8484 0.2898

MME 0.7572 0.3330

MRR 0.8375 0.2402

Normal 0.7471 0.8634

Table 3.8: p-values for the KS tests for the normal misspecification. H0: The data come

from a Weibull distribution with corresponding parameter estimates.

Here we see that the best method of estimation for this type of misspecification is the MLE

for small data sets and the MME for large sets.

22

Page 32: Parameter Estimation for the Two-Parameter Weibull

Figure 3.7: Data misspecification for the zero-truncated normal.

Misspecification − Zero Truncated Normal(2,3) n=30

Den

sity

0 2 4 6 8 10 12

0.00

0.05

0.10

0.15

0.20

0.25

0.30

MLEMMEMRRTruncated Normal

Misspecification − Zero Truncated Normal(2,3) n=1000

Den

sity

0 2 4 6 8 10 120.

000.

050.

100.

150.

200.

250.

30

MLEMMEMRRTruncated Normal

n = 30 n = 1000

MLE 0.7675 1.3389E-10

MME 0.7924 6.6811E-07

MRR 0.6688 0.0000

TruncNorm 0.0371 0.4912

Table 3.9: p-values for the KS tests for the truncated normal misspecification. H0: The data

come from a Weibull distribution with corresponding parameter estimates.

In this case we notice that our KS tests were significant in all the large sample size Weibull

estimations, although the MME is best. I conclude that this is trivial because larger sample

sizes that come from a truncated normal are not very likely to be misspecified as Weibull data.

It is in small sample sizes that I would show more concern. The MME parameter estimates

have the highest p-value with the MLE parameter estimate’s p-value slightly lower.

In each case, assuming the Weibull is the underlying distribution of each of these data sets

23

Page 33: Parameter Estimation for the Two-Parameter Weibull

is a reasonable misspecification. In general, the MLE estimates are the best fit for the

misspecified data. This is a confirmation of the flexibility of the Weibull distribution as

discussed in the introduction. While the fits above are not perfect, it is apparent that the

Weibull is capable in parametrizing various types of data.

3.6 Summary

Overall, the maximum likelihood estimator was the best according to the mean square error.

This is what we expected because of the asymptotic properties of the maximum likelihood

estimator. Although the median rank regression method was worst according to the mean

square error, because of its simplicity it is a very good estimator for finding the parameters.

Both method of moments and maximum likelihood estimator required iterative algorithms,

which was not necessary for the median rank regression method. Misspecification should

raise no problems as seen in the previous section. The Weibull density’s flexibility allows

the modelling various types of data.

24

Page 34: Parameter Estimation for the Two-Parameter Weibull

chapter 4

DATA APPLICATION

4.1 Description of Data Set

In order to test our methods, I chose to use the T.W. Daniels Experimental Forest (TWDEF)

dataset from the Department of Soil Physics at Utah State University (Utah State Universtity—

Department of Soil Physics 2009–2010). The data contains the wind speed distributions for

five seperate sites in the experimental forest. The set includes data from the following sites:

aspen, conifer, grass, sage, and the summit. All non-missing data are the wind speeds,

recorded every half hour at each site. Wind energy data are appropriately modelled using

the Weibull distribution (Weisser 2003; Seguro and Lambert 2000; Celik 2003). The data

set is large, and therefore we presume that the MLE method will likely be the most accurate

as seen in our simulation studies.

4.2 Issues with the Wind Data

One of the main issues contained in this data is the fact that there are data equal to zero.

Because the Weibull distribution is only for data that is greater than zero, this caused several

problems for our parameter estimation, specifically for the MLE and MRR estimates. The

solutions are as follows:

1. Add small values to each zero and find the estimates for the parameters using those

values. In Figures 4.1, 4.2, and 4.3, these values are denoted in the key by “0.01,

0.0001, and 0.000001.”

2. The data are separated into bins (i.e. just like they are separated before creating a

histogram) and the estimates are found for the binned data. For my data, I rounded

25

Page 35: Parameter Estimation for the Two-Parameter Weibull

each value up to the nearest hundredth, including zero up to one one-hundredth. I

found this to be a common practice among wind energy analysts.

3. Delete the data valued at zero and find the estimates for our wind data. This last

solution is shown to be equivalent to the parameter estimation for a mixture model of

the point density at zero and the Weibull for the MLEs.

4.3 Maximum Likelihood Estimation for a Mixture Model

Here we find the MLE for the mixture model for a point density at zero and a Weibull

density. The zero point density is as follows: f(x) = I(x = 0). Also, let n be the total

number of data and let m be the number of non-zero data points. Note that xj below is the

jth non-zero wind speed measure.

g(x|γ, β, π) = f(x)(1− π) +Weibull(γ, β)π

⇒n∏i=1

[g(xi|γ, β)] =n∏i=1

[f(xi)(1− π) +Weibull(xi|γ, β)π]

When xi = 0, g(xi|γ, β, π) = (1−π) and when xi 6= 0, then g(xi|γ, β, π) = Weibull(xi|γ, β)π.

Therefore we can write the equation as:

n∏i=1

[g(xi|γ, β)] = (1− π)(n−m)πmm∏j=1

Weibull(xj|γ, β)

26

Page 36: Parameter Estimation for the Two-Parameter Weibull

Once this has been done, the MLE can be found for π by maximizing the log likelihood.

`(x|γ, β, π) = log{(1− π)(n−m)πmm∏j=1

Weibull(xj|γ, β)}

= (n−m) log(1− π) +m log π +m∑j=1

logWeibull(xj|γ, β)

⇒ d`

dπ=

(n−m)

(1− π)(−1) +

m

π

⇒ 0 =(m− n)

(1− π)+m

π

⇒ 0 = mπ − nπ +m−mπ

⇒ 0 = −nπ +m⇒ π =m

n

Notice that the same can be done with the parameters γ, and β. As you can see from

`(x|γ, β, π), the MLEs for the remaining estimates will be the same as the MLE for the

non-zero data. Therefore, the MLEs for the mixture model are the same as the estimates

that are found in my method where we “delete” the zeros from the data.

4.4 Application Results

In the analyses of these data, we find that all three methods predict the following parameter

estimates assuming the Weibull distribution.

27

Page 37: Parameter Estimation for the Two-Parameter Weibull

Figure 4.1: Here is a histogram of the Grass Site data, with overlaid Weibull curves for the

parameters chosen by our Maximum Likelihood Methods.

Maximum Likelihood

Wind Speed

Den

sity

0 2 4 6 8 10

0.0

0.1

0.2

0.3

Mixture Model0.0000010.00010.01Bins

Table 4.1: MLEs for grass site data.

MLE method γ β

Mixture 1.99034 2.62306

Deleted 1.99034 2.62306

Binned 1.96030 2.68286

+ 0.000001 1.27802 2.35741

+ 0.0001 1.45597 2.41718

+ 0.01 1.67482 2.48765

28

Page 38: Parameter Estimation for the Two-Parameter Weibull

Figure 4.2: Here is a histogram of the Grass Site data, with overlaid Weibull curves for the

parameters chosen by the Method of Moments.

Method of Moments

Wind Speed

Den

sity

0 2 4 6 8 10

0.0

0.1

0.2

0.3

Delete0.0000010.00010.01Bins

Table 4.2: MMEs for grass site data.

MME method γ β

Deleted 1.98974 2.62295

Binned 1.97344 2.68672

+ 0.000001 1.85277 2.54206

+ 0.0001 1.85279 2.54206

+ 0.01 1.85387 2.54244

29

Page 39: Parameter Estimation for the Two-Parameter Weibull

Figure 4.3: Here is a histogram of the Grass Site data, with overlaid Weibull curves for the

parameters chosen by our Median Rank Regression Method.

Median Rank Regression

Wind Speed

Den

sity

0 2 4 6 8 10

0.0

0.1

0.2

0.3

Delete0.0000010.00010.01Bins

Table 4.3: MRR estimates for grass site data.

MRR method γ β

Deleted 2.00652 2.62908

Binned 1.88911 2.70797

+ 0.000001 0.36846 6.21900

+ 0.0001 0.57041 4.07870

+ 0.01 1.07205 2.90100

We can also see that all methods are similar enough to show that each method would

be sufficient in determining our parameter estimates. Table 4.4 emphasizes this point because

30

Page 40: Parameter Estimation for the Two-Parameter Weibull

the estimated parameter estimates are within 2 one-hundredths of each other. Graphs with

overlaid Weibull curves and tables of parameter estimates for the remaining sites can be

found in appendix A.

4.5 Summary

If we look at the resulting parameter estimates from each data set, we can see that the

methods in which we replaced the zeros with small numbers gave too much weight to the

small values in this data set. This was the case in both sets of the MLE and MRR estimates.

The method of moments did not seem to change significantly between each of the methods.

Also, looking at the binned data, I noticed that the density of the overlaid curve is slightly

higher than the actual data because I am rounding the data up. Finally, for the MLE our

mixture model proved to produce the exact estimates as our deleted data method, and the

estimate for π was the ratio of the number of non-zero data points to the total number of

data points. The values obtained by nlm were off by a few ten-millionths. If we look at

what appear graphically to be the best estimates for each method, we see that they are all

almost the same. This is shown in the table below. Note that the estimate for π in the MLE

is compared to the ratio of the number of non-zero data points to the total number of data

points in both the MOM and MRR methods.

Table 4.4: The parameter estimates for the MLE mixture and the MME and MRR deleted

methods. The deleted methods mimic the mixture model. Notice how close these estimates

are to each other.

γ β π

MLE mixture 1.99034 2.62306 0.97118

MME deleted 1.98974 2.62295 0.97118

MRR deleted 2.00652 2.62908 0.97118

31

Page 41: Parameter Estimation for the Two-Parameter Weibull

A graphical comparison showing each method would not tell us much because of how

close the estimates are to each other; the three lines would overlay each other. From this we

can see that no matter what the true parameters are, the estimates for each method are all

going to have approximately the same accuracy. This is due to the fact that our data set is

very large.

32

Page 42: Parameter Estimation for the Two-Parameter Weibull

BIBLIOGRAPHY

Casella, G., and Berger, R. L. (2002), Statistical Infrerence (2nd ed.), Duxbury.

Celik, A. N. (2003), “A Statistical Analysis of Wind Power Density Based on the Weibull

and Rayleigh Models at the Southern Region of Turkey,” Renewable Energy, 29, 593–604,

(http://www.elsvier.com/locate/renene).

Coles, S. (2001), An Introduction to Statistical Modeling of Extreme Values, Springer - Verlag

London Limited.

Collett, D. (2009), Modelling Survival Data in Medical Research (2nd ed.), Chapman and

Hall/CRC.

Corotis, R. B. (1979), “Statistical Models for Wind Characteristics at Potential Wind Energy

Conversion Sites,” United States Department of Energy, (Work performed under contract

No. EY-76-S-06-2342).

Hennessey, Jr., J. P. (1977), “Some Aspects of Wind Power Statistics,” Journal of Applied

Meteorology, 16.

Jones, O., Maillardet, R., and Robinson, A. (2009), Introduction to Scientific Programming

and Simulation Using R, Chapman and Hall/CRC.

Murthy, D. P., Xie, M., and Jiang, R. (2004), Weibull Models, John Wiley and Sons, Inc.

ReliaSoft Corportation (1996–2006), “Estimation of Weibull Parameters,”

(http://www.weibull.com/LifeDataWeb/).

33

Page 43: Parameter Estimation for the Two-Parameter Weibull

Seguro, J., and Lambert, T. (2000), “Modern estimation of the parameters of the Weibull

wind speed distribution for wind energy analysis,” Journal of Wind Engineering and In-

dustrial Aerodynamics, 85, 75–84.

Utah State Universtity—Department of Soil Physics (2009–2010), “TWDEF Site Data,”

(http://twdef.usu.edu/view.html).

Weisser, D. (2003), “A Wind Energy Analysis of Grenada: an Estimation

Using the ’Weibull’ Density Function,” Renewable Energy, 28, 1803–1812,

(http://www.elsvier.com/locate/renene).

Wu, S.-J. (2002), “Estimations of the Parameters of the Weibull Distribution with Progres-

sively Censored Data,” Journal of The Japan Statistical Society, 32, 155–163.

Zhang, L., Xie, M., and Tang, L. (2007), “A study of two estimation approaches for param-

eters of Weibull distribution based on WPP,” Reliability Engineering and System Safety,

92, 360–368.

34

Page 44: Parameter Estimation for the Two-Parameter Weibull

APPENDICES

35

Page 45: Parameter Estimation for the Two-Parameter Weibull
Page 46: Parameter Estimation for the Two-Parameter Weibull

appendix a

ADDITIONAL GRAPHS

A.1 Graphs of Normality

Maximum Likelihood Method

Figure A.1: Normally Distributed Parameter Estimates: Both are distributions of the

parameters for the maximum likelihood method, with γ = 5, β = 90, and n = 20.

β

Den

sity

75 80 85 90 95 100 105

0.00

0.02

0.04

0.06

0.08

0.10

γ

Den

sity

4 6 8 10

0.0

0.1

0.2

0.3

0.4

37

Page 47: Parameter Estimation for the Two-Parameter Weibull

Figure A.2: Normally Distributed Parameter Estimates: Both are distributions of the

parameters for the maximum likelihood method, with γ = 5, β = 90, and n = 100.

β

Den

sity

84 86 88 90 92 94 96

0.00

0.05

0.10

0.15

0.20

γ

Den

sity

4.0 4.5 5.0 5.5 6.0 6.50.

00.

20.

40.

60.

81.

0

Figure A.3: Normally Distributed Parameter Estimates: Both are distributions of the

parameters for the maximum likelihood method, with γ = 5, β = 90, and n = 10000.

β

Den

sity

89.6 89.8 90.0 90.2 90.4 90.6

0.0

0.5

1.0

1.5

2.0

γ

Den

sity

4.85 4.90 4.95 5.00 5.05 5.10

02

46

810

38

Page 48: Parameter Estimation for the Two-Parameter Weibull

Figure A.4: Normally Distributed Parameter Estimates: Both are distributions of the

parameters for the maximum likelihood method, with γ = 2, β = 2.5, and n = 20.

β

Den

sity

2.0 2.5 3.0 3.5

0.0

0.2

0.4

0.6

0.8

1.0

1.2

1.4

γ

Den

sity

1.5 2.0 2.5 3.0 3.5 4.0 4.50.

00.

20.

40.

60.

81.

0

Figure A.5: Normally Distributed Parameter Estimates: Both are distributions of the

parameters for the maximum likelihood method, with γ = 2, β = 2.5, and n = 100.

β

Den

sity

2.2 2.4 2.6 2.8

0.0

0.5

1.0

1.5

2.0

2.5

3.0

γ

Den

sity

1.6 1.8 2.0 2.2 2.4 2.6

0.0

0.5

1.0

1.5

2.0

39

Page 49: Parameter Estimation for the Two-Parameter Weibull

Figure A.6: Normally Distributed Parameter Estimates: Both are distributions of the

parameters for the maximum likelihood method, with γ = 2, β = 2.5, and n = 10000.

β

Den

sity

2.46 2.48 2.50 2.52 2.54

05

1015

2025

30

γ

Den

sity

1.96 1.98 2.00 2.02 2.040

510

1520

25

Method of Moments

Figure A.7: Normally Distributed Parameter Estimates: Both are distributions of the

parameters for the method of moments, with γ = 5, β = 90, and n = 20.

β

Den

sity

75 80 85 90 95 100 105

0.00

0.02

0.04

0.06

0.08

γ

Den

sity

4 6 8 10

0.0

0.1

0.2

0.3

0.4

40

Page 50: Parameter Estimation for the Two-Parameter Weibull

Figure A.8: Normally Distributed Parameter Estimates: Both are distributions of the

parameters for the method of moments, with γ = 5, β = 90, and n = 100.

β

Den

sity

84 86 88 90 92 94 96

0.00

0.05

0.10

0.15

0.20

γ

Den

sity

4.0 4.5 5.0 5.5 6.0 6.50.

00.

20.

40.

60.

8

Figure A.9: Normally Distributed Parameter Estimates: Both are distributions of the

parameters for the method of moments, with γ = 5, β = 90, and n = 10000.

β

Den

sity

89.6 89.8 90.0 90.2 90.4 90.6

0.0

0.5

1.0

1.5

2.0

2.5

γ

Den

sity

4.90 4.95 5.00 5.05 5.10 5.15

02

46

810

41

Page 51: Parameter Estimation for the Two-Parameter Weibull

Figure A.10: Normally Distributed Parameter Estimates: Both are distributions of

the parameters for the method of moments, with γ = 2, β = 2.5, and n = 20.

β

Den

sity

2.0 2.5 3.0 3.5

0.0

0.2

0.4

0.6

0.8

1.0

1.2

1.4

γ

Den

sity

1.5 2.0 2.5 3.0 3.5 4.0 4.50.

00.

20.

40.

60.

81.

0

Figure A.11: Normally Distributed Parameter Estimates: Both are distributions of

the parameters for the method of moments, with γ = 2, β = 2.5, and n = 100.

β

Den

sity

2.2 2.4 2.6 2.8

0.0

0.5

1.0

1.5

2.0

2.5

3.0

γ

Den

sity

1.6 1.8 2.0 2.2 2.4 2.6

0.0

0.5

1.0

1.5

2.0

42

Page 52: Parameter Estimation for the Two-Parameter Weibull

Figure A.12: Normally Distributed Parameter Estimates: Both are distributions of

the parameters for the method of moments, with γ = 2, β = 2.5, and n = 10000.

β

Den

sity

2.46 2.48 2.50 2.52 2.54

05

1015

2025

30

γ

Den

sity

1.94 1.96 1.98 2.00 2.02 2.040

510

1520

25

Median Rank Regression

Figure A.13: Normally Distributed Parameter Estimates: Both are distributions of

the parameters for the median rank regression method, with γ = 5, β = 90, and n = 20.

β

Den

sity

75 80 85 90 95 100 105

0.00

0.02

0.04

0.06

0.08

γ

Den

sity

2 4 6 8 10

0.0

0.1

0.2

0.3

0.4

43

Page 53: Parameter Estimation for the Two-Parameter Weibull

Figure A.14: Normally Distributed Parameter Estimates: Both are distributions of

the parameters for the median rank regression method, with γ = 5, β = 90, and n = 100.

β

Den

sity

84 86 88 90 92 94 96

0.00

0.05

0.10

0.15

0.20

γ

Den

sity

3.5 4.0 4.5 5.0 5.5 6.0 6.50.

00.

20.

40.

60.

8

Figure A.15: Normally Distributed Parameter Estimates: Both are distributions of

the parameters for the median rank regression method, with γ = 5, β = 90, and n = 10000.

β

Den

sity

89.4 89.6 89.8 90.0 90.2 90.4 90.6

0.0

0.5

1.0

1.5

2.0

γ

Den

sity

4.8 4.9 5.0 5.1

02

46

8

44

Page 54: Parameter Estimation for the Two-Parameter Weibull

Figure A.16: Normally Distributed Parameter Estimates: Both are distributions of

the parameters for the median rank regression method, with γ = 2, β = 2.5, and n = 20.

β

Den

sity

2.0 2.5 3.0 3.5

0.0

0.2

0.4

0.6

0.8

1.0

1.2

1.4

γ

Den

sity

1.0 1.5 2.0 2.5 3.0 3.5 4.00.

00.

20.

40.

60.

81.

0

Figure A.17: Normally Distributed Parameter Estimates: Both are distributions of

the parameters for the median rank regression method, with γ = 2, β = 2.5, and n = 100.

β

Den

sity

2.2 2.4 2.6 2.8 3.0

0.0

0.5

1.0

1.5

2.0

2.5

γ

Den

sity

1.4 1.6 1.8 2.0 2.2 2.4 2.6

0.0

0.5

1.0

1.5

2.0

45

Page 55: Parameter Estimation for the Two-Parameter Weibull

Figure A.18: Normally Distributed Parameter Estimates: Both are distributions of

the parameters for the median rank regression method, with γ = 2, β = 2.5, and n = 10000.

β

Den

sity

2.46 2.48 2.50 2.52 2.54

05

1015

2025

30

γ

Den

sity

1.95 2.00 2.050

510

15

46

Page 56: Parameter Estimation for the Two-Parameter Weibull

A.2 Wind Speed Data with Overlaid Weibull Curves

MLE method γ β

Mixture 1.98968 1.31464

Deleted 1.98968 1.31464

Binned 1.94784 1.36516

Add 0.000001 0.77568 1.02308

Add 0.0001 1.00373 1.08067

Add 0.01 1.37274 1.15694

Table A.1: MLEs for the aspen site.

MME method γ β

Deleted 2.01276 1.31787

Binned 1.94667 1.36504

+ 0.000001 1.68236 1.20933

+ 0.0001 1.68241 1.20934

+ 0.01 1.68710 1.21042

Table A.2: MMEs for the aspen site.

MRR method γ β

Deleted 1.90188 1.33728

Binned 1.90098 1.37734

+ 0.000001 0.26718 3.02624

+ 0.0001 0.41547 1.98037

+ 0.01 0.84196 1.38628

Table A.3: MRR estimates for the aspen site.

47

Page 57: Parameter Estimation for the Two-Parameter Weibull

Maximum Likelihood

Wind Speed

Den

sity

0 1 2 3 4 5 6

0.0

0.2

0.4

0.6

0.8

Mixture Model0.0000010.00010.01Bins

Method of Moments

Wind SpeedD

ensi

ty0 1 2 3 4 5 6

0.0

0.2

0.4

0.6

0.8

Delete0.0000010.00010.01Bins

Median Rank Regression

Wind Speed

Den

sity

0 1 2 3 4 5 6

0.0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

Delete0.0000010.00010.01Bins

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●

●● ●●●

−3 −2 −1 0 1

−10

−8

−6

−4

−2

02

Median Rank Regression

log(t)

log(

1/S

(t))

Figure A.19: Graphical summary of the parameter estimates for the aspen site. The method

of moments appears to be most “robust” in estimation for all methods. In all methods, the

deleted/mixture and binned data parameter estimates are most accurate.

48

Page 58: Parameter Estimation for the Two-Parameter Weibull

MLE method γ β

Mixture 1.91104 0.71525

Deleted 1.91104 0.71525

Binned 1.08684 0.50213

+ 0.000001 0.25449 0.14215

+ 0.0001 0.37822 0.22965

+ 0.01 0.71221 0.38087

Table A.4: MLEs for the conifer site.

MME method γ β

Deleted 2.03695 0.72417

Binned 1.24820 0.52303

+ 0.000001 1.11050 0.46508

+ 0.0001 1.11067 0.46513

+ 0.01 1.12787 0.47051

Table A.5: MMEs for the conifer site.

MRR method γ β

Deleted 1.47805 0.75570

Binned 0.94479 0.52934

+ 0.000001 0.17376 0.26494

+ 0.0001 0.26972 0.32761

+ 0.01 0.57137 0.42676

Table A.6: MRR estimates for the conifer site.

49

Page 59: Parameter Estimation for the Two-Parameter Weibull

Maximum Likelihood

Wind Speed

Den

sity

0.0 0.5 1.0 1.5 2.0 2.5

0.0

0.5

1.0

1.5

2.0

2.5

3.0

3.5

Mixture Model0.0000010.00010.01Bins

Method of Moments

Wind SpeedD

ensi

ty0.0 0.5 1.0 1.5 2.0 2.5

0.0

0.5

1.0

1.5

2.0

2.5

3.0

3.5

Delete0.0000010.00010.01Bins

Median Rank Regression

Wind Speed

Den

sity

0.0 0.5 1.0 1.5 2.0 2.5

0.0

0.5

1.0

1.5

2.0

2.5

3.0

3.5

Delete0.0000010.00010.01Bins

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●

●●●

−3 −2 −1 0 1

−10

−8

−6

−4

−2

02

Median Rank Regression

log(t)

log(

1/S

(t))

Figure A.20: Graphical summary of the parameter estimates for the conifer site. Notice the

high proportion of values close to zero.

50

Page 60: Parameter Estimation for the Two-Parameter Weibull

MLE method γ β

Mixture 1.80668 4.81714

Deleted 1.80668 4.81714

Binned 1.86742 4.98842

+ 0.000001 1.66072 4.70657

+ 0.0001 1.70347 4.73489

+ 0.01 1.74780 4.76414

Table A.7: MLEs for the summit.

MME method γ β

Deleted 1.78376 4.80543

Binned 1.84069 4.97420

+ 0.000001 1.76297 4.77663

+ 0.0001 1.76298 4.77663

+ 0.01 1.76307 4.77671

Table A.8: MMEs for the summit.

MRR method γ β

Deleted 1.87337 4.80686

Binned 1.98354 4.95250

+ 0.000001 0.75611 6.98805

+ 0.0001 1.07748 5.70484

+ 0.01 1.53393 4.98629

Table A.9: MRR estimates for the summit.

51

Page 61: Parameter Estimation for the Two-Parameter Weibull

Maximum Likelihood

Wind Speed

Den

sity

0 5 10 15

0.00

0.05

0.10

0.15

Mixture Model0.0000010.00010.01Bins

Method of Moments

Wind SpeedD

ensi

ty0 5 10 15

0.00

0.05

0.10

0.15

Delete0.0000010.00010.01Bins

Median Rank Regression

Wind Speed

Den

sity

0 5 10 15

0.00

0.05

0.10

0.15

Delete0.0000010.00010.01Bins

●●

●●

●●●

●●●●●

●●●●

●●●●●●●●●●●●●●●●

●●●●●●●●

●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

−4 −2 0 2

−8

−6

−4

−2

02

Median Rank Regression

log(t)

log(

1/S

(t))

Figure A.21: Graphical summary for the parameter estimates for the summit site. There is

evidence here that the MRR method is most sensitive to the zero data.

52

Page 62: Parameter Estimation for the Two-Parameter Weibull

MLE method γ β

Mixture 1.44645 2.32531

Deleted 1.44645 2.32531

Binned 1.49738 2.40691

+ 0.000001 1.00917 2.05087

+ 0.0001 1.12541 2.11278

+ 0.01 1.26391 2.18411

Table A.10: MLEs for the sage site.

MME method γ β

Deleted 1.45800 2.33109

Binned 1.48168 2.40055

+ 0.000001 1.38578 2.24106

+ 0.0001 1.38579 2.24107

+ 0.01 1.38644 2.24158

Table A.11: MMEs for the summit.

MRR method γ β

Deleted 1.39711 2.34865

Binned 1.51890 2.40479

+ 0.000001 0.38197 4.50466

+ 0.0001 0.57915 3.11101

+ 0.01 0.97749 2.39434

Table A.12: MRR estimates for the sage site.

53

Page 63: Parameter Estimation for the Two-Parameter Weibull

Maximum Likelihood

Wind Speed

Den

sity

0 2 4 6 8 10 12 14

0.0

0.1

0.2

0.3

0.4

0.5

Mixture Model0.0000010.00010.01Bins

Method of Moments

Wind SpeedD

ensi

ty0 2 4 6 8 10 12 14

0.0

0.1

0.2

0.3

0.4

0.5

Delete0.0000010.00010.01Bins

Median Rank Regression

Wind Speed

Den

sity

0 2 4 6 8 10 12 14

0.0

0.1

0.2

0.3

0.4

0.5

Delete0.0000010.00010.01Bins

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●

−3 −2 −1 0 1 2

−10

−8

−6

−4

−2

02

Median Rank Regression

log(t)

log(

1/S

(t))

Figure A.22: Graphical summary of the parameter estimates for the sage site. Once again,

the MME proves to be most robust when comparing each solution to remove the zeros from

our data.

54

Page 64: Parameter Estimation for the Two-Parameter Weibull

appendix b

C-CODE

B.1 Code for Simulation Studies

1 /∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗

2 Mark Nie l s en

3 C Pro j ec t

4 (Adapted from code by Dr . David Engler )

5 ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/

6

7

8 #inc lude <s t d i o . h>

9 #inc lude <g s l / g s l r n g . h> // r equ i r ed f o r random number gene ra t i on

10 #inc lude <g s l / g s l r a n d i s t . h> // r equ i r ed f o r data gene ra t i on from d i s t r i b u t i o n s

11 #inc lude <g s l / gs l mu l t imin . h> // r equ i r ed f o r use o f multimin ( opt imiza t i on )

12 //#inc lude <g s l / g s l c d f . h> // r equ i r ed f o r CDF va lues

13 //#inc lude <g s l / g s l s t a t i s t i c s . h>

14 //#inc lude <g s l / g s l s o r t . h>

15 #inc lude <g s l / gs l s f gamma . h>

16

17 #inc lude <math . h>

18

19 # de f i n e npop 10000 // number o f data po in t s

20 # de f i n e nparam 2 // number o f parameters to be est imated in func t i on

21 # de f i n e nsim 1000 // number o f s imu la t i on s

22

23 g s l r n g ∗ r ; /∗ g l oba l genera to r ∗/

24

25 //This i s my Weibull f unc t i on

26 double we i bu l l pd f ( double dat , double theta [ nparam ] ) {

27 double we ibu l l ;

28 we ibu l l=theta [ 0 ] / ( pow( theta [ 1 ] , theta [ 0 ] ) ) ∗pow( dat , ( theta [0 ]−1) ) ∗exp(−pow( dat/ theta

[ 1 ] , theta [ 0 ] ) ) ;

29 re turn ( we ibu l l ) ;

30 }

31

55

Page 65: Parameter Estimation for the Two-Parameter Weibull

32

33 // ##### DEFINE FUNCTION TO BE MINIMIZED

34 // params = data

35 // v = vecto r o f parameters to be i d e n t i f i e d

36 double w e i b u l l l l ( const g s l v e c t o r ∗v , void ∗params )

37 {

38 double ∗p = ( double ∗) params ; // convert data in to readab le format

39 double w e i b l l v a l = 0 ; // i n i t i a l i z e va lue o f neg l o g l i k e l i h o o d

40 double gamma, beta ;

41 gamma = g s l v e c t o r g e t (v , 0) ; // a s s i gn va lue s o f param vecto r to s p e c i f i c

v a r i a b l e s

42 beta = g s l v e c t o r g e t (v , 1) ;

43 i f (gamma<=0){

44 return (1 e10 ) ;

45 } e l s e i f ( beta<=0){

46 return (1 e10 ) ;

47 } e l s e {

48 i n t i ;

49 f o r ( i =0; i<npop ; i++) {

50 w e i b l l v a l =

51 w e i b l l v a l −

52 log (gamma/(pow( beta , gamma) ) ) − (gamma−1)∗ l og (p [ i ] ) + pow( ( p [ i ] / beta ) ,

gamma) ;

53 }

54 return ( w e i b l l v a l ) ;

55 }

56 }

57

58

59 // wr i t e a program to s o r t v e c t o r s

60 void s o r t i n g ( double x [ npop ] ) {

61 i n t i ;

62 i n t j ;

63 double temp ;

64 f o r ( i =0; i<npop ; i++){

65 f o r ( j=i +1; j<npop ; j++){

66 i f ( x [ j ] < x [ i ] ) {

67 temp=x [ i ] ;

68 x [ i ]=x [ j ] ;

56

Page 66: Parameter Estimation for the Two-Parameter Weibull

69 x [ j ]=temp ;

70 }

71 }

72 }

73 return ;

74 }

75

76 // Secant Method root f i nd i n g .

77 double b i s e c t ( double lo , double hi , double e , i n t max , double mu[ 2 ] )

78 {

79 double mid ;

80 i n t i ;

81 f o r ( i =0; i <50; i++){

82 mid = ( hi+lo ) /2 ;

83 i f ( ( gs l s f gamma (1+2/ hi ) /pow( gs l s f gamma (1+1/ hi ) , 2 ) − mu[ 1 ] / pow(mu[ 0 ] , 2 ) )

84 ∗( gs l s f gamma (1+2/mid ) /pow( gs l s f gamma (1+1/mid ) ,2 ) − mu[ 1 ] / pow(mu[ 0 ] , 2 ) ) <=

0) {

85 l o=mid ;}

86 e l s e i f ( ( gs l s f gamma (1+2/ l o ) /pow( gs l s f gamma (1+1/ l o ) , 2 ) − mu[ 1 ] / pow(mu[ 0 ] , 2 ) )

87 ∗( gs l s f gamma (1+2/mid ) /pow( gs l s f gamma (1+1/mid ) ,2 ) − mu[ 1 ] / pow(mu[ 0 ] , 2 ) ) <

0) {

88 h i=mid ;}

89 }

90 return mid ;

91 }

92

93

94

95 //Function to f i nd minimum between two numbers .

96 double min ( double val1 , double va l2 ) {

97 double minimum ;

98 i f ( val1<val2 ) {

99 minimum=val1 ;

100 } e l s e {

101 minimum=val2 ;

102 }

103 re turn (minimum) ;

104 }

105

57

Page 67: Parameter Estimation for the Two-Parameter Weibull

106 // ##### GENERATE DATA

107 void gendata ( double theta [ nparam ] , double par [ npop ] , FILE ∗ sim data , i n t j )

108 {

109 /∗ ###### se t up random number generato r ########################### ∗/

110 const g s l r n g t yp e ∗ TT;

111 g s l r n g env s e tup ( ) ;

112 TT = g s l r n g d e f a u l t ;

113 r = g s l r n g a l l o c (TT) ;

114 g s l r n g s e t ( r , j ) ; // s e t seed based on s imu la t i on number

115 g s l r n g f r e e ( r ) ; // func t i on f r e e s a l l the memory a s s o c i a t ed with the genera to r

r

116 /∗ ################################################################# ∗/

117 i n t i ;

118 double r un i f ;

119 double alpha ;

120

121 f o r ( i =0; i<npop ; i++) {

122 r un i f= g s l rng un i f o rm ( r ) ;

123 par [ i ]= theta [ 1 ] ∗ pow(− l og ( r un i f ) ,1/ theta [ 0 ] ) ;

124 f p r i n t f ( sim data ,”% f , ” , par [ i ] ) ;

125 }

126 f p r i n t f ( sim data ,”\n”) ;

127 re turn ;

128 }

129

130

131

132 /∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ Least Squares Regres s ion Function

∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/

133 // This i s a program in C to conduct l e a s t squares r e g r e s s i o n with

134 // the f o l l ow i ng data po in t s .

135

136 void r e g r e s s ( double y [ npop ] , double x [ npop ] , double beta [ 2 ] ) {

137 i n t po in t s=npop ;

138 i n t i ;

139 double xbar=0;

140 double ybar=0;

141

142 double div=po in t s ;

58

Page 68: Parameter Estimation for the Two-Parameter Weibull

143 //compute xbar & ybar

144 f o r ( i =0; i<po in t s ; i++){

145 xbar=xbar+x [ i ] / div ;

146 ybar=ybar+y [ i ] / div ;

147 }

148 double f r a c t [ 2 ] ;

149 f r a c t [ 0 ]=0 ;

150 f r a c t [ 1 ]=0 ;

151 //now mult ip ly to get our beta ext imates

152 f o r ( i =0; i<po in t s ; i++){

153 f r a c t [0 ]= f r a c t [ 0 ]+( x [ i ]−xbar ) ∗y [ i ] ;

154 f r a c t [1 ]= f r a c t [1 ]+pow( ( x [ i ]−xbar ) ,2 ) ;

155 }

156 beta [1 ]= f r a c t [ 0 ] / f r a c t [ 1 ] ;

157 beta [0 ]= ybar−beta [ 1 ] ∗ xbar ;

158

159 return ;

160 }

161

162

163 /∗∗ Median Rank Regres s ion Method ∗∗/

164 void medianrank ( double data [ npop ] , double thta [ nparam ] ) {

165 double MRR[ nparam ] ;

166 MRR[0]=MRR[1 ]=0 ;

167 i n t k ;

168 double ynew [ npop ] ;

169 double xnew [ npop ] ;

170 f o r ( k=0;k<npop ; k++){

171 //compute y ’ s

172 // log ( l og (1/(1−( i − .3) /( npop+.4) ) ) )

173 ynew [ k]= log ( l og (1/(1−((k+1)−.3) /( npop+.4) ) ) ) ;

174

175 //compute x ’ s

176 // log (x [ i ] )

177 xnew [ k]= log ( data [ k ] ) ;

178 }

179 // f i t the model .

180 r e g r e s s (ynew , xnew ,MRR) ;

181

59

Page 69: Parameter Estimation for the Two-Parameter Weibull

182 //compute parameters .

183 //gamma=c1

184 thta [0 ]=MRR[ 1 ] ;

185 // beta=exp(−c0/gamma)

186 thta [1 ]= exp(−MRR[ 0 ] / thta [ 0 ] ) ;

187

188 return ;

189 }

190

191

192 i n t

193 main ( void )

194 {

195

196

197 /∗ ###### se t up multimin ########################################## ∗/

198 const g s l mu l t im in fm in im i z e r type ∗T =

199 gs l mul t imin fmin imizer nms implex2 ;

200 g s l mu l t im in fm in im i z e r ∗ s = NULL;

201 g s l v e c t o r ∗ s s ;

202 g s l v e c t o r ∗x ;

203 g s l mu l t im in func t i on minex func ;

204 s i z e t i t e r ;

205 i n t s t a tu s ;

206 double s i z e ;

207 /∗ ################################################################# ∗/

208

209 double par [ npop ] ;

210 double pargamma [ npop ] ;

211 double theta [ nparam ] ;

212 // theta =2 ,2.5

213

214 //gamma

215 theta [ 0 ] = 2 ;

216 // beta

217 theta [ 1 ] = 2 . 5 ;

218

219 i n t j ;

220 // f o r MRR

60

Page 70: Parameter Estimation for the Two-Parameter Weibull

221 double MRRest [ nparam ] ;

222 MRRest [0 ]=MRRest [ 1 ]=0 ;

223

224 FILE ∗ e s t mle ;

225 e s t mle= fopen ( ” . . / simdata/bigB/ml e e s t 1 b i g . csv ” , ”w”) ;

226 FILE ∗ es t mrr ;

227 es t mrr = fopen ( ” . . / simdata/bigB/mrr e s t 1 b i g . csv ” , ”w”) ;

228 FILE ∗est mom ;

229 est mom = fopen ( ” . . / simdata/bigB/mom est1 big . csv ” , ”w”) ;

230 FILE ∗ s im data ;

231 s im data = fopen ( ” . . / simdata/bigB/ sim data1 bigA . csv ” , ”w”) ;

232

233 f o r ( j =0; j<nsim ; j++) {

234

235 i t e r =0;

236 // generate data

237 gendata ( theta , par , s im data , j ) ;

238

239 double pa r so r t [ npop ] ;

240 i n t k ;

241 f o r ( k=0;k<npop ; k++){

242 par so r t [ k]=par [ k ] ;

243 }

244

245 /∗∗ Maximum Like l i hood Est imation ∗∗/

246

247 // S ta r t i ng va lue s ( f o r opt imiza t i on )

248 x = g s l v e c t o r a l l o c (nparam) ;

249 g s l v e c t o r s e t (x , 0 , 1 . 0 ) ; // s e t i n i t i a l gamma value

250 g s l v e c t o r s e t (x , 1 , 2 . 0 ) ; // s e t i n i t i a l beta value

251

252 // Set i n i t i a l s tep s i z e s to 1

253 s s = g s l v e c t o r a l l o c (nparam) ;

254 g s l v e c t o r s e t a l l ( ss , 1 . 0 ) ;

255

256 // I n i t i a l i z e method and i t e r a t e

257 minex func . n = nparam ; // number o f parameters

258 minex func . f = w e i b u l l l l ; // func t i on o f i n t e r e s t

259 minex func . params = par so r t ; // data

61

Page 71: Parameter Estimation for the Two-Parameter Weibull

260

261 s = g s l mu l t im i n fm in im i z e r a l l o c (T, nparam) ;

262 g s l mu l t im in fm in im i z e r s e t ( s , &minex func , x , s s ) ;

263

264 do

265 {

266 s t a tu s = g s l mu l t im i n fm i n im i z e r i t e r a t e ( s ) ;

267 i f ( s t a tu s )

268 break ;

269 s i z e = g s l mu l t im i n fm in im i z e r s i z e ( s ) ;

270 s t a tu s = g s l mu l t im i n t e s t s i z e ( s i z e , 1e−5) ;

271 i f ( s t a tu s == GSL SUCCESS)

272 {

273 f p r i n t f ( est mle ,”% f , %f \n” , g s l v e c t o r g e t ( s−>x , 0) , g s l v e c t o r g e t ( s−>x

, 1) ) ;

274 }

275 }

276 whi l e ( s t a tu s == GSL CONTINUE && i t e r < 100) ;

277 g s l v e c t o r f r e e ( x ) ;

278 g s l v e c t o r f r e e ( s s ) ;

279 g s l mu l t im i n fm in im i z e r f r e e ( s ) ;

280

281

282 /∗∗ Median Rank Regres s ion Method ∗∗/

283

284 // s o r t the data .

285 s o r t i n g ( pa r so r t ) ;

286

287 medianrank ( parsort ,MRRest) ;

288

289 // p r in t to f i l e .

290 f p r i n t f ( est mrr ,”% f , %f \n” ,MRRest [ 0 ] ,MRRest [ 1 ] ) ;

291

292 /∗∗ Method o f Moments Est imation ∗∗/

293

294 double MOMest [ nparam ] ;

295 MOMest[0 ]=MOMest[ 1 ]=1 ;

296 // de f i n e moments .

297 double mu [ 2 ] ;

62

Page 72: Parameter Estimation for the Two-Parameter Weibull

298 mu[0 ]=mu[1 ]=0 ;

299 f o r ( k=0;k<npop ; k++){

300 double n=npop ;

301 // mu1=E(x )

302 mu[0 ]=mu[0]+ par so r t [ k ] / n ;

303 // mu2=E(xˆ2)

304 mu[1 ]=mu[1]+pow( par so r t [ k ] , 2 ) /n ;

305 }

306

307

308 //Use root f i nd i n g to es t imate gamma

309 double max=1000;

310 double e r r o r=1e−100;

311 MOMest[0 ]= b i s e c t ( . 1 , 1 0 1 . 3 , e r ro r ,max ,mu) ;

312

313 // Solve f o r beta

314 // beta=mu1/GAMMA(1+1/gamma)

315 MOMest[1 ]=mu[ 0 ] / gs l s f gamma (1+1/MOMest [ 0 ] ) ;

316 // p r in t to f i l e .

317 f p r i n t f ( est mom,”%f , %f \n” ,MOMest [ 0 ] ,MOMest [ 1 ] ) ;

318 }

319

320 f c l o s e ( est mom) ;

321 f c l o s e ( e s t mrr ) ;

322 f c l o s e ( e s t mle ) ;

323 f c l o s e ( s im data ) ;

324 re turn ;

325 }

B.2 Code to Generate from Gamma for Misspecification Studies

1 /∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗

2 Mark Nie l s en

3 C Pro j ec t

4 ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/

5

6

7 #inc lude <s t d i o . h>

8 #inc lude <g s l / g s l r n g . h> // r equ i r ed f o r random number gene ra t i on

9 #inc lude <g s l / g s l r a n d i s t . h> // r equ i r ed f o r data gene ra t i on from d i s t r i b u t i o n s

63

Page 73: Parameter Estimation for the Two-Parameter Weibull

10 #inc lude <g s l / gs l mu l t imin . h> // r equ i r ed f o r use o f multimin ( opt imiza t i on )

11 //#inc lude <g s l / g s l c d f . h> // r equ i r ed f o r CDF va lues

12 //#inc lude <g s l / g s l s t a t i s t i c s . h>

13 //#inc lude <g s l / g s l s o r t . h>

14 #inc lude <g s l / gs l s f gamma . h>

15

16 #inc lude <math . h>

17

18 # de f i n e npop 1000 // number o f data po in t s

19 # de f i n e nparam 2 // number o f parameters to be est imated in func t i on

20 # de f i n e nsim 1 // number o f s imu la t i on s

21

22 g s l r n g ∗ r ; /∗ g l oba l genera to r ∗/

23

24 //This i s my Weibull f unc t i on

25 double we i bu l l pd f ( double dat , double theta [ nparam ] ) {

26 double we ibu l l ;

27 we ibu l l=theta [ 0 ] / ( pow( theta [ 1 ] , theta [ 0 ] ) ) ∗pow( dat , ( theta [0 ]−1) ) ∗exp(−pow( dat/ theta

[ 1 ] , theta [ 0 ] ) ) ;

28 re turn ( we ibu l l ) ;

29 }

30

31

32 // ##### DEFINE FUNCTION TO BE MINIMIZED

33 // params = data

34 // v = vecto r o f parameters to be i d e n t i f i e d

35 double w e i b u l l l l ( const g s l v e c t o r ∗v , void ∗params )

36 {

37 double ∗p = ( double ∗) params ; // convert data in to readab le format

38 double w e i b l l v a l = 0 ; // i n i t i a l i z e va lue o f neg l o g l i k e l i h o o d

39 double gamma, beta ;

40 gamma = g s l v e c t o r g e t (v , 0) ; // a s s i gn va lue s o f param vecto r to s p e c i f i c

v a r i a b l e s

41 beta = g s l v e c t o r g e t (v , 1) ;

42 i f (gamma<=0){

43 return (1 e10 ) ;

44 } e l s e i f ( beta<=0){

45 return (1 e10 ) ;

46 } e l s e {

64

Page 74: Parameter Estimation for the Two-Parameter Weibull

47 i n t i ;

48 f o r ( i =0; i<npop ; i++) {

49 w e i b l l v a l =

50 w e i b l l v a l −

51 log (gamma/(pow( beta , gamma) ) ) − (gamma−1)∗ l og (p [ i ] ) + pow( ( p [ i ] / beta ) ,

gamma) ;

52 }

53 return ( w e i b l l v a l ) ;

54 }

55 }

56

57

58 // wr i t e a program to s o r t v e c t o r s

59 void s o r t i n g ( double x [ npop ] ) {

60 i n t i ;

61 i n t j ;

62 double temp ;

63 f o r ( i =0; i<npop ; i++){

64 f o r ( j=i +1; j<npop ; j++){

65 i f ( x [ j ] < x [ i ] ) {

66 temp=x [ i ] ;

67 x [ i ]=x [ j ] ;

68 x [ j ]=temp ;

69 }

70 }

71 }

72 return ;

73 }

74

75 // Secant Method root f i nd i n g .

76 double b i s e c t ( double lo , double hi , double e , i n t max , double mu[ 2 ] )

77 {

78 double mid ;

79 i n t i ;

80 f o r ( i =0; i <50; i++){

81 mid = ( hi+lo ) /2 ;

82 i f ( ( gs l s f gamma (1+2/ hi ) /pow( gs l s f gamma (1+1/ hi ) , 2 ) − mu[ 1 ] / pow(mu[ 0 ] , 2 ) )

83 ∗( gs l s f gamma (1+2/mid ) /pow( gs l s f gamma (1+1/mid ) ,2 ) − mu[ 1 ] / pow(mu[ 0 ] , 2 ) ) <=

0) {

65

Page 75: Parameter Estimation for the Two-Parameter Weibull

84 l o=mid ;}

85 e l s e i f ( ( gs l s f gamma (1+2/ l o ) /pow( gs l s f gamma (1+1/ l o ) , 2 ) − mu[ 1 ] / pow(mu[ 0 ] , 2 ) )

86 ∗( gs l s f gamma (1+2/mid ) /pow( gs l s f gamma (1+1/mid ) ,2 ) − mu[ 1 ] / pow(mu[ 0 ] , 2 ) ) <

0) {

87 h i=mid ;}

88 }

89 return mid ;

90 }

91

92

93

94 //Function to f i nd minimum between two numbers .

95 double min ( double val1 , double va l2 ) {

96 double minimum ;

97 i f ( val1<val2 ) {

98 minimum=val1 ;

99 } e l s e {

100 minimum=val2 ;

101 }

102 re turn (minimum) ;

103 }

104

105 // ##### GENERATE DATA fo r Gamma(n , 1 )

106 void gammadata ( double n , double par [ npop ] , FILE ∗ sim data2 , i n t j )

107 {

108 /∗ ###### se t up random number generato r ########################### ∗/

109 const g s l r n g t yp e ∗ TT;

110 g s l r n g env s e tup ( ) ;

111 TT = g s l r n g d e f a u l t ;

112 r = g s l r n g a l l o c (TT) ;

113 g s l r n g s e t ( r , j ) ; // s e t seed based on s imu la t i on number

114 g s l r n g f r e e ( r ) ; // func t i on f r e e s a l l the memory a s s o c i a t ed with the genera to r

r

115 /∗ ################################################################# ∗/

116 i n t i , k ;

117 double r un i f ;

118 double alpha ;

119

120 f o r ( i =0; i<npop ; i++) {

66

Page 76: Parameter Estimation for the Two-Parameter Weibull

121 par [ i ]=0;

122 f o r ( k=0;k<n ; k++){

123 r un i f= g s l rng un i f o rm ( r ) ;

124 par [ i ]=par [ i ]− l og ( r un i f ) ;

125 }

126 f p r i n t f ( sim data2 ,”% f , ” , par [ i ] ) ;

127 }

128 f p r i n t f ( sim data2 ,”\n”) ;

129 re turn ;

130 }

131

132

133 /∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ Least Squares Regres s ion Function

∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/

134 // This i s a program in C to conduct l e a s t squares r e g r e s s i o n with

135 // the f o l l ow i ng data po in t s .

136

137 void r e g r e s s ( double y [ npop ] , double x [ npop ] , double beta [ 2 ] ) {

138 i n t po in t s=npop ;

139 i n t i ;

140 double xbar=0;

141 double ybar=0;

142

143 double div=po in t s ;

144 //compute xbar & ybar

145 f o r ( i =0; i<po in t s ; i++){

146 xbar=xbar+x [ i ] / div ;

147 ybar=ybar+y [ i ] / div ;

148 }

149 double f r a c t [ 2 ] ;

150 f r a c t [ 0 ]=0 ;

151 f r a c t [ 1 ]=0 ;

152 //now mult ip ly to get our beta ext imates

153 f o r ( i =0; i<po in t s ; i++){

154 f r a c t [0 ]= f r a c t [ 0 ]+( x [ i ]−xbar ) ∗y [ i ] ;

155 f r a c t [1 ]= f r a c t [1 ]+pow( ( x [ i ]−xbar ) ,2 ) ;

156 }

157 beta [1 ]= f r a c t [ 0 ] / f r a c t [ 1 ] ;

158 beta [0 ]= ybar−beta [ 1 ] ∗ xbar ;

67

Page 77: Parameter Estimation for the Two-Parameter Weibull

159

160 return ;

161 }

162

163

164 /∗∗ Median Rank Regres s ion Method ∗∗/

165 void medianrank ( double data [ npop ] , double thta [ nparam ] ) {

166 double MRR[ nparam ] ;

167 MRR[0]=MRR[1 ]=0 ;

168 i n t k ;

169 double ynew [ npop ] ;

170 double xnew [ npop ] ;

171 f o r ( k=0;k<npop ; k++){

172 //compute y ’ s

173 // log ( l og (1/(1−( i − .3) /( npop+.4) ) ) )

174 ynew [ k]= log ( l og (1/(1−((k+1)−.3) /( npop+.4) ) ) ) ;

175

176 //compute x ’ s

177 // log (x [ i ] )

178 xnew [ k]= log ( data [ k ] ) ;

179 }

180 // f i t the model .

181 r e g r e s s (ynew , xnew ,MRR) ;

182

183 //compute parameters .

184 //gamma=c1

185 thta [0 ]=MRR[ 1 ] ;

186 // beta=exp(−c0/gamma)

187 thta [1 ]= exp(−MRR[ 0 ] / thta [ 0 ] ) ;

188

189 return ;

190 }

191

192

193 i n t

194 main ( void )

195 {

196

197

68

Page 78: Parameter Estimation for the Two-Parameter Weibull

198 /∗ ###### se t up multimin ########################################## ∗/

199 const g s l mu l t im in fm in im i z e r type ∗T =

200 gs l mul t imin fmin imizer nms implex2 ;

201 g s l mu l t im in fm in im i z e r ∗ s = NULL;

202 g s l v e c t o r ∗ s s ;

203 g s l v e c t o r ∗x ;

204 g s l mu l t im in func t i on minex func ;

205 s i z e t i t e r ;

206 i n t s t a tu s ;

207 double s i z e ;

208 /∗ ################################################################# ∗/

209

210 double par [ npop ] ;

211 double pargamma [ npop ] ;

212 double theta [ nparam ] ;

213

214 i n t j ;

215 // f o r MRR

216 double MRRest [ nparam ] ;

217 MRRest [0 ]=MRRest [ 1 ]=0 ;

218

219 FILE ∗ e s t mle ;

220 e s t mle= fopen ( ” . . / simdata/gamma/mle e s t . csv ” , ”w”) ;

221 FILE ∗ es t mrr ;

222 es t mrr = fopen ( ” . . / simdata/gamma/mrr es t . csv ” , ”w”) ;

223 FILE ∗est mom ;

224 est mom = fopen ( ” . . / simdata/gamma/mom est . csv ” , ”w”) ;

225 FILE ∗ s im data2 ;

226 s im data2 = fopen ( ” . . / simdata/gamma/ sim data2 . csv ” , ”w”) ;

227

228 f o r ( j =0; j<nsim ; j++) {

229

230 i t e r =0;

231 // generate data

232 // gendata ( theta , par , s im data , j ) ;

233 i n t n=4;

234 gammadata (n , par , s im data2 , j ) ;

235

236 double pa r so r t [ npop ] ;

69

Page 79: Parameter Estimation for the Two-Parameter Weibull

237 i n t k ;

238 f o r ( k=0;k<npop ; k++){

239 par so r t [ k]=par [ k ] ;

240 }

241

242 /∗∗ Maximum Like l i hood Est imation ∗∗/

243

244 // S ta r t i ng va lue s ( f o r opt imiza t i on )

245 x = g s l v e c t o r a l l o c (nparam) ;

246 g s l v e c t o r s e t (x , 0 , 1 . 0 ) ; // s e t i n i t i a l gamma value

247 g s l v e c t o r s e t (x , 1 , 2 . 0 ) ; // s e t i n i t i a l beta value

248

249 // Set i n i t i a l s tep s i z e s to 1

250 s s = g s l v e c t o r a l l o c (nparam) ;

251 g s l v e c t o r s e t a l l ( ss , 1 . 0 ) ;

252

253 // I n i t i a l i z e method and i t e r a t e

254 minex func . n = nparam ; // number o f parameters

255 minex func . f = w e i b u l l l l ; // func t i on o f i n t e r e s t

256 minex func . params = par so r t ; // data

257

258 s = g s l mu l t im i n fm in im i z e r a l l o c (T, nparam) ;

259 g s l mu l t im in fm in im i z e r s e t ( s , &minex func , x , s s ) ;

260

261 do

262 {

263 s t a tu s = g s l mu l t im i n fm i n im i z e r i t e r a t e ( s ) ;

264 i f ( s t a tu s )

265 break ;

266 s i z e = g s l mu l t im i n fm in im i z e r s i z e ( s ) ;

267 s t a tu s = g s l mu l t im i n t e s t s i z e ( s i z e , 1e−5) ;

268 i f ( s t a tu s == GSL SUCCESS)

269 {

270 f p r i n t f ( est mle ,”% f , %f \n” , g s l v e c t o r g e t ( s−>x , 0) , g s l v e c t o r g e t ( s−>x

, 1) ) ;

271 }

272 }

273 whi l e ( s t a tu s == GSL CONTINUE && i t e r < 100) ;

274 g s l v e c t o r f r e e ( x ) ;

70

Page 80: Parameter Estimation for the Two-Parameter Weibull

275 g s l v e c t o r f r e e ( s s ) ;

276 g s l mu l t im i n fm in im i z e r f r e e ( s ) ;

277

278

279 /∗∗ Median Rank Regres s ion Method ∗∗/

280

281 // s o r t the data .

282 s o r t i n g ( pa r so r t ) ;

283

284 medianrank ( parsort ,MRRest) ;

285

286 // p r in t to f i l e .

287 f p r i n t f ( est mrr ,”% f , %f \n” ,MRRest [ 0 ] ,MRRest [ 1 ] ) ;

288

289 /∗∗ Method o f Moments Est imation ∗∗/

290

291 double MOMest [ nparam ] ;

292 MOMest[0 ]=MOMest[ 1 ]=1 ;

293 // de f i n e moments .

294 double mu [ 2 ] ;

295 mu[0 ]=mu[1 ]=0 ;

296 f o r ( k=0;k<npop ; k++){

297 double n=npop ;

298 // mu1=E(x )

299 mu[0 ]=mu[0]+ par so r t [ k ] / n ;

300 // mu2=E(xˆ2)

301 mu[1 ]=mu[1]+pow( par so r t [ k ] , 2 ) /n ;

302 }

303

304

305 //Use root f i nd i n g to es t imate gamma

306 double max=1000;

307 double e r r o r=1e−100;

308 MOMest[0 ]= b i s e c t ( . 1 , 1 0 1 . 3 , e r ro r ,max ,mu) ;

309

310 // Solve f o r beta

311 // beta=mu1/GAMMA(1+1/gamma)

312 MOMest[1 ]=mu[ 0 ] / gs l s f gamma (1+1/MOMest [ 0 ] ) ;

313 // p r in t to f i l e .

71

Page 81: Parameter Estimation for the Two-Parameter Weibull

314 f p r i n t f ( est mom,”%f , %f \n” ,MOMest [ 0 ] ,MOMest [ 1 ] ) ;

315 }

316

317 f c l o s e ( est mom) ;

318 f c l o s e ( e s t mrr ) ;

319 f c l o s e ( e s t mle ) ;

320 f c l o s e ( s im data2 ) ;

321 re turn ;

322 }

72

Page 82: Parameter Estimation for the Two-Parameter Weibull

appendix c

R-CODE

C.1 Code to Generate from Normals for Misspecification Studies

1 ###########

2 # Mark Nie l s en

3 # Fina l Pro j e c t

4

5 l i b r a r y ( spuRs )

6 l i b r a r y ( xtab l e )

7 l i b r a r y (msm)

8

9 #######################################################

10 ####repeat t h i s l a s t part f o r m i s s p e c i f i e d gamma(4 , 0 ) ;

11

12 miss=read . csv ( ” . . / simdata/gamma/ sim data2 . csv ” , header=F)

13 miss=as . numeric ( miss [−1001])

14

15 mle . miss=read . csv ( ” . . / simdata/gamma/mle e s t . csv ” , header=F)

16 mom. miss=read . csv ( ” . . / simdata/gamma/mom est . csv ” , header=F)

17 mrr . miss=read . csv ( ” . . / simdata/gamma/mrr es t . csv ” , header=F)

18

19 #KS t e s t s

20 l g . gamma=c (

21 ks . t e s t ( miss , ’ pweibul l ’ , mle . miss [ 1 , 1 ] , mle . miss [ 1 , 2 ] ) $p . value ,#MLE i s best !

22 ks . t e s t ( miss , ’ pweibul l ’ ,mom. miss [ 1 , 1 ] ,mom. miss [ 1 , 2 ] ) $p . value ,

23 ks . t e s t ( miss , ’ pweibul l ’ , mrr . miss [ 1 , 1 ] , mrr . miss [ 1 , 2 ] ) $p . value ,

24 ks . t e s t ( miss , ’ pgamma’ , 4 , 1 ) $p . va lue )

25

26 sm . miss=read . csv ( ” . . / simdata/gamma/ sm sim data2 . csv ” , header=F)

27 sm . miss=as . numeric (sm . miss [−31])

28

29 sm . mle . miss=read . csv ( ” . . / simdata/gamma/ sm mle est . csv ” , header=F)

30 sm .mom. miss=read . csv ( ” . . / simdata/gamma/sm mom est . csv ” , header=F)

31 sm . mrr . miss=read . csv ( ” . . / simdata/gamma/ sm mrr est . csv ” , header=F)

32

73

Page 83: Parameter Estimation for the Two-Parameter Weibull

33 #KS t e s t s

34 sm .gamma=c (

35 ks . t e s t (sm . miss , ’ pweibul l ’ , sm . mle . miss [ 1 , 1 ] , sm . mle . miss [ 1 , 2 ] ) $p . value ,

36 ks . t e s t (sm . miss , ’ pweibul l ’ , sm .mom. miss [ 1 , 1 ] , sm .mom. miss [ 1 , 2 ] ) $p . value ,

37 ks . t e s t (sm . miss , ’ pweibul l ’ , sm . mrr . miss [ 1 , 1 ] , sm . mrr . miss [ 1 , 2 ] ) $p . value ,#MRR i s bes t !

38 ks . t e s t (sm . miss , ’ pgamma’ , 4 , 1 ) $p . va lue )

39

40 names ( l g . gamma)=names (sm .gamma)=c ( ’MLE’ , ’MME’ , ’MRR’ , ’Gamma’ )

41 xtab l e ( cbind (sm .gamma, l g . gamma) , d i g i t s =4)

42

43 #avg . miss=rbind (mean(mle . miss ) ,mean(mom. miss ) ,mean(mrr . miss ) )

44 #var . miss=rbind ( diag ( var (mle . miss ) ) , d iag ( var (mom. miss ) ) , d iag ( var (mrr . miss ) ) )

45

46 #Graphica l Summaries

47 pdf ( ” . . / Graphs/misspec . pdf ” , width=14)

48 par (mfrow=c (1 , 2 ) )

49

50 h i s t (sm . miss , f r e q=F, breaks=5, xlab = ’ ’ , yl im=c ( 0 , . 2 5 ) , xl im=c (0 ,16 ) , main=’

M i s s p e c i f i c a t i o n − Gamma(4 , 1 ) n=30 ’ , cex . main=1.5)

51 curve ( dwe ibu l l (x , sm . mrr . miss [ 1 , 1 ] , sm . mrr . miss [ 1 , 2 ] ) , from=0, to=15,add=T, co l =’darkred

’ , lwd=2.5 , l t y =2)

52 curve ( dwe ibu l l (x , sm . mle . miss [ 1 , 1 ] , sm . mle . miss [ 1 , 2 ] ) , from=0, to=15,add=T, co l =’blue ’ ,

lwd=2.5 , l t y =1)

53 curve ( dwe ibu l l (x , sm .mom. miss [ 1 , 1 ] , sm .mom. miss [ 1 , 2 ] ) , from=0, to=15,add=T, c o l =’orange ’ ,

lwd=2.5 , l t y =2)

54 curve (dgamma(x , 4 , 1 ) , from=0, to=15,add=T, c o l =’black ’ , lwd=2.5 , l t y =3)

55 legend ( 6 . 5 , . 2 , c (”MLE” ,”MME” ,”MRR” ,”Gamma”) , c o l=c ( ’ blue ’ , ’ orange ’ , ’ darkred ’ , ’ black ’ ) ,

lwd=c ( 2 . 5 , 2 . 5 , 2 . 5 , 2 . 5 ) , l t y=c (1 , 2 , 2 , 3 ) , bty=’n ’ , cex =1.5)

56

57 h i s t ( miss , f r e q=F, breaks=20, xlab = ’ ’ , yl im=c ( 0 , . 2 5 ) , xl im=c (0 ,16 ) , main=’

M i s s p e c i f i c a t i o n − Gamma(4 , 1 ) n=1000 ’ , cex . main=1.5)

58 curve ( dwe ibu l l (x , mrr . miss [ 1 , 1 ] , mrr . miss [ 1 , 2 ] ) , from=0, to=15,add=T, co l =’darkred ’ , lwd

=2.5 , l t y =2)

59 curve ( dwe ibu l l (x , mle . miss [ 1 , 1 ] , mle . miss [ 1 , 2 ] ) , from=0, to=15,add=T, c o l =’blue ’ , lwd=2.5 ,

l t y =1)

60 curve ( dwe ibu l l (x ,mom. miss [ 1 , 1 ] ,mom. miss [ 1 , 2 ] ) , from=0, to=15,add=T, co l =’orange ’ , lwd

=2.5 , l t y =2)

61 curve (dgamma(x , 4 , 1 ) , from=0, to=15,add=T, c o l =’black ’ , lwd=2.5 , l t y =3)

74

Page 84: Parameter Estimation for the Two-Parameter Weibull

62 legend ( 7 , . 2 , c (”MLE” ,”MME” ,”MRR” ,”Gamma”) , c o l=c ( ’ blue ’ , ’ orange ’ , ’ darkred ’ , ’ black ’ ) ,

lwd=c ( 2 . 5 , 2 . 5 , 2 . 5 , 2 . 5 ) , l t y=c (1 , 2 , 2 , 3 ) , bty=’n ’ , cex =1.5)

63 #dev . o f f ( )

64 dev . o f f ( )

65 pa r so r t=so r t ( miss )

66 source ( ’ sourcecode . r ’ )

67 MRRest=medianrank ( pa r so r t )

68 thta=MRRest [ [ 4 ] ]

69

70 # p lo t how th i s i s est imated

71 #pdf ( ” . . / Graphs/MRRgamma. pdf ”)

72 #p lo t ( l og ( pa r so r t ) ,MRRest [ [ 3 ] ] , main=’Median Rank Regress ion ’ ,

73 # xlab=’ log ( t ) ’ , y lab=’ l og (1/S( t ) ) ’ , pch=19, cex . main=2, cex . lab =1.5)

74 #ab l i n e ( thta [ 1 ] , thta [ 2 ] , l t y =1, lwd=2, c o l =’blue ’ )

75 #text (3 ,−1 , exp r e s s i on (y == ps i [ 0 ] + ps i [ 1 ] ∗ x ) , c o l =’blue ’ , cex=2)

76 #dev . o f f ( )

77

78 # what about f o r a truncated normal ?

79 s e t . seed (100)

80 miss2=rtnorm (1000 ,5 ,1 , lower=0)

81 sm . miss2=rtnorm (30 ,5 , 1 , lower=0)

82

83

84 #/∗∗ Median Rank Regres s ion Method ∗∗/

85 #//so r t the data .

86 par so r t2=so r t ( miss2 )

87 sm . par so r t2=so r t (sm . miss2 )

88 MRRest2=medianrank ( par so r t2 )

89 sm .MRRest2=medianrank (sm . par so r t2 )

90 thta2=MRRest2 [ [ 4 ] ]

91 sm . thta2=sm .MRRest2 [ [ 4 ] ]

92 MRR2=MRRest2 [ [ 1 ] ]

93 sm .MRR2=sm .MRRest2 [ [ 1 ] ]

94

95 #/∗∗ Method o f Moments Est imation ∗∗/

96 MOMest2=rep (1 , 2 )

97 sm .MOMest2=rep (1 , 2 )

98 #//de f i n e moments .

99 mu2=rep (0 , 2 )

75

Page 85: Parameter Estimation for the Two-Parameter Weibull

100 sm .mu2=rep (0 , 2 )

101 #// mu1=E(x )

102 mu2[1 ]=sum( miss2 ) / l ength ( miss2 )

103 sm .mu2[1 ]=sum(sm . miss2 ) / l ength (sm . miss2 )

104 #// mu2=E(xˆ2)

105 mu2[2 ]=sum( miss2 ˆ2) / l ength ( miss2 )

106 sm .mu2[2 ]=sum(sm . miss2 ˆ2) / l ength (sm . miss2 )

107 #//Use root f i nd i n g to es t imate gamma

108 MOMest2[1 ]= b i s e c t i o n ( . 0 6 , 10 . 2 ,mu2 , t o l = 1e−6)

109 sm .MOMest2[1 ]= b i s e c t i o n ( . 0 6 , 1 0 . 2 , sm .mu2 , t o l=1e−6)

110 #//Solve f o r beta

111 #// beta=mu1/GAMMA(1+1/gamma)

112 MOMest2[2 ]=mu2 [ 1 ] / gamma(1+1/MOMest2 [ 1 ] )

113 sm .MOMest2[2 ]=sm .mu2 [ 1 ] / gamma(1+1/sm .MOMest2 [ 1 ] )

114

115 #/∗∗ Maximum Like l i hood Est imation ∗∗/

116 MLEest2=nlm( we ibu l l . l l , p=c (5 , 5 ) , dat=miss2 ) $es t imate

117 sm .MLEest2=nlm( we ibu l l . l l , p=c (5 , 5 ) , dat=sm . miss2 ) $es t imate

118

119 pdf ( ’ . . / Graphs/miss norm . pdf ’ , width=14)

120 par (mfrow=c (1 , 2 ) )

121 h i s t (sm . miss2 , yl im=c ( 0 , . 6 ) , xl im=c (2 ,10 ) , f r e q=F, breaks=4, xlab = ’ ’ , main=’

M i s s p e c i f i c a t i o n − Normal (5 , 1 ) n=30 ’ , cex . main=1.5)

122 curve (dnorm(x , 5 , 1 ) /(1−pnorm (0 , 5 , 1 ) ) , from=0, to=10, add=T, co l =’black ’ , lwd=2.5 , l t y

=3)

123 curve ( dwe ibu l l (x , sm .MLEest2 [ 1 ] , sm .MLEest2 [ 2 ] ) , from=0, to=10, add=T, c o l =’blue ’ , lwd

=2.5)

124 curve ( dwe ibu l l (x , sm .MOMest2 [ 1 ] , sm .MOMest2 [ 2 ] ) , from=0, to=10, add=T, co l =’orange ’ ,

lwd=2.5)

125 curve ( dwe ibu l l (x , sm .MRR2[ 1 ] , sm .MRR2[ 2 ] ) , from=0, to=10, add=T, c o l =’darkred ’ , lwd

=2.5 , l t y =2)

126 legend ( 7 , . 4 5 , c (”MLE” ,”MME” ,”MRR” ,”Normal ”) , c o l=c ( ’ blue ’ , ’ orange ’ , ’ darkred ’ , ’ black ’ ) ,

lwd=2.5 , l t y=c (1 , 1 , 2 , 3 ) , bty=’n ’ , cex =1.5)

127

128 h i s t ( miss2 , yl im=c ( 0 , . 4 5 ) , xl im=c (2 ,10 ) , f r e q=F, breaks=20, xlab = ’ ’ , main=’

M i s s p e c i f i c a t i o n − Normal (5 , 1 ) n=1000 ’ , cex . main=1.5)

129 curve (dnorm(x , 5 , 1 ) /(1−pnorm (0 , 5 , 1 ) ) , from=0, to=10, add=T, co l =’black ’ , lwd=2.5 , l t y

=3)

130 curve ( dwe ibu l l (x , MLEest2 [ 1 ] , MLEest2 [ 2 ] ) , from=0, to=10, add=T, co l =’blue ’ , lwd=2.5)

76

Page 86: Parameter Estimation for the Two-Parameter Weibull

131 curve ( dwe ibu l l (x ,MOMest2 [ 1 ] ,MOMest2 [ 2 ] ) , from=0, to=10, add=T, co l =’orange ’ , lwd=2.5)

132 curve ( dwe ibu l l (x ,MRR2[ 1 ] ,MRR2[ 2 ] ) , from=0, to=10, add=T, co l =’darkred ’ , lwd=2.5 , l t y

=2)

133 legend ( 7 , . 3 5 , c (”MLE” ,”MME” ,”MRR” ,”Normal ”) , c o l=c ( ’ blue ’ , ’ orange ’ , ’ darkred ’ , ’ black ’ ) ,

lwd=2.5 , l t y=c (1 , 1 , 2 , 3 ) , bty=’n ’ , cex =1.5)

134 dev . o f f ( )

135

136

137 #KS t e s t s

138 l g . norm=c (

139 ks . t e s t ( miss2 , ’ pweibul l ’ , MLEest2 [ 1 ] , MLEest2 [ 2 ] ) $p . value ,

140 ks . t e s t ( miss2 , ’ pweibul l ’ ,MOMest2 [ 1 ] ,MOMest2 [ 2 ] ) $p . value ,#MOM i s best !

141 ks . t e s t ( miss2 , ’ pweibul l ’ ,MRR2[ 1 ] ,MRR2[ 2 ] ) $p . value ,

142 ks . t e s t ( miss2 , ’ ptnorm ’ , 5 , 1 , 0 ) $p . va lue )

143 sm . norm=c (

144 ks . t e s t (sm . miss2 , ’ pweibul l ’ , sm .MLEest2 [ 1 ] , sm .MLEest2 [ 2 ] ) $p . value ,#MLE i s bes t !

145 ks . t e s t (sm . miss2 , ’ pweibul l ’ , sm .MOMest2 [ 1 ] , sm .MOMest2 [ 2 ] ) $p . value ,

146 ks . t e s t (sm . miss2 , ’ pweibul l ’ , sm .MRR2[ 1 ] , sm .MRR2[ 2 ] ) $p . value ,

147 ks . t e s t (sm . miss2 , ’ ptnorm ’ , 5 , 1 , 0 ) $p . va lue )

148 names ( l g . norm)=names (sm . norm)=c ( ’MLE’ , ’MME’ , ’MRR’ , ’ Normal ’ )

149 xtab l e ( cbind (sm . norm , l g . norm) , d i g i t s =4)

150

151 #another truncated normal

152 s e t . seed (1234)

153 miss3=rtnorm (10000 ,2 ,3 , lower=0)

154 sm . miss3=rtnorm (30 ,2 , 3 , lower=0)

155

156 #/∗∗ Median Rank Regres s ion Method ∗∗/

157 #//so r t the data .

158 par so r t3=so r t ( miss3 )

159 sm . par so r t3=so r t (sm . miss3 )

160 MRRest3=medianrank ( par so r t3 )

161 sm .MRRest3=medianrank (sm . par so r t3 )

162 thta3=MRRest3 [ [ 4 ] ]

163 sm . thta3=sm .MRRest3 [ [ 4 ] ]

164 MRR3=MRRest3 [ [ 1 ] ]

165 sm .MRR3=sm .MRRest3 [ [ 1 ] ]

166

167 #/∗∗ Method o f Moments Est imation ∗∗/

77

Page 87: Parameter Estimation for the Two-Parameter Weibull

168 MOMest3=rep (1 , 2 )

169 sm .MOMest3=rep (1 , 2 )

170 #//de f i n e moments .

171 mu3=rep (0 , 2 )

172 sm .mu3=rep (0 , 2 )

173 #// mu1=E(x )

174 mu3[1 ]=sum( miss3 ) / l ength ( miss3 )

175 sm .mu3[1 ]=mean(sm . miss3 )

176 #// mu2=E(xˆ2)

177 mu3[2 ]=sum( miss3 ˆ2) / l ength ( miss3 )

178 sm .mu3[2 ]=sum(sm . miss3 ˆ2) / l ength (sm . miss3 )

179 #//Use root f i nd i n g to es t imate gamma

180 MOMest3[1 ]= b i s e c t i o n ( . 0 6 , 10 . 2 ,mu3 , t o l = 1e−6)

181 sm .MOMest3[1 ]= b i s e c t i o n ( . 0 6 , 1 0 . 2 , sm .mu3 , t o l=1e−6)

182 #//Solve f o r beta

183 #// beta=mu1/GAMMA(1+1/gamma)

184 MOMest3[2 ]=mu3 [ 1 ] / gamma(1+1/MOMest3 [ 1 ] )

185 sm .MOMest3[2 ]=sm .mu3 [ 1 ] / gamma(1+1/sm .MOMest3 [ 1 ] )

186

187 #/∗∗ Maximum Like l i hood Est imation ∗∗/

188 MLEest3=nlm( we ibu l l . l l , p=c (5 , 5 ) , dat=miss3 ) $es t imate

189 sm .MLEest3=nlm( we ibu l l . l l , p=c (5 , 5 ) , dat=sm . miss3 ) $es t imate

190

191

192 pdf ( ’ . . / Graphs/miss tnorm . pdf ’ , width=14)

193 par (mfrow=c (1 , 2 ) )

194 h i s t (sm . miss3 , yl im=c ( 0 , . 3 ) , xl im=c (0 ,12 ) , f r e q=F, breaks=10, xlab = ’ ’ , main=’

M i s s p e c i f i c a t i o n − Zero Truncated Normal (2 , 3 ) n=30 ’ , cex . main=1.5)

195 curve (dnorm(x , 2 , 3 ) /(1−pnorm (0 , 2 , 3 ) ) , from=0, to=12, add=T, co l =’black ’ , lwd=2.5 , l t y

=3)

196 curve ( dwe ibu l l (x , sm .MLEest3 [ 1 ] , sm .MLEest3 [ 2 ] ) , from=0, to=12, add=T, c o l =’blue ’ , lwd

=2.5 , l t y =2)

197 curve ( dwe ibu l l (x , sm .MOMest3 [ 1 ] , sm .MOMest3 [ 2 ] ) , from=0, to=12, add=T, co l =’orange ’ ,

lwd=2.5)

198 curve ( dwe ibu l l (x , sm .MRR3[ 1 ] , sm .MRR3[ 2 ] ) , from=0, to=12, add=T, c o l =’darkred ’ , lwd

=2.5 , l t y =1)

199 legend ( 5 , . 2 5 , c (”MLE” ,”MME” ,”MRR” ,” Truncated Normal ”) , c o l=c ( ’ blue ’ , ’ orange ’ , ’ darkred

’ , ’ black ’ ) , lwd=2.5 , l t y=c (2 , 1 , 1 , 3 ) , bty=’n ’ , cex =1.5)

200

78

Page 88: Parameter Estimation for the Two-Parameter Weibull

201 h i s t ( miss3 , yl im=c ( 0 , . 3 ) , xl im=c (0 ,12 ) , f r e q=F, breaks=20, xlab = ’ ’ , main=’

M i s s p e c i f i c a t i o n − Zero Truncated Normal (2 , 3 ) n=1000 ’ , cex . main=1.5)

202 curve (dnorm(x , 2 , 3 ) /(1−pnorm (0 , 2 , 3 ) ) , from=0, to=12, add=T, co l =’black ’ , lwd=2.5 , l t y

=3)

203 curve ( dwe ibu l l (x , MLEest3 [ 1 ] , MLEest3 [ 2 ] ) , from=0, to=12, add=T, co l =’blue ’ , lwd=2.5 ,

l t y =2)

204 curve ( dwe ibu l l (x ,MOMest3 [ 1 ] ,MOMest3 [ 2 ] ) , from=0, to=12, add=T, co l =’orange ’ , lwd=2.5)

205 curve ( dwe ibu l l (x ,MRR3[ 1 ] ,MRR3[ 2 ] ) , from=0, to=12, add=T, co l =’darkred ’ , lwd=2.5 , l t y

=1)

206 legend ( 4 , . 2 5 , c (”MLE” ,”MME” ,”MRR” ,” Truncated Normal ”) , c o l=c ( ’ blue ’ , ’ orange ’ , ’ darkred

’ , ’ black ’ ) , lwd=2.5 , l t y=c (2 , 1 , 1 , 3 ) , bty=’n ’ , cex =1.5)

207 dev . o f f ( )

208

209

210 #Kolmogorov−Smirnov Test

211 l g . trnorm=c (

212 ks . t e s t ( miss3 , ’ pweibul l ’ , MLEest3 [ 1 ] , MLEest3 [ 2 ] ) $p . value ,

213 ks . t e s t ( miss3 , ’ pweibul l ’ ,MOMest3 [ 1 ] ,MOMest3 [ 2 ] ) $p . value ,#MOM i s best !

214 ks . t e s t ( miss3 , ’ pweibul l ’ ,MRR3[ 1 ] ,MRR3[ 2 ] ) $p . value ,

215 ks . t e s t ( miss3 , ’ ptnorm ’ , 2 , 3 , 0 ) $p . va lue )

216

217 sm . trnorm=c (

218 ks . t e s t (sm . miss3 , ’ pweibul l ’ , sm .MLEest3 [ 1 ] , sm .MLEest3 [ 2 ] ) $p . value ,

219 ks . t e s t (sm . miss3 , ’ pweibul l ’ , sm .MOMest3 [ 1 ] , sm .MOMest3 [ 2 ] ) $p . value ,#MOM i s best !

220 ks . t e s t (sm . miss3 , ’ pweibul l ’ , sm .MRR3[ 1 ] , sm .MRR3[ 2 ] ) $p . value ,

221 ks . t e s t (sm . miss3 , ’ ptnorm ’ , 2 , 3 , 0 ) $p . va lue )

222 names ( l g . trnorm )=names (sm . trnorm )=c ( ’MLE’ , ’MME’ , ’MRR’ , ’ TruncNorm ’ )

223 xtab l e ( cbind (sm . trnorm , l g . trnorm ) , d i g i t s=−4)

224

225

226 xtab l e ( rbind (sm .gamma, l g . gamma, sm . norm , l g . norm , sm . trnorm , l g . trnorm ) )

C.2 Code to compute MSE

1 ###########

2 # Mark Nie l s en

3 # Masters Pro j e c t

4 l i b r a r y ( spuRs )

5 l i b r a r y ( xtab l e )

6

79

Page 89: Parameter Estimation for the Two-Parameter Weibull

7 #setwd (”C:/ Users /Owner/Documents/My Dropbox/Cla s s e s /STAT 624/”)

8

9

10 #comparison o f pdfs

11 x=seq ( from=0, to =2.5 , l ength . out=100)

12 pdf ( ’ . . / Graphs/Weibull PDF . pdf ’ )

13 p l o t (x , dwe ibu l l (x , . 5 , 1 ) , type=’ l ’ , c o l =’blue ’ , lwd=2.5 , ylab=’Density ’ , main=expr e s s i on (

paste (gamma, ’ − Shape parameter ’ ) , sep = ’ ’) , x lab = ’ ’ , cex . main=2)

14 po in t s (x , dwe ibu l l (x , 1 , 1 ) , type=’ l ’ , c o l =’red ’ , lwd=2.5)

15 po in t s (x , dwe ibu l l (x , 1 . 5 , 1 ) , type=’ l ’ , c o l =’black ’ , lwd=2.5)

16 po in t s (x , dwe ibu l l (x , 5 , 1 ) , type=’ l ’ , c o l =’ f o r e s t g r e en ’ , lwd=2.5)

17 legend ( 1 . 2 5 , 2 . 5 , c ( exp r e s s i on ( paste ( beta == 1 , ’ , ’ , gamma == 0 . 5 ) ) , exp r e s s i on ( paste (

beta == 1 , ’ , ’ , gamma == 1) ) , exp r e s s i on ( paste ( beta == 1 , ’ , ’ , gamma == 1 . 5 ) ) ,

exp r e s s i on ( paste ( beta == 1 , ’ , ’ , gamma == 5) ) ) , c o l=c ( ’ blue ’ , ’ red ’ , ’ black ’ , ’

f o r e s t g r e en ’ ) , l t y =1, lwd=2.5 , bty=’n ’ , cex =1.5)

18 dev . o f f ( )

19

20 #comparison o f pdfs

21 x=seq ( from=0, to =2.5 , l ength . out=100)

22 pdf ( ’ . . / Graphs/Weibull2 PDF . pdf ’ )

23 p l o t (x , dwe ibu l l (x , 2 , . 5 ) , type=’ l ’ , c o l =’blue ’ , lwd=2.5 , ylab=’Density ’ , main=expr e s s i on (

paste ( beta , ’ − Sca l e parameter ’ ) , sep = ’ ’) , x lab = ’ ’ , cex . main=2)

24 po in t s (x , dwe ibu l l (x , 2 , 1 ) , type=’ l ’ , c o l =’red ’ , lwd=2.5)

25 po in t s (x , dwe ibu l l (x , 2 , 1 . 5 ) , type=’ l ’ , c o l =’black ’ , lwd=2.5)

26 po in t s (x , dwe ibu l l (x , 2 , 5 ) , type=’ l ’ , c o l =’ f o r e s t g r e en ’ , lwd=2.5)

27 legend ( 1 . 2 5 , 1 . 5 , c ( exp r e s s i on ( paste ( beta == 0 . 5 , ’ , ’ , gamma == 2) ) , exp r e s s i on ( paste (

beta == 1 , ’ , ’ , gamma == 2) ) , exp r e s s i on ( paste ( beta == 1 . 5 , ’ , ’ , gamma == 2) ) ,

exp r e s s i on ( paste ( beta == 5 , ’ , ’ , gamma == 2) ) ) , c o l=c ( ’ blue ’ , ’ red ’ , ’ black ’ , ’

f o r e s t g r e en ’ ) , l t y =1, lwd=2.5 , bty=’n ’ , cex =1.5)

28 dev . o f f ( )

29

30 #pdf o f our parameter e s t imate s .

31 pdf ( ’ . . / Graphs/params . pdf ’ , width=14)

32 par (mfrow=c (1 , 2 ) )

33 x=seq ( from=0, to=10, l ength . out=100)

34 p l o t (x , dwe ibu l l (x , 2 , 2 . 5 ) , type=’ l ’ , c o l =’blue ’ , lwd=2.5 , ylab=’Density ’ , main=expr e s s i on (

paste ( beta == 2 , ’ and ’ , gamma == 2 . 5 ) ) , xlab = ’ ’ , cex . main=2)

35 x=seq ( from=0, to=150 , l ength . out=100)

80

Page 90: Parameter Estimation for the Two-Parameter Weibull

36 p lo t (x , dwe ibu l l (x , 5 , 9 0 ) , type=’ l ’ , c o l =’red ’ , lwd=2.5 , ylab=’Density ’ , main=expr e s s i on (

paste ( beta == 5 , ’ and ’ , gamma == 90) ) , x lab = ’ ’ , cex . main=2)

37 dev . o f f ( )

38

39

40 ###############

41 # MSE f o r each Method

42 #par (2 , 5 )

43 mle . ty=read . csv ( ” . . / simdata/ tinyA/ml e e s t 1 t i ny . csv ” , header=F)

44 mle . sm=read . csv ( ” . . / simdata/smallA/ml e e s t 1 sma l l . csv ” , header=F)

45 mle . l g=read . csv ( ” . . / simdata/bigA/ml e e s t 1 b i g . csv ” , header=F)

46

47 mom. ty=read . csv ( ” . . / simdata/ tinyA/mom est1 tiny . csv ” , header=F)

48 mom. sm=read . csv ( ” . . / simdata/smallA/mom est1 small . csv ” , header=F)

49 mom. l g=read . csv ( ” . . / simdata/bigA/mom est1 big . csv ” , header=F)

50

51 mrr . ty=read . csv ( ” . . / simdata/ tinyA/mr r e s t 1 t i ny . csv ” , header=F)

52 mrr . sm=read . csv ( ” . . / simdata/smallA/mrr e s t 1 sma l l . csv ” , header=F)

53 mrr . l g=read . csv ( ” . . / simdata/bigA/mrr e s t 1 b i g . csv ” , header=F)

54

55 avg . ty=rbind (mean(mle . ty ) ,mean(mom. ty ) ,mean(mrr . ty ) )

56 avg . sm=rbind (mean(mle . sm) ,mean(mom. sm) ,mean(mrr . sm) )

57 avg . l g=rbind (mean(mle . l g ) ,mean(mom. l g ) ,mean(mrr . l g ) )

58

59 var . ty=rbind ( diag ( var (mle . ty ) ) , d iag ( var (mom. ty ) ) , d iag ( var (mrr . ty ) ) )

60 var . sm=rbind ( diag ( var (mle . sm) ) , d iag ( var (mom. sm) ) , d iag ( var (mrr . sm) ) )

61 var . l g=rbind ( diag ( var (mle . l g ) ) , d iag ( var (mom. l g ) ) , d iag ( var (mrr . l g ) ) )

62

63

64 #par (1 , 3 )

65 mleb . ty=read . csv ( ” . . / simdata/ tinyB/m l e e s t 1 t i ny . csv ” , header=F)

66 mleb . sm=read . csv ( ” . . / simdata/ smallB/ml e e s t 1 sma l l . csv ” , header=F)

67 mleb . l g=read . csv ( ” . . / simdata/bigB/ml e e s t 1 b i g . csv ” , header=F)

68

69 momb. ty=read . csv ( ” . . / simdata/ tinyB/mom est1 tiny . csv ” , header=F)

70 momb. sm=read . csv ( ” . . / simdata/ smallB/mom est1 small . csv ” , header=F)

71 momb. l g=read . csv ( ” . . / simdata/bigB/mom est1 big . csv ” , header=F)

72

73 mrrb . ty=read . csv ( ” . . / simdata/ tinyB/mr r e s t 1 t i ny . csv ” , header=F)

81

Page 91: Parameter Estimation for the Two-Parameter Weibull

74 mrrb . sm=read . csv ( ” . . / simdata/ smallB/mrr e s t 1 sma l l . csv ” , header=F)

75 mrrb . l g=read . csv ( ” . . / simdata/bigB/mrr e s t 1 b i g . csv ” , header=F)

76

77 avgb . ty=rbind (mean(mleb . ty ) ,mean(momb. ty ) ,mean(mrrb . ty ) )

78 avgb . sm=rbind (mean(mleb . sm) ,mean(momb. sm) ,mean(mrrb . sm) )

79 avgb . l g=rbind (mean(mleb . l g ) ,mean(momb. l g ) ,mean(mrrb . l g ) )

80

81 varb . ty=rbind ( diag ( var (mleb . ty ) ) , d iag ( var (momb. ty ) ) , d iag ( var (mrrb . ty ) ) )

82 varb . sm=rbind ( diag ( var (mleb . sm) ) , d iag ( var (momb. sm) ) , d iag ( var (mrrb . sm) ) )

83 varb . l g=rbind ( diag ( var (mleb . l g ) ) , d iag ( var (momb. l g ) ) , d iag ( var (mrrb . l g ) ) )

84

85 b i a s=cbind ( ( avg . ty [ ,1 ] −5) ,

86 ( avg . sm[ ,1 ] −5) ,

87 ( avg . l g [ ,1 ] −5) ,

88 ( avg . ty [ ,2 ] −90) ,

89 ( avg . sm[ ,2 ] −90) ,

90 ( avg . l g [ ,2 ] −90) ,

91 ( avgb . ty [ ,1 ] −2) ,

92 ( avgb . sm[ ,1 ] −2) ,

93 ( avgb . l g [ ,1 ] −2) ,

94 ( avgb . ty [ , 2 ] −2 . 5 ) ,

95 ( avgb . sm[ , 2 ] −2 . 5 ) ,

96 ( avgb . l g [ , 2 ] −2 . 5 ) )

97 colnames ( b i a s )=c (” ty . gamma5” ,”sm . gamma5” ,” l g . gamma5” ,” ty . beta90 ” ,”sm . beta90 ” ,” l g .

beta90 ” ,” ty . gamma1” ,”sm . gamma1” ,” l g . gamma1” ,” ty . beta3 ” ,”sm . beta3 ” ,” l g . beta3 ”)

98 xtab l e ( bias , d i g i t s =5)

99

100 var=cbind ( var . ty [ , 1 ] ,

101 var . sm [ , 1 ] ,

102 var . l g [ , 1 ] ,

103 var . ty [ , 2 ] ,

104 var . sm [ , 2 ] ,

105 var . l g [ , 2 ] ,

106 varb . ty [ , 1 ] ,

107 varb . sm [ , 1 ] ,

108 varb . l g [ , 1 ] ,

109 varb . ty [ , 2 ] ,

110 varb . sm [ , 2 ] ,

111 varb . l g [ , 2 ] )

82

Page 92: Parameter Estimation for the Two-Parameter Weibull

112 colnames ( var )=c (” ty . gamma5” ,”sm . gamma5” ,” l g . gamma5” ,” ty . beta90 ” ,”sm . beta90 ” ,” l g .

beta90 ” ,” ty . gamma1” ,”sm . gamma1” ,” l g . gamma1” ,” ty . beta3 ” ,”sm . beta3 ” ,” l g . beta3 ”)

113 xtab l e ( var , d i g i t s =5)

114

115 mse=cbind ( ( avg . ty [ ,1 ] −5)ˆ2+var . ty [ , 1 ] ,

116 ( avg . ty [ ,2 ] −90)ˆ2+var . ty [ , 2 ] ,

117 ( avg . sm[ ,1 ] −5)ˆ2+var . sm [ , 1 ] ,

118 ( avg . sm[ ,2 ] −90)ˆ2+var . sm [ , 2 ] ,

119 ( avg . l g [ ,1 ] −5)ˆ2+var . l g [ , 1 ] ,

120 ( avg . l g [ ,2 ] −90)ˆ2+var . l g [ , 2 ] ,

121 ( avgb . ty [ ,1 ] −2)ˆ2+varb . ty [ , 1 ] ,

122 ( avgb . ty [ , 2 ] −2 . 5 ) ˆ2+varb . ty [ , 2 ] ,

123 ( avgb . sm[ ,1 ] −2)ˆ2+varb . sm [ , 1 ] ,

124 ( avgb . sm[ , 2 ] −2 . 5 ) ˆ2+varb . sm [ , 2 ] ,

125 ( avgb . l g [ ,1 ] −2)ˆ2+varb . l g [ , 1 ] ,

126 ( avgb . l g [ , 2 ] −2 . 5 ) ˆ2+varb . l g [ , 2 ] )

127

128 mse2=cbind ( ( avg . ty [ ,1 ] −5)ˆ2+var . ty [ , 1 ] ,

129 ( avg . sm[ ,1 ] −5)ˆ2+var . sm [ , 1 ] ,

130 ( avg . l g [ ,1 ] −5)ˆ2+var . l g [ , 1 ] ,

131 ( avg . ty [ ,2 ] −90)ˆ2+var . ty [ , 2 ] ,

132 ( avg . sm[ ,2 ] −90)ˆ2+var . sm [ , 2 ] ,

133 ( avg . l g [ ,2 ] −90)ˆ2+var . l g [ , 2 ] ,

134 ( avgb . ty [ ,1 ] −2)ˆ2+varb . ty [ , 1 ] ,

135 ( avgb . sm[ ,1 ] −2)ˆ2+varb . sm [ , 1 ] ,

136 ( avgb . l g [ ,1 ] −2)ˆ2+varb . l g [ , 1 ] ,

137 ( avgb . ty [ , 2 ] −2 . 5 ) ˆ2+varb . ty [ , 2 ] ,

138 ( avgb . sm[ , 2 ] −2 . 5 ) ˆ2+varb . sm [ , 2 ] ,

139 ( avgb . l g [ , 2 ] −2 . 5 ) ˆ2+varb . l g [ , 2 ] )

140 colnames (mse2 )=c (” ty . gamma5” ,”sm . gamma5” ,” l g . gamma5” ,” ty . beta90 ” ,”sm . beta90 ” ,” l g .

beta90 ” ,” ty . gamma1” ,”sm . gamma1” ,” l g . gamma1” ,” ty . beta3 ” ,”sm . beta3 ” ,” l g . beta3 ”)

141 xtab l e (mse2 , d i g i t s =5)

142

143 #GRAPH FOR 10 , 100 , 1000 , 10000 , 100000

144 mle10A=read . csv ( ” . . / simdata/A/mle 10 . csv ” , header=F)

145 mle1000A=read . csv ( ” . . / simdata/A/mle 1000 . csv ” , header=F)

146 mle100000A=read . csv ( ” . . / simdata/A/mle 100000 . csv ” , header=F)

147

148 mom10A=read . csv ( ” . . / simdata/A/mom 10 . csv ” , header=F)

83

Page 93: Parameter Estimation for the Two-Parameter Weibull

149 mom1000A=read . csv ( ” . . / simdata/A/mom 1000 . csv ” , header=F)

150 mom100000A=read . csv ( ” . . / simdata/A/mom 100000 . csv ” , header=F)

151

152 mrr10A=read . csv ( ” . . / simdata/A/mrr 10 . csv ” , header=F)

153 mrr1000A=read . csv ( ” . . / simdata/A/mrr 1000 . csv ” , header=F)

154 mrr100000A=read . csv ( ” . . / simdata/A/mrr 100000 . csv ” , header=F)

155

156 msefunc=func t i on ( dat , param) {

157 (mean( dat )−param)ˆ2+var ( dat )

158 }

159

160 mse . mle=rbind ( c ( msefunc (mle10A [ , 1 ] , 5) ,mse [ 1 , 1 ] , mse [ 1 , 3 ] , msefunc (mle1000A [ , 1 ] , 5) ,

mse [ 1 , 5 ] ) ,

161 c (msefunc (mle10A [ , 2 ] , 9 0 ) ,mse [ 1 , 2 ] , mse [ 1 , 4 ] , msefunc (mle1000A [ , 2 ] , 9 0 ) ,

mse [ 1 , 6 ] ) )

162

163 mse .mom=rbind ( c ( msefunc (mom10A[ , 1 ] , 5) ,mse [ 2 , 1 ] , mse [ 2 , 3 ] , msefunc (mom1000A [ , 1 ] , 5) ,

mse [ 2 , 5 ] ) ,

164 c (msefunc (mom10A[ , 2 ] , 9 0 ) ,mse [ 2 , 2 ] , mse [ 2 , 4 ] , msefunc (mom1000A [ , 2 ] , 9 0 ) ,

mse [ 2 , 6 ] ) )

165

166 mse . mrr=rbind ( c ( msefunc (mrr10A [ , 1 ] , 5) ,mse [ 3 , 1 ] , mse [ 3 , 3 ] , msefunc (mrr1000A [ , 1 ] , 5) ,

mse [ 3 , 5 ] ) ,

167 c (msefunc (mrr10A [ , 2 ] , 9 0 ) ,mse [ 3 , 2 ] , mse [ 3 , 4 ] , msefunc (mrr1000A [ , 2 ] , 9 0 ) ,

mse [ 3 , 6 ] ) )

168

169 pdf ( ’ . . / Graphs/mseA . pdf ’ , width=14)

170 par (mfrow=c (1 , 2 ) )

171 p l o t ( c (10 ,20 ,100 ,1000 ,10000) ,mse .mom[ 1 , ] , xaxt=’n ’ , type=’b ’ , l og=”x” , xlab=’Sample Size

’ , y lab=’Mean Square Error ’ , main=expr e s s i on (gamma==5) , c o l =’orange ’ , lwd=3,pch=20,

l t y =1, cex . main=2)

172 po in t s ( c (10 ,20 ,100 ,1000 ,10000) ,mse . mrr [ 1 , ] , type=’b ’ , c o l =’darkred ’ , lwd=3,pch=20, l t y

=2)

173 po in t s ( c (10 ,20 ,100 ,1000 ,10000) ,mse . mle [ 1 , ] , type=’b ’ , c o l =’blue ’ , lwd=3,pch=20, l t y =3)

174 legend ( ’ topr ight ’ , c ( ’MLE’ , ’MME’ , ’MRR’ ) , l t y=c (3 , 1 , 2 ) , pch=20, lwd=2, c o l=c ( ’ blue ’ , ’

orange ’ , ’ darkred ’ ) , cex =1.5)

175 ax i s (1 , c (10 ,20 ,100 ,1000 ,10000) )

176

84

Page 94: Parameter Estimation for the Two-Parameter Weibull

177 p lo t ( c (10 ,20 ,100 ,1000 ,10000) ,mse . mrr [ 2 , ] , xaxt=’n ’ , type=’b ’ , l og=”x” , xlab=’Sample Size

’ , y lab=’Mean Square Error ’ , main=expr e s s i on ( beta==90) , c o l =’darkred ’ , lwd=3,pch=20,

l t y =2, cex . main=2)

178 po in t s ( c (10 ,20 ,100 ,1000 ,10000) ,mse .mom[ 2 , ] , type=’b ’ , c o l =’orange ’ , lwd=3,pch=20, l t y =1)

179 po in t s ( c (10 ,20 ,100 ,1000 ,10000) ,mse . mle [ 2 , ] , type=’b ’ , c o l =’blue ’ , lwd=3,pch=20, l t y =3)

180 legend ( ’ topr ight ’ , c ( ’MLE’ , ’MME’ , ’MRR’ ) , l t y=c (3 , 1 , 2 ) , pch=20, lwd=2, c o l=c ( ’ blue ’ , ’

orange ’ , ’ darkred ’ ) , cex =1.5)

181 ax i s (1 , c (10 ,20 ,100 ,1000 ,10000) )

182 dev . o f f ( )

183

184 #GRBPH FOR 10 , 100 , 1000 , 10000 , 100000

185 mle10B=read . csv ( ” . . / simdata/B/mle 10 . csv ” , header=F)

186 mle1000B=read . csv ( ” . . / simdata/B/mle 1000 . csv ” , header=F)

187 mle100000B=read . csv ( ” . . / simdata/B/mle 100000 . csv ” , header=F)

188

189 mom10B=read . csv ( ” . . / simdata/B/mom 10 . csv ” , header=F)

190 mom1000B=read . csv ( ” . . / simdata/B/mom 1000 . csv ” , header=F)

191 mom100000B=read . csv ( ” . . / simdata/B/mom 100000 . csv ” , header=F)

192

193 mrr10B=read . csv ( ” . . / simdata/B/mrr 10 . csv ” , header=F)

194 mrr1000B=read . csv ( ” . . / simdata/B/mrr 1000 . csv ” , header=F)

195 mrr100000B=read . csv ( ” . . / simdata/B/mrr 100000 . csv ” , header=F)

196

197 msefunc=func t i on ( dat , param) {

198 (mean( dat )−param)ˆ2+var ( dat )

199 }

200

201 mse . mleb=rbind ( c ( msefunc (mle10B [ , 1 ] , 2) ,mse [ 1 , 7 ] , mse [ 1 , 9 ] , msefunc (mle1000B [ , 1 ] ,

2) ,mse [ 1 , 1 1 ] ) ,

202 c ( msefunc (mle10B [ , 2 ] , 2 . 5 ) ,mse [ 1 , 8 ] , mse [ 1 , 1 0 ] , msefunc (mle1000B

[ , 2 ] , 2 . 5 ) ,mse [ 1 , 1 2 ] ) )

203

204 mse .momb=rbind ( c ( msefunc (mom10B[ , 1 ] , 2) ,mse [ 2 , 7 ] , mse [ 2 , 9 ] , msefunc (mom1000B [ , 1 ] ,

2) ,mse [ 2 , 1 1 ] ) ,

205 c ( msefunc (mom10B [ , 2 ] , 2 . 5 ) ,mse [ 2 , 8 ] , mse [ 2 , 1 0 ] , msefunc (mom1000B

[ , 2 ] , 2 . 5 ) ,mse [ 2 , 1 2 ] ) )

206

207 mse . mrrb=rbind ( c ( msefunc (mrr10B [ , 1 ] , 2) ,mse [ 3 , 7 ] , mse [ 3 , 9 ] , msefunc (mrr1000B [ , 1 ] ,

2) ,mse [ 3 , 1 1 ] ) ,

85

Page 95: Parameter Estimation for the Two-Parameter Weibull

208 c ( msefunc (mrr10B [ , 2 ] , 2 . 5 ) ,mse [ 3 , 8 ] , mse [ 3 , 1 0 ] , msefunc (mrr1000B

[ , 2 ] , 2 . 5 ) ,mse [ 3 , 1 2 ] ) )

209

210 pdf ( ’ . . / Graphs/mseB . pdf ’ , width=14)

211 par (mfrow=c (1 , 2 ) )

212 p l o t ( c (10 ,20 ,100 ,1000 ,10000) ,mse .momb[ 1 , ] , yl im=c ( 0 , . 6 5 ) , xaxt=’n ’ , type=’b ’ , l og=”x” ,

xlab=’Sample Size ’ , y lab=’Mean Square Error ’ , main=expr e s s i on (gamma==2) , c o l =’

orange ’ , lwd=3,pch=20, l t y =1, cex . main=2)

213 po in t s ( c (10 ,20 ,100 ,1000 ,10000) ,mse . mrrb [ 1 , ] , type=’b ’ , c o l =’darkred ’ , lwd=3,pch=20, l t y

=2)

214 po in t s ( c (10 ,20 ,100 ,1000 ,10000) ,mse . mleb [ 1 , ] , type=’b ’ , c o l =’blue ’ , lwd=3,pch=20, l t y =3)

215 legend ( ’ topr ight ’ , c ( ’MLE’ , ’MME’ , ’MRR’ ) , l t y=c (3 , 1 , 2 ) , pch=20, lwd=2, c o l=c ( ’ blue ’ , ’

orange ’ , ’ darkred ’ ) , cex =1.5)

216 ax i s (1 , c (10 ,20 ,100 ,1000 ,10000) )

217

218 p lo t ( c (10 ,20 ,100 ,1000 ,10000) ,mse . mrrb [ 2 , ] , xaxt=’n ’ , type=’b ’ , l og=”x” , xlab=’Sample

Size ’ , y lab=’Mean Square Error ’ , main=expr e s s i on ( beta==2.5) , c o l =’darkred ’ , lwd=3,

pch=20, l t y =2, cex . main=2)

219 po in t s ( c (10 ,20 ,100 ,1000 ,10000) ,mse .momb[ 2 , ] , type=’b ’ , c o l =’orange ’ , lwd=3,pch=20, l t y

=1)

220 po in t s ( c (10 ,20 ,100 ,1000 ,10000) ,mse . mleb [ 2 , ] , type=’b ’ , c o l =’blue ’ , lwd=3,pch=20, l t y =3)

221 legend ( ’ topr ight ’ , c ( ’MLE’ , ’MME’ , ’MRR’ ) , l t y=c (3 , 1 , 2 ) , pch=20, lwd=2, c o l=c ( ’ blue ’ , ’

orange ’ , ’ darkred ’ ) , cex =1.5)

222 ax i s (1 , c (10 ,20 ,100 ,1000 ,10000) )

223 dev . o f f ( )

224

225

226

227

228 #MLE

229 pdf ( ” . . / Graphs/norm mle big . pdf ” , width=14)

230 par (mfrow=c (1 , 2 ) )

231 h i s t (mle . l g [ , 2 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on ( beta ) , breaks=20)

232 curve (dnorm(x , avg . l g [ 1 , 2 ] , s q r t ( var . l g [ 1 , 2 ] ) ) , from=88, to=91,add=T, co l =’red ’ , lwd=2)

233 h i s t (mle . l g [ , 1 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on (gamma) , breaks=20)

234 curve (dnorm(x , avg . l g [ 1 , 1 ] , s q r t ( var . l g [ 1 , 1 ] ) ) , from=4.85 , to =5.15 , add=T, co l =’red ’ , lwd

=2)

235 dev . o f f ( )

236

86

Page 96: Parameter Estimation for the Two-Parameter Weibull

237 pdf ( ” . . / Graphs/norm mleb big . pdf ” , width=14)

238 par (mfrow=c (1 , 2 ) )

239 h i s t (mleb . l g [ , 2 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on ( beta ) , breaks=20)

240 curve (dnorm(x , avgb . l g [ 1 , 2 ] , s q r t ( varb . l g [ 1 , 2 ] ) ) , from=2.45 , to =2.55 , add=T, co l =’red ’ , lwd

=2)

241 h i s t (mleb . l g [ , 1 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on (gamma) , breaks=20)

242 curve (dnorm(x , avgb . l g [ 1 , 1 ] , s q r t ( varb . l g [ 1 , 1 ] ) ) , from=1.95 , to =2.05 , add=T, co l =’red ’ , lwd

=2)

243 dev . o f f ( )

244

245 pdf ( ” . . / Graphs/norm mleb small . pdf ” , width=14)

246 par (mfrow=c (1 , 2 ) )

247 h i s t (mleb . sm [ , 2 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on ( beta ) , breaks=20)

248 curve (dnorm(x , avgb . sm [ 1 , 2 ] , s q r t ( varb . sm [ 1 , 2 ] ) ) , from=2, to =4.1 , add=T, co l =’red ’ , lwd=2)

249 h i s t (mleb . sm [ , 1 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on (gamma) , breaks=20)

250 curve (dnorm(x , avgb . sm [ 1 , 1 ] , s q r t ( varb . sm [ 1 , 1 ] ) ) , from=1, to=3,add=T, co l =’red ’ , lwd=2)

251 dev . o f f ( )

252

253 pdf ( ” . . / Graphs/norm mle small . pdf ” , width=14)

254 par (mfrow=c (1 , 2 ) )

255 h i s t (mle . sm [ , 2 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on ( beta ) , breaks=20)

256 curve (dnorm(x , avg . sm [ 1 , 2 ] , s q r t ( var . sm [ 1 , 2 ] ) ) , from=84, to=96,add=T, co l =’red ’ , lwd=2)

257 h i s t (mle . sm [ , 1 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on (gamma) , breaks=20)

258 curve (dnorm(x , avg . sm [ 1 , 1 ] , s q r t ( var . sm [ 1 , 1 ] ) ) , from=3.5 , to=7,add=T, c o l =’red ’ , lwd=2)

259 dev . o f f ( )

260

261 pdf ( ” . . / Graphs/norm mleb tiny . pdf ” , width=14)

262 par (mfrow=c (1 , 2 ) )

263 h i s t (mleb . ty [ , 2 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on ( beta ) , breaks=20)

264 curve (dnorm(x , avgb . ty [ 1 , 2 ] , s q r t ( varb . ty [ 1 , 2 ] ) ) , from=1, to=6,add=T, c o l =’red ’ , lwd=2)

265 h i s t (mleb . ty [ , 1 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on (gamma) , breaks=20)

266 curve (dnorm(x , avgb . ty [ 1 , 1 ] , s q r t ( varb . ty [ 1 , 1 ] ) ) , from=.5 , to =4.5 , add=T, c o l =’red ’ , lwd=2)

267 dev . o f f ( )

268

269 pdf ( ” . . / Graphs/ norm mle t iny . pdf ” , width=14)

270 par (mfrow=c (1 , 2 ) )

271 h i s t (mle . ty [ , 2 ] , f r e q=F, main= ’ ’ , yl im=c ( 0 , . 1 ) , x lab=expr e s s i on ( beta ) , breaks=20)

272 curve (dnorm(x , avg . ty [ 1 , 2 ] , s q r t ( var . ty [ 1 , 2 ] ) ) , from=74, to=105 ,add=T, c o l =’red ’ , lwd=2)

273 h i s t (mle . ty [ , 1 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on (gamma) , breaks=20)

87

Page 97: Parameter Estimation for the Two-Parameter Weibull

274 curve (dnorm(x , avg . ty [ 1 , 1 ] , s q r t ( var . ty [ 1 , 1 ] ) ) , from=2, to=12,add=T, co l =’red ’ , lwd=2)

275 dev . o f f ( )

276

277 #MOM

278 pdf ( ” . . / Graphs/norm mom big . pdf ” , width=14)

279 par (mfrow=c (1 , 2 ) )

280 h i s t (mom. l g [ , 2 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on ( beta ) , breaks=20)

281 curve (dnorm(x , avg . l g [ 2 , 2 ] , s q r t ( var . l g [ 2 , 2 ] ) ) , from=88, to=91,add=T, co l =’red ’ , lwd=2)

282 h i s t (mom. l g [ , 1 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on (gamma) , breaks=20)

283 curve (dnorm(x , avg . l g [ 2 , 1 ] , s q r t ( var . l g [ 2 , 1 ] ) ) , from=4.85 , to =5.15 , add=T, co l =’red ’ , lwd

=2)

284 dev . o f f ( )

285

286 pdf ( ” . . / Graphs/norm momb big . pdf ” , width=14)

287 par (mfrow=c (1 , 2 ) )

288 h i s t (momb. l g [ , 2 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on ( beta ) , breaks=20)

289 curve (dnorm(x , avgb . l g [ 2 , 2 ] , s q r t ( varb . l g [ 2 , 2 ] ) ) , from=2.45 , to =2.55 , add=T, co l =’red ’ , lwd

=2)

290 h i s t (momb. l g [ , 1 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on (gamma) , breaks=20)

291 curve (dnorm(x , avgb . l g [ 2 , 1 ] , s q r t ( varb . l g [ 2 , 1 ] ) ) , from=1.95 , to =2.05 , add=T, co l =’red ’ , lwd

=2)

292 dev . o f f ( )

293

294 pdf ( ” . . / Graphs/norm momb small . pdf ” , width=14)

295 par (mfrow=c (1 , 2 ) )

296 h i s t (momb. sm [ , 2 ] , f r e q=F, main= ’ ’ , yl im=c (0 , 3 . 2 5 ) , x lab=expr e s s i on ( beta ) , breaks=20)

297 curve (dnorm(x , avgb . sm [ 2 , 2 ] , s q r t ( varb . sm [ 2 , 2 ] ) ) , from=2, to=3,add=T, co l =’red ’ , lwd=2)

298 h i s t (momb. sm [ , 1 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on (gamma) , breaks=20)

299 curve (dnorm(x , avgb . sm [ 2 , 1 ] , s q r t ( varb . sm [ 2 , 1 ] ) ) , from=1.5 , to =2.6 , add=T, co l =’red ’ , lwd

=2)

300 dev . o f f ( )

301

302 pdf ( ” . . / Graphs/norm mom small . pdf ” , width=14)

303 par (mfrow=c (1 , 2 ) )

304 h i s t (mom. sm [ , 2 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on ( beta ) , breaks=20)

305 curve (dnorm(x , avg . sm [ 2 , 2 ] , s q r t ( var . sm [ 2 , 2 ] ) ) , from=84, to=96,add=T, co l =’red ’ , lwd=2)

306 h i s t (mom. sm [ , 1 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on (gamma) , breaks=20)

307 curve (dnorm(x , avg . sm [ 2 , 1 ] , s q r t ( var . sm [ 2 , 1 ] ) ) , from=3.9 , to =6.5 , add=T, c o l =’red ’ , lwd=2)

308 dev . o f f ( )

88

Page 98: Parameter Estimation for the Two-Parameter Weibull

309

310 pdf ( ” . . / Graphs/norm momb tiny . pdf ” , width=14)

311 par (mfrow=c (1 , 2 ) )

312 h i s t (momb. ty [ , 2 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on ( beta ) , breaks=20)

313 curve (dnorm(x , avgb . ty [ 2 , 2 ] , s q r t ( varb . ty [ 2 , 2 ] ) ) , from=0, to=6,add=T, c o l =’red ’ , lwd=2)

314 h i s t (momb. ty [ , 1 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on (gamma) , breaks=20)

315 curve (dnorm(x , avgb . ty [ 2 , 1 ] , s q r t ( varb . ty [ 2 , 1 ] ) ) , from=1, to =4.5 , add=T, c o l =’red ’ , lwd=2)

316 dev . o f f ( )

317

318 pdf ( ” . . / Graphs/norm mom tiny . pdf ” , width=14)

319 par (mfrow=c (1 , 2 ) )

320 h i s t (mom. ty [ , 2 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on ( beta ) , breaks=20)

321 curve (dnorm(x , avg . ty [ 2 , 2 ] , s q r t ( var . ty [ 2 , 2 ] ) ) , from=75, to=105 ,add=T, c o l =’red ’ , lwd=2)

322 h i s t (mom. ty [ , 1 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on (gamma) , breaks=20)

323 curve (dnorm(x , avg . ty [ 2 , 1 ] , s q r t ( var . ty [ 2 , 1 ] ) ) , from=2, to=12,add=T, co l =’red ’ , lwd=2)

324 dev . o f f ( )

325

326

327 #MRR

328 pdf ( ” . . / Graphs/norm mrr big . pdf ” , width=14)

329 par (mfrow=c (1 , 2 ) )

330 h i s t (mrr . l g [ , 2 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on ( beta ) , breaks=20)

331 curve (dnorm(x , avg . l g [ 3 , 2 ] , s q r t ( var . l g [ 3 , 2 ] ) ) , from=89, to=91,add=T, co l =’red ’ , lwd=2)

332 h i s t (mrr . l g [ , 1 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on (gamma) , breaks=20)

333 curve (dnorm(x , avg . l g [ 3 , 1 ] , s q r t ( var . l g [ 3 , 1 ] ) ) , from=4.8 , to =5.2 , add=T, c o l =’red ’ , lwd=2)

334 dev . o f f ( )

335

336 pdf ( ” . . / Graphs/norm mrrb big . pdf ” , width=14)

337 par (mfrow=c (1 , 2 ) )

338 h i s t (mrrb . l g [ , 2 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on ( beta ) , breaks=20)

339 curve (dnorm(x , avgb . l g [ 3 , 2 ] , s q r t ( varb . l g [ 3 , 2 ] ) ) , from=2.45 , to =2.55 , add=T, co l =’red ’ , lwd

=2)

340 h i s t (mrrb . l g [ , 1 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on (gamma) , breaks=20)

341 curve (dnorm(x , avgb . l g [ 3 , 1 ] , s q r t ( varb . l g [ 3 , 1 ] ) ) , from=1.9 , to =2.1 , add=T, co l =’red ’ , lwd

=2)

342 dev . o f f ( )

343

344 pdf ( ” . . / Graphs/norm mrrb small . pdf ” , width=14)

345 par (mfrow=c (1 , 2 ) )

89

Page 99: Parameter Estimation for the Two-Parameter Weibull

346 h i s t (mrrb . sm [ , 2 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on ( beta ) , breaks=20)

347 curve (dnorm(x , avgb . sm [ 3 , 2 ] , s q r t ( varb . sm [ 3 , 2 ] ) ) , from=2, to =3.5 , add=T, co l =’red ’ , lwd=2)

348 h i s t (mrrb . sm [ , 1 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on (gamma) , breaks=20)

349 curve (dnorm(x , avgb . sm [ 3 , 1 ] , s q r t ( varb . sm [ 3 , 1 ] ) ) , from=1.3 , to =2.7 , add=T, co l =’red ’ , lwd

=2)

350 dev . o f f ( )

351

352 pdf ( ” . . / Graphs/norm mrr small . pdf ” , width=14)

353 par (mfrow=c (1 , 2 ) )

354 h i s t (mrr . sm [ , 2 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on ( beta ) , breaks=20)

355 curve (dnorm(x , avg . sm [ 3 , 2 ] , s q r t ( var . sm [ 3 , 2 ] ) ) , from=84, to=97,add=T, co l =’red ’ , lwd=2)

356 h i s t (mrr . sm [ , 1 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on (gamma) , breaks=20)

357 curve (dnorm(x , avg . sm [ 3 , 1 ] , s q r t ( var . sm [ 3 , 1 ] ) ) , from=3, to =6.5 , add=T, c o l =’red ’ , lwd=2)

358 dev . o f f ( )

359

360 pdf ( ” . . / Graphs/norm mrrb tiny . pdf ” , width=14)

361 par (mfrow=c (1 , 2 ) )

362 h i s t (mrrb . ty [ , 2 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on ( beta ) , breaks=20)

363 curve (dnorm(x , avgb . ty [ 3 , 2 ] , s q r t ( varb . ty [ 3 , 2 ] ) ) , from=1, to =4.5 , add=T, c o l =’red ’ , lwd=2)

364 h i s t (mrrb . ty [ , 1 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on (gamma) , breaks=20)

365 curve (dnorm(x , avgb . ty [ 3 , 1 ] , s q r t ( varb . ty [ 3 , 1 ] ) ) , from=.25 , to=4,add=T, c o l =’red ’ , lwd=2)

366 dev . o f f ( )

367

368 pdf ( ” . . / Graphs/norm mrr tiny . pdf ” , width=14)

369 par (mfrow=c (1 , 2 ) )

370 h i s t (mrr . ty [ , 2 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on ( beta ) , breaks=20)

371 curve (dnorm(x , avg . ty [ 3 , 2 ] , s q r t ( var . ty [ 3 , 2 ] ) ) , from=73, to=105 ,add=T, c o l =’red ’ , lwd=2)

372 h i s t (mrr . ty [ , 1 ] , f r e q=F, main= ’ ’ , x lab=expr e s s i on (gamma) , breaks=20)

373 curve (dnorm(x , avg . ty [ 3 , 1 ] , s q r t ( var . ty [ 3 , 1 ] ) ) , from=1.5 , to=10,add=T, co l =’red ’ , lwd=2)

374 dev . o f f ( )

C.3 Code to read in wind data

1 #############

2 # Mark Nie l s en

3 # Masters p r o j e c t

4 # c r e a t i n g data s e t s with only v a r i a b l e s o f i n t e r e s t .

5

6

7 #setwd ( ’/home/owner/Desktop/Dropbox/C la s s e s /MASTERS PROJECT’ )

90

Page 100: Parameter Estimation for the Two-Parameter Weibull

8

9 ab09=read . csv ( ’ . . / winddata/ab 2009 . csv ’ , header=T)

10 ab10=read . csv ( ’ . . / winddata/ab 2010 . csv ’ , header=T)

11 ca09=read . csv ( ’ . . / winddata/ ca 2009 . csv ’ , header=T)

12 ca10=read . csv ( ’ . . / winddata/ ca 2010 . csv ’ , header=T)

13 gc09=read . csv ( ’ . . / winddata/ gc 2009 . csv ’ , header=T)

14 gc10=read . csv ( ’ . . / winddata/ gc 2010 . csv ’ , header=T)

15 sb09=read . csv ( ’ . . / winddata/ sb 2009 . csv ’ , header=T)

16 sb10=read . csv ( ’ . . / winddata/ sb 2010 . csv ’ , header=T)

17 rtmet09=read . csv ( ’ . . / winddata/ rtmet 2009 . csv ’ , header=T)

18 rtmet10=read . csv ( ’ . . / winddata/ rtmet 2010 . csv ’ , header=T)

19

20 ab=rbind ( ab09 [ , c (1 , 80 ) ] , ab10 [ , c (1 , 80 ) ] )

21 ab$WindS ms Ave [ ab[ ,2]==−8999]=NA

22 h i s t ( ab [ , 2 ] , f r e q=F, breaks=40)

23 ab .nm=ab [ ! i s . na ( ab [ , 2 ] ) , ]

24 p l o t ( dens i ty ( ab .nm[ , 2 ] ) )

25

26 ca=rbind ( ca09 [ , c (1 , 80 ) ] , ca10 [ , c (1 , 80 ) ] )

27 ca$WindS ms Ave [ ca [ ,2]==−8999]=NA

28 h i s t ( ca [ , 2 ] , f r e q=F, breaks=40)

29 ca .nm=ca [ ! i s . na ( ca [ , 2 ] ) , ]

30 p l o t ( dens i ty ( ca .nm[ , 2 ] ) )

31

32 gc=rbind ( gc09 [ , c (1 , 80 ) ] , gc10 [ , c (1 , 80 ) ] )

33 gc$WindS ms Ave [ gc [ ,2]==−8999]=NA

34 h i s t ( gc [ , 2 ] , f r e q=F, breaks=40)

35 gc .nm=gc [ ! i s . na ( gc [ , 2 ] ) , ]

36 p l o t ( dens i ty ( gc .nm[ , 2 ] ) )

37

38 sb=rbind ( sb09 [ , c (1 , 80 ) ] , sb10 [ , c (1 , 80 ) ] )

39 sb$WindS ms Ave [ sb [ ,2]==−8999]=NA

40 h i s t ( sb [ , 2 ] , f r e q=F, breaks=40)

41 sb .nm=sb [ ! i s . na ( sb [ , 2 ] ) , ]

42 p l o t ( dens i ty ( sb .nm[ , 2 ] ) )

43 curve ( dwe ibu l l (x , 1 . 4 , 2 . 2 ) , from=0, to=14, add=T, co l =2)

44

45 rtmet=rbind ( rtmet09 [ , c (1 , 13 ) ] , rtmet10 [ , c (1 , 13 ) ] )

46 rtmet$WindS ms Ave [ rtmet [ ,2]==−9999]=NA

91

Page 101: Parameter Estimation for the Two-Parameter Weibull

47 h i s t ( rtmet [ , 2 ] , f r e q=F, breaks=40)

48 rtmet .nm=rtmet [ ! i s . na ( rtmet [ , 2 ] ) , ]

49 p l o t ( dens i ty ( rtmet .nm[ , 2 ] ) )

50

51 dim( ab ) [ 1 ]

52 #28285

53 dim( ca ) [ 1 ]

54 #28284

55 dim( gc ) [ 1 ]

56 #28283

57 dim( sb ) [ 1 ]

58 #28283

59 dim( rtmet ) [ 1 ]

60 #9158

61

62 wr i t e . csv ( ab , ’ . . / winddata/ab wind . csv ’ , row . names=F)

63 wr i t e . csv ( ca , ’ . . / winddata/ ca wind . csv ’ , row . names=F)

64 wr i t e . csv ( gc , ’ . . / winddata/gc wind . csv ’ , row . names=F)

65 wr i t e . csv ( sb , ’ . . / winddata/ sb wind . csv ’ , row . names=F)

66 wr i t e . csv ( rtmet , ’ . . / winddata/ rtmet wind . csv ’ , row . names=F)

C.4 Code for parameter estimation

1 l i b r a r y ( xtab l e )

2

3 gc=read . csv ( ’ . . / winddata/gc wind . csv ’ , header=T)

4 par=gc [ ( ! i s . na ( gc [ , 2 ] ) ) , 2 ]

5 par [ par==0]=.000001

6 par2=gc [ ( ! i s . na ( gc [ , 2 ] ) & gc [ , 2 ] !=0 ) , 2 ]

7 par3=gc [ ( ! i s . na ( gc [ , 2 ] ) ) , 2 ]

8 par3 [ par3==0]=.0001

9 par4=gc [ ( ! i s . na ( gc [ , 2 ] ) ) , 2 ]

10 par4 [ par4==0]=.01

11

12 #change the data to bin format ( i . e . f r e qu en c i e s o f wspeed from 0− .25 , .25− .5 , e t c . )

13 f r q=c e i l i n g (4∗ gc [ ! i s . na ( gc [ , 2 ] ) , 2 ] ) /4

14 f r q [ f r q ==0]=.25

15

16 n1=length ( par )

17 n2=length ( par2 )

92

Page 102: Parameter Estimation for the Two-Parameter Weibull

18 r a t i o=n2/n1

19

20 source ( ’ sourcecode . r ’ )

21

22 #/∗∗ Maximum Like l i hood Est imation ∗∗/

23 MLEest=nlm( we ibu l l . l l , p=c (1 , 3 ) , dat=par ) $es t imate

24 MLEest2=nlm( we ibu l l . l l , p=c (1 , 3 ) , dat=par2 ) $es t imate

25 MLEest3=nlm( we ibu l l . l l , p=c (1 , 3 ) , dat=par3 ) $es t imate

26 MLEest4=nlm( we ibu l l . l l , p=c (1 , 3 ) , dat=par4 ) $es t imate

27 # here are the f r equecy formatted data . . .

28 MLEest5=nlm( we ibu l l . l l , p=c (1 , 3 ) , dat=f r q ) $es t imate

29

30 #/∗∗ Maximum Like l i hood Est imation with mixture d i s t r i b u t i o n ∗∗/

31 par1=gc [ ( ! i s . na ( gc [ , 2 ] ) ) , 2 ]

32 MLEmix=nlm(mix . l l , p=c ( 3 , 3 , . 9 ) , dat=par1 ) $es t imate

33

34 #p lo t the curves and see which one f i t s bes t . . .

35 pdf ( ’ . . / Graphs/gc MLE . pdf ’ )

36 h i s t ( gc [ , 2 ] , f r e q=F, breaks=40, main=’Maximum Like l ihood ’ , x lab=’Wind Speed ’ , cex . lab

=1.5 , cex . main=2)

37 curve ( dwe ibu l l (x ,MLEest [ 1 ] , MLEest [ 2 ] ) , from=0, to=10,add=T, co l =’blue ’ , lwd=2.5)

38 curve ( dwe ibu l l (x , MLEest3 [ 1 ] , MLEest3 [ 2 ] ) , from=0, to=10,add=T, c o l =’orange ’ , lwd=2.5)

39 curve ( dwe ibu l l (x , MLEest4 [ 1 ] , MLEest4 [ 2 ] ) , from=0, to=10,add=T, c o l =’green ’ , lwd=2.5)

40 curve ( dwe ibu l l (x , MLEest5 [ 1 ] , MLEest5 [ 2 ] ) , from=0, to=10,add=T, c o l =’black ’ , lwd=2.5)

41 curve ( i f e l s e ( x==0,1−MLEmix [ 3 ] , 0 )+MLEmix [ 3 ] ∗ dwe ibu l l (x ,MLEmix [ 1 ] ,MLEmix [ 2 ] ) , from=0, to

=10,add=T, c o l =’red ’ , lwd=2.5)

42 legend ( 5 . 5 , . 2 , c (”Mixture Model ” , ”0 .000001” ,”0 .0001” ,”0 .01” ,” Bins ”) , c o l=c ( ’ red ’ , ’ blue

’ , ’ orange ’ , ’ green ’ , ’ black ’ ) , l t y=c (1 , 1 , 1 , 1 , 1 ) , lwd=2.5 , cex =1.5 , bty=’n ’ )

43 dev . o f f ( )

44

45 tblMLE=rbind (MLEmix [ 1 : 2 ] , MLEest2 ,MLEest5 ,MLEest ,MLEest3 ,MLEest4 )

46 colnames ( tblMLE)=c (”gamma” ,” beta ”)

47 rownames ( tblMLE)=c (”MLEmix” ,”MLEdel” ,”MLEbin” ,”MLE000001” ,”MLE0001” ,”MLE01”)

48 xtab l e ( tblMLE , d i g i t s =5)

49

50

51 #/∗∗ Median Rank Regres s ion Method ∗∗/

52

53 #//so r t the data .

93

Page 103: Parameter Estimation for the Two-Parameter Weibull

54 par so r t=so r t ( par )

55 par so r t2=so r t ( par2 )

56 par so r t3=so r t ( par3 )

57 par so r t4=so r t ( par4 )

58 par so r t5=so r t ( f r q )

59

60 MRRest=medianrank ( pa r so r t )

61 MRR=MRRest [ [ 1 ] ]

62 MRR2=medianrank ( par so r t2 )

63 grph=MRR2[ [ 3 ] ]

64 MRR2=MRR2[ [ 1 ] ]

65 thta=medianrank ( par so r t2 ) [ [ 4 ] ]

66 MRR3=medianrank ( par so r t3 ) [ [ 1 ] ]

67 MRR4=medianrank ( par so r t4 ) [ [ 1 ] ]

68 MRR5=medianrank ( par so r t5 ) [ [ 1 ] ]

69

70 #p lo t the curves and see which one f i t s bes t . . .

71 pdf ( ’ . . / Graphs/gc MRR. pdf ’ )

72 h i s t ( gc [ , 2 ] , f r e q=F, breaks=40, main=’Median Rank Regress ion ’ , x lab=’Wind Speed ’ , cex .

lab =1.5 , cex . main=2)

73 curve ( dwe ibu l l (x ,MRR[ 1 ] ,MRR[ 2 ] ) , from=0, to=10,add=T, co l =’blue ’ , lwd=2.5)

74 curve ( dwe ibu l l (x ,MRR3[ 1 ] ,MRR3[ 2 ] ) , from=0, to=10,add=T, c o l =’orange ’ , lwd=2.5)

75 curve ( dwe ibu l l (x ,MRR4[ 1 ] ,MRR4[ 2 ] ) , from=0, to=10,add=T, c o l =’green ’ , lwd=2.5)

76 curve ( dwe ibu l l (x ,MRR5[ 1 ] ,MRR5[ 2 ] ) , from=0, to=10,add=T, c o l =’black ’ , lwd=2.5)

77 curve ( i f e l s e ( x==0,1− r a t i o , 0 )+r a t i o ∗ dwe ibu l l (x ,MRR2[ 1 ] ,MRR2[ 2 ] ) , from=0, to=10,add=T,

co l =’red ’ , lwd=2.5)

78 legend ( 6 , . 2 , c (” Delete ” ,”0 .000001” ,”0 .0001” ,”0 .01” ,” Bins ”) , c o l=c ( ’ red ’ , ’ blue ’ , ’ orange

’ , ’ green ’ , ’ black ’ ) , l t y=c (1 , 1 , 1 ) , lwd=2.5 , cex =1.5 , bty=’n ’ )

79 dev . o f f ( )

80

81 # p lo t how th i s i s est imated

82 pdf ( ” . . / Graphs/MRR gcline . pdf ”)

83 p l o t ( l og ( par so r t2 ) , grph , main=’Median Rank Regress ion ’ ,

84 xlab=’ l og ( t ) ’ , y lab=’ l og (1/S( t ) ) ’ , pch=19, cex . main=2, cex . lab =1.5)

85 ab l i n e ( thta [ 1 ] , thta [ 2 ] , l t y =1, lwd=2, c o l =’blue ’ )

86 text (1 ,−4 , exp r e s s i on (y == ps i [ 0 ] + ps i [ 1 ] ∗ x ) , c o l =’blue ’ , cex=2)

87 dev . o f f ( )

88

89 tblMRR=rbind (MRR2,MRR5,MRR,MRR3,MRR4)

94

Page 104: Parameter Estimation for the Two-Parameter Weibull

90 colnames (tblMRR)=c (”gamma” ,” beta ”)

91 rownames (tblMRR)=c (”MRRdel” ,”MRRbin” ,”MRR000001” ,”MRR0001” ,”MRR01”)

92 xtab l e (tblMRR , d i g i t s =5)

93

94

95 #/∗∗ Method o f Moments Est imation ∗∗/

96 MOMest=rep (1 , 2 ) ;

97 MOMest2=rep (1 , 2 ) ;

98 MOMest3=rep (1 , 2 ) ;

99 MOMest4=rep (1 , 2 )

100 MOMest5=rep (1 , 2 )

101

102 #//de f i n e moments .

103 mu=rep (0 , 2 )

104 mu2=rep (0 , 2 )

105 mu3=rep (0 , 2 )

106 mu4=rep (0 , 2 )

107 mu5=rep (0 , 2 )

108

109 #// mu1=E(x )

110 mu[1 ]=sum( par ) / l ength ( par )

111 mu2[1 ]=sum( par2 ) / l ength ( par2 )

112 mu3[1 ]=sum( par3 ) / l ength ( par3 )

113 mu4[1 ]=sum( par4 ) / l ength ( par4 )

114 mu5[1 ]=sum( f r q ) / l ength ( f r q )

115

116 #// mu2=E(xˆ2)

117 mu[2 ]=sum( par ˆ2) / l ength ( par )

118 mu2[2 ]=sum( par2 ˆ2) / l ength ( par2 )

119 mu3[2 ]=sum( par3 ˆ2) / l ength ( par3 )

120 mu4[2 ]=sum( par4 ˆ2) / l ength ( par4 )

121 mu5[2 ]=sum( f r q ˆ2) / l ength ( f r q )

122

123 #//Use root f i nd i n g to es t imate gamma

124 MOMest[1 ]= b i s e c t i o n ( . 0 6 , 10 . 2 ,mu, t o l = 1e−6)

125 MOMest2[1 ]= b i s e c t i o n ( . 0 6 , 10 . 2 ,mu2 , t o l = 1e−6)

126 MOMest3[1 ]= b i s e c t i o n ( . 0 6 , 10 . 2 ,mu3 , t o l = 1e−6)

127 MOMest4[1 ]= b i s e c t i o n ( . 0 6 , 10 . 2 ,mu4 , t o l = 1e−6)

128 MOMest5[1 ]= b i s e c t i o n ( . 0 6 , 10 . 2 ,mu5 , t o l = 1e−6)

95

Page 105: Parameter Estimation for the Two-Parameter Weibull

129

130 #//Solve f o r beta

131 #// beta=mu1/GAMMA(1+1/gamma)

132 MOMest[2 ]=mu[ 1 ] / gamma(1+1/MOMest [ 1 ] )

133 MOMest2[2 ]=mu2 [ 1 ] / gamma(1+1/MOMest2 [ 1 ] )

134 MOMest3[2 ]=mu3 [ 1 ] / gamma(1+1/MOMest3 [ 1 ] )

135 MOMest4[2 ]=mu4 [ 1 ] / gamma(1+1/MOMest4 [ 1 ] )

136 MOMest5[2 ]=mu5 [ 1 ] / gamma(1+1/MOMest5 [ 1 ] )

137

138 tblMOM=rbind (MOMest2 ,MOMest5 ,MOMest,MOMest3 ,MOMest4)

139 colnames (tblMOM)=c (”gamma” ,” beta ”)

140 rownames (tblMOM)=c (”MOMdel” ,”MOMbin” ,”MOM000001” ,”MOM0001” ,”MOM01”)

141 xtab l e (tblMOM, d i g i t s =5)

142

143 #p lo t the curves and see which one f i t s bes t . . .

144 pdf ( ’ . . / Graphs/gc MOM. pdf ’ )

145 h i s t ( gc [ , 2 ] , f r e q=F, breaks=40, main=’Method o f Moments ’ , x lab=’Wind Speed ’ , cex . lab

=1.5 , cex . main=2)

146 curve ( dwe ibu l l (x ,MOMest [ 1 ] ,MOMest [ 2 ] ) , from=0, to=10,add=T, c o l =’blue ’ , lwd=2.5)

147 curve ( dwe ibu l l (x ,MOMest3 [ 1 ] ,MOMest3 [ 2 ] ) , from=0, to=10,add=T, co l =’orange ’ , lwd=2.5 , l t y

=3)

148 curve ( dwe ibu l l (x ,MOMest4 [ 1 ] ,MOMest4 [ 2 ] ) , from=0, to=10, add=T, co l =’green ’ , lwd=2.5 , l t y

=4)

149 curve ( dwe ibu l l (x ,MOMest5 [ 1 ] ,MOMest5 [ 2 ] ) , from=0, to=10,add=T, co l =’black ’ , lwd=2.5 , l t y

=5)

150 curve ( i f e l s e ( x==0,1− r a t i o , 0 )+r a t i o ∗ dwe ibu l l (x ,MOMest2 [ 1 ] ,MOMest2 [ 2 ] ) , from=0, to=10,

add=T, co l =’red ’ , lwd=2.5 , l t y =2)

151 legend ( 6 , . 2 , c (” Delete ” ,”0 .000001” ,”0 .0001” ,”0 .01” ,” Bins ”) , c o l=c ( ’ red ’ , ’ blue ’ , ’ orange

’ , ’ green ’ , ’ black ’ ) , l t y=c (1 , 2 , 3 , 4 , 5 ) , lwd=2.5 , cex =1.5 , bty=’n ’ )

152 dev . o f f ( )

153

154 tb l=rbind (MLEmix, c (MOMest2 , r a t i o ) , c (MRR2, r a t i o ) )

155 colnames ( tb l )=c (”gamma” ,” beta ” ,” p i ”)

156 rownames ( tb l )=c (”MLEmix” ,”MOMdel” ,”MRRdel”)

157 xtab l e ( tb l , d i g i t s =5)

C.5 Source code

1

2 ##### DEFINE FUNCTION TO BE MINIMIZED

96

Page 106: Parameter Estimation for the Two-Parameter Weibull

3 # dat = data

4 # theta = vecto r o f parameters to be i d e n t i f i e d

5 we ibu l l . l l=func t i on ( theta , dat )

6 {

7 i f ( theta [1]<=0){

8 return (1 e10 )

9 } e l s e i f ( theta [2]<=0){

10 return (1 e10 )

11 } e l s e {

12 f = −l ength ( dat ) ∗ l og ( theta [ 1 ] / theta [ 2 ] ˆ theta [ 1 ] ) − ( theta [1 ]−1) ∗sum( log ( dat ) ) +

sum( ( dat/ theta [ 2 ] ) ˆ theta [ 1 ] )

13 re turn ( f )

14 }

15 }

16

17

18 ##### Def ine func t i on to be minimized with mixture d i s tn .

19 # dat = data

20 # theta = vecto r o f parameters to be ’ ID ’ ed

21 mix . l l=func t i on ( theta , dat )

22 {

23 n=length ( dat )

24 m=length ( dat [ dat !=0 ] )

25 i f ( theta [1]<=0){

26 return (1 e10 )

27 } e l s e i f ( theta [2]<=0){

28 return (1 e10 )

29 } e l s e i f ( theta [3 ]<0) {

30 return (1 e10 )

31 } e l s e i f ( theta [3 ]>1) {

32 return (1 e10 )

33 } e l s e {

34 f = (n−m) ∗ l og (1− theta [ 3 ] )+m∗ l og ( theta [ 3 ] )+m∗ l og ( theta [ 1 ] / theta [ 2 ] ˆ theta [ 1 ] ) + (

theta [1 ]−1) ∗sum( log ( dat [ dat !=0 ] ) ) − sum( ( dat [ dat !=0]/ theta [ 2 ] ) ˆ theta [ 1 ] )

35 re turn(− f )

36 }

37 }

38

39

97

Page 107: Parameter Estimation for the Two-Parameter Weibull

40 # /∗∗ Median Rank Regres s ion Method ∗∗/

41 medianrank=func t i on ( dat ) {

42 ynew=rep (0 , l ength ( dat ) )

43 f o r ( k in 1 : l ength ( dat ) ) {

44 #//compute y ’ s

45 #// log ( l og (1/(1−( i − .3) /( npop+.4) ) ) )

46 ynew [ k]= log ( l og (1/(1−(k− .3) /( l ength ( dat ) +.4) ) ) )

47 }

48 #//compute x ’ s

49 #// log (x [ i ] )

50 xnew=log ( dat )

51

52 #// f i t the model .

53 #//compute xbar & ybar

54 beta=c o e f f i c i e n t s ( lm(ynew˜xnew) )

55 #//compute parameters .

56 #//gamma=c1

57 thta=rep (0 , 2 )

58 thta [1 ]= beta [ 2 ]

59 #//beta=exp(−c0/gamma)

60 thta [2 ]= exp(−beta [ 1 ] / thta [ 1 ] )

61 re turn ( l i s t ( thta , xnew , ynew , beta ) )

62 }

63

64

65

66 #//Use root f i nd i n g to es t imate gamma

67 b i s e c t i o n=func t i on (x . l , x . r , mu, t o l = 1e−09)

68 {

69 i f ( x . l >= x . r ) {

70 cat (” e r r o r : x . l >= x . r \n”)

71 return (NULL)

72 }

73 f . l <− gamma(1+2/x . l ) /gamma(1+1/x . l )ˆ2−mu[ 2 ] /mu[ 1 ] ˆ 2

74 f . r <− gamma(1+2/x . r ) /gamma(1+1/x . r )ˆ2−mu[ 2 ] /mu[ 1 ] ˆ 2

75 i f ( f . l ∗ f . r > 0) {

76 cat (” e r r o r : f t n (x . l ) ∗ f t n (x . r ) > 0 \n”)

77 return (NULL)

78 }

98

Page 108: Parameter Estimation for the Two-Parameter Weibull

79 n <− 0

80 whi l e ( ( x . r − x . l ) > t o l ) {

81 x .m <− ( x . l + x . r ) /2

82 f .m <− gamma(1.+2/x .m) /(gamma(1.+1/x .m) )ˆ2−mu[ 2 ] /mu[ 1 ] ˆ 2

83 i f ( f . l ∗ f .m < 0) {

84 x . r <− x .m

85 f . r <− f .m

86 }

87 e l s e {

88 x . l <− x .m

89 f . l <− f .m

90 }

91 n <− n + 1

92 cat (” at i t e r a t i o n ” , n , ” the root l i e s between ” , x . l ,

93 ”and” , x . r , ”\n”)

94 }

95 return ( ( x . l + x . r ) /2)

96 }

99