Teste de Aderência

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Teste de Aderência

Mensagem  Cristiano Melo em Sab Abr 23, 2011 10:18 pm

Olá,
To vendo que a comunidade é bem nova e com poucos membros. Mas se um dos poucos puder ajudar....

É o seguinte: tenho em um arquivo txt um vetor que representa tempos até a falha de equipamentos. Gostaria de fazer alguns teste de aderência para verificar se estes dados se aproximam de algumas distribuições de probabilidade. Usei o lillie.test(dados) para verificar se dos dados aderem a uma distribuição nomal. No entanto, gostaria de verificar se estes mesmos dados (e algumas variações) se aderem a uma exponencial, gamma e weibull.

Sei que a função é a ks.test(x, y,..., alternative=c("two.sided" "less" or "greater")) para o teste de Kolmogorov-Smirnov.
Para testar normalidade com a função ks, fiz o seguinte: ks.test(vetor, "pnorm", sd=sd(vetor), mean=mean(vetor),alternative=c("two.sided")). Curioso que o resultado foi bem diferente da lillie.test, a seguinte mensagem foi apresentada:
Warning message:
In ks.test(vetor, "pnorm", sd=sd(vetor), mean=mean(vetor),alternative=c("two.sided")), : não é possível calcular os níveis descritivos corretos com empates.
O que isso quer dizer???????

Quando tentei usar outra distribuição, pweibull por exemplo, o p-value foi menor que 2.2e-16, ou seja, nada a ver, e repetindo a mesma frase anterior. O mesmo resultado foi com as outras. Como não sei a sintaxe para weibull fiz o seguinte:
ks.test(vetor, "pweibull", 1.129, 2,alternative=c("two.sided"))

Onde estou errando? Vi que para montar uma pweibull são necessários o vetor de quantis e os parâmetros shape e scale. É necessário fazer separado e quardar em uma variável e depois jogar na ks? Como consigo esse vetor de quantis? Achei que seria automático. Sei que fiz muitas perguntas, mas a resposta pode ser simples: Como fazer o teste de aderência para uma weibull.

Cristiano Melo

Mensagens : 6
Data de inscrição : 23/04/2011

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Teste de Aderência

Mensagem  gustavoreis em Dom Abr 24, 2011 11:18 pm

Cristiano, você está no caminho certo, acredito que falta apenas você definir os parâmetros shape e scale para seus dados.

Quando fazemos um teste de aderência para a distribuição normal utilizando o ks.test, temos que fornecer a média e o desvio padrão a serem testados. Neste caso, normalmente, calculamos a média e o desvio padrão da variável de interesse da seguinte forma:

ks.test(Y, “pnorm”, mean(Y), sd(Y))

Já no caso da distribuição de weibull eu não sei se existe uma função que faça o cálculo dos parâmetros shape e scale, portanto você tem duas opções:

1) procurar por uma função que faça isso (não é muito fácil, pois fiz uma busca rápida e acho que não tem nos pacotes básicos do R, você teria que procurar no site: www.r-project.org , por algum pacote adicional que tenha essa função);

2) procurar alguma literatura que explique como estimar os parâmetros shape e scale, e então fazer os cálculos.

Apenas como demonstração que a função ks.test funciona para a Distribuição de Weibull, segue um pequeno exemplo:

vetor<-rweibull(100,10,2)

# número de dados simulados =100
# shape = 10
# scale = 2

ks.test(vetor, "pweibull",10,2)

#resultado:

One-sample Kolmogorov-Smirnov test

data: vetor
D = 0.0764, p-value = 0.6043
alternative hypothesis: two-sided

# Como p-valor>0,05 aceita-se Ho (igualdade)

# Já se testarmos o mesmo vetor com parâmetros diferentes:

ks.test(vetor, "pweibull",10,1)

# Resultado:

One-sample Kolmogorov-Smirnov test

data: vetor
D = 0.9997, p-value < 2.2e-16
alternative hypothesis: two-sided

# Como p-valor<0,05, rejeita-se Ho



Última edição por gustavoreis em Seg Abr 25, 2011 10:12 pm, editado 1 vez(es)

gustavoreis
Admin

Mensagens : 70
Data de inscrição : 01/03/2011
Idade : 32

Ver perfil do usuário http://estatisticanor.forumeiros.com

Voltar ao Topo Ir em baixo

Re: Teste de Aderência

Mensagem  Cristiano Melo em Seg Abr 25, 2011 11:49 am

Muito obrigado pela resposta gustavo.
Realmente vou ter que pesquisar como estimar estes parãmetros, caso não encontre, vai ser na base da tentativa e erro para ver qual se adequa melhor ao histograma de meus dados.

