Re: [R-br] [OFF-Topic] Distribuição Normal e teste de t

Olá, Thales Bom, não estou respondendo a sua dúvida sobre Monte Carlo (não conheço bem o método), mas queria fazer uma observação sobre o pressuposto da normalidade. Como o seu teste é pareado, o cálculo do t é feito sobre as diferenças, e não sobre os valores brutos. Então acredito que você deva testar a normalidade das diferenças entre as variáveis x e y. Fiz o teste rapidamente com os dados que você incluiu no email, e o shapiro agora não rejeita a normalidade. Veja: dif<-x-y shapiro.test(dif) Shapiro-Wilk normality test data: dif W = 0.9716, p-value = 0.2683 Considere isso como possibilidade, então, pois é possível que você não precise sair do bom e velho teste t. Abraços Marcos Em 25 de abril de 2014 12:00, <r-br-request@listas.c3sl.ufpr.br> escreveu:
Enviar submissões para a lista de discussão R-br para r-br@listas.c3sl.ufpr.br
Para se cadastrar ou descadastrar via WWW, visite o endereço https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br ou, via email, envie uma mensagem com a palavra 'help' no assunto ou corpo da mensagem para r-br-request@listas.c3sl.ufpr.br
Você poderá entrar em contato com a pessoa que gerencia a lista pelo endereço r-br-owner@listas.c3sl.ufpr.br
Quando responder, por favor edite sua linha Assunto assim ela será mais específica que "Re: Contents of R-br digest..."
Message: 2 Date: Fri, 25 Apr 2014 08:55:04 +0200 From: Tropidurus Torquatus <t.torquatus@gmail.com> To: r-br@listas.c3sl.ufpr.br Subject: [R-br] [OFF-Topic] Distribuição Normal e teste de t Message-ID: <E44FD9CC-9263-4D76-91B5-C084EDFB64C7@gmail.com> Content-Type: text/plain; charset=windows-1252
Caros R-users,
Coloquei como off-topic pois acredito que esta seja mais uma dúvida conceitual do que de R ppd.
Dado que tenho dois conjuntos de dados:
x <- c ( 13.772 , 10.119 , 11.224 , 21.999 , 17.181 , 27.477 , 21.693 , 26.706 , 14.576 , 19.689 , 12.494 , 19.511 , 16.785 , 16.551 , 20.780 , 0.000 , 25.867 , 28.223 , 26.059 , 21.668 , 18.209 , 20.186 , 28.320 , 26.946 , 16.218 , 16.814 , 16.859 , 0.000 , 0.000 , 3.986 , 1.625 , 17.286 , 28.149 , 19.404 , 21.669 , 22.058 , 14.947 , 14.512 , 21.177 , 29.997 , 20.958 , 15.123 , 28.932 , 23.807 , 30.589 , 10.208 , 20.076 , 18.897 , 14.666 , 13.955)
y <- c ( 13.902 , 10.102 , 11.301 , 22.081 , 17.234 , 27.540 , 21.741 , 26.677 , 14.621 , 19.766 , 12.547 , 19.622 , 16.857 , 16.628 , 20.787 , 0.000 , 25.943 , 28.313 , 26.166 , 21.724 , 18.255 , 20.307 , 28.387 , 27.079 , 16.202 , 16.857 , 16.875 , 0.000 , 0.000 , 3.951 , 1.681 , 17.353 , 28.273 , 19.422 , 21.724 , 22.164 , 14.902 , 14.458 , 21.174 , 30.024 , 20.949 , 15.101 , 28.926 , 23.850 , 30.597 , 10.147 , 20.035 , 18.873 , 14.691 , 13.892)
As duas amostras estão pareadas. As duas amostras falham para o teste de normalidade:
shapiro.test ( x )
Shapiro-Wilk normality test
data: testetcompounds$tR...tM.UV.ABC W = 0.9373, p-value = 0.01057
shapiro.test ( y )
Shapiro-Wilk normality test
data: testetcompounds$tR...tM.UV.ABC.Group10 W = 0.9372, p-value = 0.01043
No livro Bayesian Computation with R
Sugere que para distribuições não normais é necessário fazer o teste de Monte Carlo
Com a seguinte função ======================================================= tstatistic = function ( y , x ) { m = length ( y ) n = length ( x ) sp = sqrt( ( ( m - 1 ) * sd ( y ) ^ 2 + ( n - 1 ) * sd ( x ) ^ 2 ) / ( m + n - 2 ) ) t = ( mean ( y ) - mean ( x ) ) / ( sp * sqrt ( 1 / m + 1 / n) ) return ( t ) } ======================================================== Retornando
t = -0.02242564
Em seguida o teste: ======================================================== alpha = 0.01 ; m = 50 ; n = 50 # sets alpha, m and n ( alpha is the stated significance level, m and n are the samples sizes ) N = 10000 # sets the number of simulations n.reject = 0 # counter of num. of rejections for ( i in 1 : N ) { x = rnorm ( m , mean = x , sd = x )
# simulates xs from population 1 y = rnorm ( n , mean = y , sd = y )
# simulates ys from population 2 t = tstatistic ( y , x ) # computes the t statistic if ( abs ( t ) > qt ( 1 - alpha / 2 , n + m - 2) ) n.reject = n.reject + 1
# reject if |t| exceeds critical pt } true.sig.level = n.reject/N
# est. is proportions of rejections ======================================================== Retornando
true.sig.level = 0.0049
Problema Conceitual
1) Como interpretar esse resultado?
Porém ainda há uma diferença entre o t calculado por essa fórmula e o t calculado com o comando t.stat (padrão do R)
================================================================ t = t.test ( y , x , mu = 0 , paired = TRUE , var.equal = TRUE , conf.level = 0.9999 ) t
Paired t-test
data: y and x t = 4.6437, df = 49, p-value = 2.594e-05 alternative hypothesis: true difference in means is not equal to 0 99.99 percent confidence interval: 0.003082235 0.067077765 sample estimates: mean of the differences 0.03508
================================================================
E finalmente? minha média da diferencia é conhecida e não é zero, assim utilizei o seguinte comando:
t = t.test ( y , x , mu = 0.87 , paired = TRUE , var.equal = TRUE , conf.level = 0.9999, alternative = "less? )
Paired t-test
data: y and x t = -110.5231, df = 49, p-value < 2.2e-16 alternative hypothesis: true difference in means is less than 0.87 99.99 percent confidence interval: -Inf 0.06545182 sample estimates: mean of the differences 0.03508
2) Problema de Comando? como fazer a simulação de Monte Carlo na situação acima?
* Obs.: aceito sugestões de leitura sobre o assunto e comando alternativos para comparar a médias
Muito obrigado e me desculpe pelo longo e-mail.
Thales
-- Marcos Vinícius Carneiro Vital Universidade Federal de Alagoas Instituto de Ciências Biológicas e da Saúde Setor de Biodiversidade e Ecologia

Thales, Considerar a normalidade (ou seja se a distribuição é gaussiana ou não¹) apenas das diferenças seria estudar um processo diferente. Um processo onde apenas a distribuição das médias (então que passaríamos a tratar como uma amostra de uma população de resultados desse processo que gera essas diferenças). O que pode ser ou não o caso do OP. Contudo, em geral, o teste t é um teste para verificar se uma medida de posição (média) de uma distribuição (assumida ser gaussiana) difere de outra outra (idem) e como hipótese nula assume-se que as duas amostras viriam da mesma distribuição e portanto a expectativa (diferença entre as duas amostras seria zero). A formulação do teste pareado é feito para aumentar o poder do teste frente ao conhecimento adicional que o mesmo conjunto de indivíduos está contido em ambas as amostras, note porém que ainda se usa um outro parâmetro (estimado da(s) amostra(s)) a variância (ou desvio padrão) nas fórmulas, mantendo a premissa que os dados viriam de uma distribuição gaussiana. Nesse caso a hipótese de a distribuição ser gaussiana é mantida para que o resultado do teste sobre a média possa ser analisado. HTH -- Cesar Rabak [1] Meu ouvido e olhos podem ser distraídos pela palavra "normalidade" que muitos sentidos diferentes. . . 2014-04-25 13:23 GMT-03:00 Marcos Vital <marcosvital@gmail.com>:
Olá, Thales
Bom, não estou respondendo a sua dúvida sobre Monte Carlo (não conheço bem o método), mas queria fazer uma observação sobre o pressuposto da normalidade.
Como o seu teste é pareado, o cálculo do t é feito sobre as diferenças, e não sobre os valores brutos. Então acredito que você deva testar a normalidade das diferenças entre as variáveis x e y.
Fiz o teste rapidamente com os dados que você incluiu no email, e o shapiro agora não rejeita a normalidade. Veja:
dif<-x-y
shapiro.test(dif)
Shapiro-Wilk normality test
data: dif W = 0.9716, p-value = 0.2683
Considere isso como possibilidade, então, pois é possível que você não precise sair do bom e velho teste t.
Abraços
Marcos
Em 25 de abril de 2014 12:00, <r-br-request@listas.c3sl.ufpr.br> escreveu:
Enviar submissões para a lista de discussão R-br para r-br@listas.c3sl.ufpr.br
Para se cadastrar ou descadastrar via WWW, visite o endereço https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br ou, via email, envie uma mensagem com a palavra 'help' no assunto ou corpo da mensagem para r-br-request@listas.c3sl.ufpr.br
Você poderá entrar em contato com a pessoa que gerencia a lista pelo endereço r-br-owner@listas.c3sl.ufpr.br
Quando responder, por favor edite sua linha Assunto assim ela será mais específica que "Re: Contents of R-br digest..."
Message: 2 Date: Fri, 25 Apr 2014 08:55:04 +0200 From: Tropidurus Torquatus <t.torquatus@gmail.com> To: r-br@listas.c3sl.ufpr.br Subject: [R-br] [OFF-Topic] Distribuição Normal e teste de t Message-ID: <E44FD9CC-9263-4D76-91B5-C084EDFB64C7@gmail.com> Content-Type: text/plain; charset=windows-1252
Caros R-users,
Coloquei como off-topic pois acredito que esta seja mais uma dúvida conceitual do que de R ppd.
Dado que tenho dois conjuntos de dados:
x <- c ( 13.772 , 10.119 , 11.224 , 21.999 , 17.181 , 27.477 , 21.693 , 26.706 , 14.576 , 19.689 , 12.494 , 19.511 , 16.785 , 16.551 , 20.780 , 0.000 , 25.867 , 28.223 , 26.059 , 21.668 , 18.209 , 20.186 , 28.320 , 26.946 , 16.218 , 16.814 , 16.859 , 0.000 , 0.000 , 3.986 , 1.625 , 17.286 , 28.149 , 19.404 , 21.669 , 22.058 , 14.947 , 14.512 , 21.177 , 29.997 , 20.958 , 15.123 , 28.932 , 23.807 , 30.589 , 10.208 , 20.076 , 18.897 , 14.666 , 13.955)
y <- c ( 13.902 , 10.102 , 11.301 , 22.081 , 17.234 , 27.540 , 21.741 , 26.677 , 14.621 , 19.766 , 12.547 , 19.622 , 16.857 , 16.628 , 20.787 , 0.000 , 25.943 , 28.313 , 26.166 , 21.724 , 18.255 , 20.307 , 28.387 , 27.079 , 16.202 , 16.857 , 16.875 , 0.000 , 0.000 , 3.951 , 1.681 , 17.353 , 28.273 , 19.422 , 21.724 , 22.164 , 14.902 , 14.458 , 21.174 , 30.024 , 20.949 , 15.101 , 28.926 , 23.850 , 30.597 , 10.147 , 20.035 , 18.873 , 14.691 , 13.892)
As duas amostras estão pareadas. As duas amostras falham para o teste de normalidade:
shapiro.test ( x )
Shapiro-Wilk normality test
data: testetcompounds$tR...tM.UV.ABC W = 0.9373, p-value = 0.01057
shapiro.test ( y )
Shapiro-Wilk normality test
data: testetcompounds$tR...tM.UV.ABC.Group10 W = 0.9372, p-value = 0.01043
No livro Bayesian Computation with R
Sugere que para distribuições não normais é necessário fazer o teste de Monte Carlo
Com a seguinte função ======================================================= tstatistic = function ( y , x ) { m = length ( y ) n = length ( x ) sp = sqrt( ( ( m - 1 ) * sd ( y ) ^ 2 + ( n - 1 ) * sd ( x ) ^ 2 ) / ( m + n - 2 ) ) t = ( mean ( y ) - mean ( x ) ) / ( sp * sqrt ( 1 / m + 1 / n) ) return ( t ) } ======================================================== Retornando
t = -0.02242564
Em seguida o teste: ======================================================== alpha = 0.01 ; m = 50 ; n = 50 # sets alpha, m and n ( alpha is the stated significance level, m and n are the samples sizes ) N = 10000 # sets the number of simulations n.reject = 0 # counter of num. of rejections for ( i in 1 : N ) { x = rnorm ( m , mean = x , sd = x )
# simulates xs from population 1 y = rnorm ( n , mean = y , sd = y )
# simulates ys from population 2 t = tstatistic ( y , x ) # computes the t statistic if ( abs ( t ) > qt ( 1 - alpha / 2 , n + m - 2) ) n.reject = n.reject + 1
# reject if |t| exceeds critical pt } true.sig.level = n.reject/N
# est. is proportions of rejections ======================================================== Retornando
true.sig.level = 0.0049
Problema Conceitual
1) Como interpretar esse resultado?
Porém ainda há uma diferença entre o t calculado por essa fórmula e o t calculado com o comando t.stat (padrão do R)
================================================================ t = t.test ( y , x , mu = 0 , paired = TRUE , var.equal = TRUE , conf.level = 0.9999 ) t
Paired t-test
data: y and x t = 4.6437, df = 49, p-value = 2.594e-05 alternative hypothesis: true difference in means is not equal to 0 99.99 percent confidence interval: 0.003082235 0.067077765 sample estimates: mean of the differences 0.03508
================================================================
E finalmente? minha média da diferencia é conhecida e não é zero, assim utilizei o seguinte comando:
t = t.test ( y , x , mu = 0.87 , paired = TRUE , var.equal = TRUE , conf.level = 0.9999, alternative = "less? )
Paired t-test
data: y and x t = -110.5231, df = 49, p-value < 2.2e-16 alternative hypothesis: true difference in means is less than 0.87 99.99 percent confidence interval: -Inf 0.06545182 sample estimates: mean of the differences 0.03508
2) Problema de Comando? como fazer a simulação de Monte Carlo na situação acima?
* Obs.: aceito sugestões de leitura sobre o assunto e comando alternativos para comparar a médias
Muito obrigado e me desculpe pelo longo e-mail.
Thales
-- Marcos Vinícius Carneiro Vital Universidade Federal de Alagoas Instituto de Ciências Biológicas e da Saúde Setor de Biodiversidade e Ecologia
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
participantes (2)
-
Cesar Rabak
-
Marcos Vital