Teste de Aderência
2 participantes
Página 1 de 1
Teste de Aderência
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.
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
Re: Teste de Aderência
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:
# 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:
# Como p-valor<0,05, rejeita-se Ho
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 |
Última edição por gustavoreis em Seg Abr 25, 2011 10:12 pm, editado 1 vez(es)
Re: Teste de Aderência
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.
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
Re: Teste de Aderência
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.
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.
Re: Teste de Aderência
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
Re: Teste de Aderência
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.
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.
Re: Teste de Aderência
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.
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
Re: Teste de Aderência
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.
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.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|