Só mais uma pergunta (estou sem o R neste computador que teclo): no exemplo que você passou, se no lugar de "vetor" eu usar meus dados como parâmetro x da ks.test eu tenho sucesso?

Porque a idéia seria gerar um vetor aleatório com a função rweibull e os parâmetros shape e scale, e com a função ks.test, testar se meu vetor tem aderência a estes dados gerados.

Cristiano Melo

Mensagens : 6
Data de inscrição : 23/04/2011

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Teste de Aderência

Mensagem  gustavoreis em Seg Abr 25, 2011 10:11 pm

Cristiano, acho muito difícil você testar todas combinações possíveis de shape e scale até achar uma que desse aderência a seus dados e ainda correria o risco de não encontrar. O correto é você estimar os parâmetros como eu falei anteriormente.

Com relação ao que você disse sobre simular dados para comparar com os seus dados, eu não faria dessa forma. Na minha opinião, você deve apenas mencionar os parâmetros de interesse no ks.test, como eu fiz no exemplo acima.

gustavoreis
Admin

Mensagens : 70
Data de inscrição : 01/03/2011
Idade : 32

Ver perfil do usuário http://estatisticanor.forumeiros.com

Voltar ao Topo Ir em baixo

Re: Teste de Aderência

Mensagem  Cristiano Melo em Seg Abr 25, 2011 10:29 pm

Não entendi Gustavo, se eu fizer como você mencionou [ vetor<-rweibull(100,10,2) e depois ks.test(vetor, "pweibull",10,2) ], como estarei verificando se meus dados seguem uma distribuição weibull (tempo de operaçao de equipamentos) com esses parâmetros se eles não estão sendo usados?

Cristiano Melo

Mensagens : 6
Data de inscrição : 23/04/2011

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Teste de Aderência

Mensagem  gustavoreis em Ter Abr 26, 2011 1:58 pm

1) estimar o shape e scale de seus dados

2) ks.test(seusdados,"pweilbull",shape, scale)

Não precisa usar rweilbull para simular dados e comparar com os seus, basta fazer o que mencionei acima.

gustavoreis
Admin

Mensagens : 70
Data de inscrição : 01/03/2011
Idade : 32

Ver perfil do usuário http://estatisticanor.forumeiros.com

Voltar ao Topo Ir em baixo

Re: Teste de Aderência

Mensagem  Cristiano Melo em Ter Abr 26, 2011 2:07 pm

Consultando a lista brasileira oficial do R cheguei a seguinte função:

library(MASS)
fitdistr(meus_dados, "weibull")

O resultado foi:
shape scale
1.377413 210.784742
(0.167581) (23.479204)

Definição
Maximum-likelihood Fitting of Univariate Distributions

Description
Maximum-likelihood fitting of univariate distributions, allowing parameters to be held fixed if desired.

Usage
fitdistr(x, densfun, start, ...)

Arguments
x A numeric vector.
densfun Either a character string or a function returning a density evaluated at its first argument.
Distributions "beta", "cauchy", "chi-squared", "exponential", "f", "gamma", "geometric", "log-normal", "lognormal", "logistic", "negative binomial", "normal", "Poisson", "t" and "weibull" are recognised, case being ignored.
start A named list giving the parameters to be optimized with initial values. This can be omitted for some of the named distributions and must be for others (see Details).
... Additional parameters, either for densfun or for optim. In particular, it can be used to specify bounds via lower or upper or both. If arguments of densfun (or the density function corresponding to a character-string specification) are included they will be held fixed.

Cristiano Melo

Mensagens : 6
Data de inscrição : 23/04/2011

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Teste de Aderência

Mensagem  gustavoreis em Ter Abr 26, 2011 9:31 pm

Bom trabalho, essa função que encontrou é muito útil.

Agora você pode fazer o teste para seus dados:

ks.test(seusdados,"pweibull",1.377413,210.784742)

Você deve analisar o p-valor de acordo com o nível de significância que escolher (normalmente 5%):

Se p-valor > 0,05 : Aceita-se Ho (hipótese de igualdade), portanto seus dados seguem uma distribuição de Weibull, a 5% de significância.
Se p-valor < 0,05 : Rejeita-se Ho, portanto seus dados não seguem uma distribuição de Weibull, a 5% de significância.

gustavoreis
Admin

Mensagens : 70
Data de inscrição : 01/03/2011
Idade : 32

Ver perfil do usuário http://estatisticanor.forumeiros.com

Voltar ao Topo Ir em baixo

Re: Teste de Aderência

Mensagem  Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum