
Caros, quero fazer o seguinte cálculo: pvalue = 1 - pchisq(sum(X2, na.rm = TRUE), dfreedom(X2)) #dfreedom( ) é uma função escrita por mim mas usando os meus dados isso dá sempre 0 (zero), porque a parte do pchisq( ) é um valor muito próximo de 1, então o R arredonda para 1, ficando 1 - 1 = 0. Mesmo que o verdadeiro valor desse cálculo seja algo muitíssimo pequeno, como zero seguido de vários zeros e eventualmente algum outro número, eu preciso saber qual é. Como fazer isso? Desde já agradeço a quem puder ajudar. Vitor Aguiar

Vitor, Tentou usar format, com o argumento nsmall? S From: Vitor Aguiar Sent: Wednesday, April 11, 2012 7:26 PM To: r-br@listas.c3sl.ufpr.br Subject: [R-br] arredondamento de números no R Caros, quero fazer o seguinte cálculo: pvalue = 1 - pchisq(sum(X2, na.rm = TRUE), dfreedom(X2)) #dfreedom( ) é uma função escrita por mim mas usando os meus dados isso dá sempre 0 (zero), porque a parte do pchisq( ) é um valor muito próximo de 1, então o R arredonda para 1, ficando 1 - 1 = 0. Mesmo que o verdadeiro valor desse cálculo seja algo muitíssimo pequeno, como zero seguido de vários zeros e eventualmente algum outro número, eu preciso saber qual é. Como fazer isso? Desde já agradeço a quem puder ajudar. Vitor Aguiar -------------------------------------------------------------------------------- _______________________________________________ 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.

Tente: options(digits=4) ou round(x, 4) Edson Lira Estatístico Manaus-Amazonas ________________________________ De: Sandro Sperandei <ssperandei@hotmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Quarta-feira, 11 de Abril de 2012 18:36 Assunto: Re: [R-br] arredondamento de números no R Vitor, Tentou usar format, com o argumento nsmall? S From: Vitor Aguiar Sent: Wednesday, April 11, 2012 7:26 PM To: r-br@listas.c3sl.ufpr.br Subject: [R-br] arredondamento de números no R Caros, quero fazer o seguinte cálculo: pvalue = 1 - pchisq(sum(X2, na.rm = TRUE), dfreedom(X2)) #dfreedom( ) é uma função escrita por mim mas usando os meus dados isso dá sempre 0 (zero), porque a parte do pchisq( ) é um valor muito próximo de 1, então o R arredonda para 1, ficando 1 - 1 = 0. Mesmo que o verdadeiro valor desse cálculo seja algo muitíssimo pequeno, como zero seguido de vários zeros e eventualmente algum outro número, eu preciso saber qual é. Como fazer isso? Desde já agradeço a quem puder ajudar. Vitor Aguiar ________________________________ _______________________________________________ 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. _______________________________________________ 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.

trabalhe na escala logaritmica... pchisq(1000, 1) vs pchisq(1000, 1, log=TRUE) b 2012/4/11 Vitor Aguiar <vitor.aguiar@me.com>:
Caros,
quero fazer o seguinte cálculo:
pvalue = 1 - pchisq(sum(X2, na.rm = TRUE), dfreedom(X2)) #dfreedom( ) é uma função escrita por mim
mas usando os meus dados isso dá sempre 0 (zero), porque a parte do pchisq( ) é um valor muito próximo de 1, então o R arredonda para 1, ficando 1 - 1 = 0. Mesmo que o verdadeiro valor desse cálculo seja algo muitíssimo pequeno, como zero seguido de vários zeros e eventualmente algum outro número, eu preciso saber qual é.
Como fazer isso?
Desde já agradeço a quem puder ajudar.
Vitor Aguiar
_______________________________________________ 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.

On 04/11/2012 07:26 PM, Vitor Aguiar wrote:
Caros,
quero fazer o seguinte cálculo:
pvalue = 1 - pchisq(sum(X2, na.rm = TRUE), dfreedom(X2)) #dfreedom( ) é uma função escrita por mim
mas usando os meus dados isso dá sempre 0 (zero), porque a parte do pchisq( ) é um valor muito próximo de 1, então o R arredonda para 1, ficando 1 - 1 = 0. Mesmo que o verdadeiro valor desse cálculo seja algo muitíssimo pequeno, como zero seguido de vários zeros e eventualmente algum outro número, eu preciso saber qual é.
Como fazer isso?
Desde já agradeço a quem puder ajudar.
Vitor Aguiar
Vitor, Primeiro você ha de convir que 1-número muito pequeno = 1 Mas acho que no seu caso é mais fácil de resolver Em vez de pvalue = 1 - pchisq(sum(X2, na.rm = TRUE), dfreedom(X2)) use pvalue = 2 * pchisq(sum(X2, na.rm = TRUE), dfreedom(X2),lower.tail=F) No primeiro você calcula 1 - P[X <= x] enquanto no segundo 2 * P[X > x]. Desta forma o número muito pequeno deve aparecer, se persistir o problema (o que eu duvido) use a opção "log.p=T", se ainda assim não resolver (o que acredito ser inverossímil) manda um exemplo para a lista []s Tura

Sandro, usando format com nsmall = 20, eu tenho um resultado de 1.000000000000000000. Mas eu tenho certeza que esse número é na realidade alguma coisa menor que 1. Eu não sei se isso ocorre pelo modo como o R mostra o número (com 22 casas) ou se é um problema em como os valores estão guardados no R. Eu estou usando os valores como "doubles" mas ainda assim parece não ser suficiente. Benílton, se eu colocar o log=TRUE o resultado do cálculo passa a ser 0 (zero), ao invés de 1. Assim, também não consigo nenhuma medida do que quero medir. Tura, usando
pvalue = 2 * pchisq(sum(X2, na.rm = TRUE), dfreedom(X2),lower.tail=F)
o resultado ainda é 0 (zero). E se eu usar o format(x, nsmall = 20) nisso eu ainda tenho 0.00000000000000000. A propósito, há alguma forma de guardar números no R com mais bits do que "as doubles"? Obrigado a todos, Vitor On Apr 12, 2012, at 2:28 AM, Bernardo Rangel Tura wrote:
On 04/11/2012 07:26 PM, Vitor Aguiar wrote:
Caros,
quero fazer o seguinte cálculo:
pvalue = 1 - pchisq(sum(X2, na.rm = TRUE), dfreedom(X2)) #dfreedom( ) é uma função escrita por mim
mas usando os meus dados isso dá sempre 0 (zero), porque a parte do pchisq( ) é um valor muito próximo de 1, então o R arredonda para 1, ficando 1 - 1 = 0. Mesmo que o verdadeiro valor desse cálculo seja algo muitíssimo pequeno, como zero seguido de vários zeros e eventualmente algum outro número, eu preciso saber qual é.
Como fazer isso?
Desde já agradeço a quem puder ajudar.
Vitor Aguiar
Vitor,
Primeiro você ha de convir que 1-número muito pequeno = 1 Mas acho que no seu caso é mais fácil de resolver Em vez de
pvalue = 1 - pchisq(sum(X2, na.rm = TRUE), dfreedom(X2))
use
pvalue = 2 * pchisq(sum(X2, na.rm = TRUE), dfreedom(X2),lower.tail=F)
No primeiro você calcula 1 - P[X <= x] enquanto no segundo 2 * P[X > x]. Desta forma o número muito pequeno deve aparecer, se persistir o problema (o que eu duvido) use a opção "log.p=T", se ainda assim não resolver (o que acredito ser inverossímil) manda um exemplo para a lista
[]s Tura _______________________________________________ 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.

exemplo reproduzivel......................................... bastaria vc dizer quais sao os valores de sum(X2) e os graus de liberdade... b 2012/4/13 Vitor Aguiar <vitor.aguiar@me.com>:
Sandro,
usando format com nsmall = 20, eu tenho um resultado de 1.000000000000000000. Mas eu tenho certeza que esse número é na realidade alguma coisa menor que 1. Eu não sei se isso ocorre pelo modo como o R mostra o número (com 22 casas) ou se é um problema em como os valores estão guardados no R. Eu estou usando os valores como "doubles" mas ainda assim parece não ser suficiente.
Benílton,
se eu colocar o log=TRUE o resultado do cálculo passa a ser 0 (zero), ao invés de 1. Assim, também não consigo nenhuma medida do que quero medir.
Tura, usando
pvalue = 2 * pchisq(sum(X2, na.rm = TRUE), dfreedom(X2),lower.tail=F)
o resultado ainda é 0 (zero). E se eu usar o format(x, nsmall = 20) nisso eu ainda tenho 0.00000000000000000.
A propósito, há alguma forma de guardar números no R com mais bits do que "as doubles"?
Obrigado a todos, Vitor
On Apr 12, 2012, at 2:28 AM, Bernardo Rangel Tura wrote:
On 04/11/2012 07:26 PM, Vitor Aguiar wrote:
Caros,
quero fazer o seguinte cálculo:
pvalue = 1 - pchisq(sum(X2, na.rm = TRUE), dfreedom(X2)) #dfreedom( ) é uma função escrita por mim
mas usando os meus dados isso dá sempre 0 (zero), porque a parte do pchisq( ) é um valor muito próximo de 1, então o R arredonda para 1, ficando 1 - 1 = 0. Mesmo que o verdadeiro valor desse cálculo seja algo muitíssimo pequeno, como zero seguido de vários zeros e eventualmente algum outro número, eu preciso saber qual é.
Como fazer isso?
Desde já agradeço a quem puder ajudar.
Vitor Aguiar
Vitor,
Primeiro você ha de convir que 1-número muito pequeno = 1 Mas acho que no seu caso é mais fácil de resolver Em vez de
pvalue = 1 - pchisq(sum(X2, na.rm = TRUE), dfreedom(X2))
use
pvalue = 2 * pchisq(sum(X2, na.rm = TRUE), dfreedom(X2),lower.tail=F)
No primeiro você calcula 1 - P[X <= x] enquanto no segundo 2 * P[X > x]. Desta forma o número muito pequeno deve aparecer, se persistir o problema (o que eu duvido) use a opção "log.p=T", se ainda assim não resolver (o que acredito ser inverossímil) manda um exemplo para a lista
[]s Tura _______________________________________________ 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.
_______________________________________________ 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.

esses valores são altos. É um banco de dados com muitas variáveis. Veja: [1] "D3S1358" Chi square 481252.8 degrees of freedom 276 p-value 1 [1] "D5S818" Chi square 7583.649 degrees of freedom 105 p-value 1 [1] "D7S820" Chi square 72249.05 degrees of freedom 105 p-value 1 [1] "D8S1179" Chi square 220352.7 degrees of freedom 190 p-value 1 [1] "D13S317" Chi square 622.7457 degrees of freedom 78 p-value 1 [1] "D16S539" Chi square 283297.9 degrees of freedom 153 p-value 1 [1] "D18S51" Chi square 11598.11 degrees of freedom 820 p-value 1 [1] "D21S11" Chi square 149753.1 degrees of freedom 561 p-value 1 [1] "CSF1PO" Chi square 2452.957 degrees of freedom 91 p-value 1 [1] "FGA" Chi square 416837 degrees of freedom 1953 p-value 1 [1] "TH01" Chi square 251881.9 degrees of freedom 153 p-value 1 [1] "TPOX" Chi square 412930.9 degrees of freedom 136 p-value 1 [1] "vWA" Chi square 12138.88 degrees of freedom 171 p-value 1 [1] "PentaD" Chi square 28528.19 degrees of freedom 351 p-value 1 [1] "PentaE" Chi square 129719.1 degrees of freedom 465 p-value 1 On Apr 13, 2012, at 2:38 PM, Benilton Carvalho wrote:
exemplo reproduzivel.........................................
bastaria vc dizer quais sao os valores de sum(X2) e os graus de liberdade...
b
2012/4/13 Vitor Aguiar <vitor.aguiar@me.com>:
Sandro,
usando format com nsmall = 20, eu tenho um resultado de 1.000000000000000000. Mas eu tenho certeza que esse número é na realidade alguma coisa menor que 1. Eu não sei se isso ocorre pelo modo como o R mostra o número (com 22 casas) ou se é um problema em como os valores estão guardados no R. Eu estou usando os valores como "doubles" mas ainda assim parece não ser suficiente.
Benílton,
se eu colocar o log=TRUE o resultado do cálculo passa a ser 0 (zero), ao invés de 1. Assim, também não consigo nenhuma medida do que quero medir.
Tura, usando
pvalue = 2 * pchisq(sum(X2, na.rm = TRUE), dfreedom(X2),lower.tail=F)
o resultado ainda é 0 (zero). E se eu usar o format(x, nsmall = 20) nisso eu ainda tenho 0.00000000000000000.
A propósito, há alguma forma de guardar números no R com mais bits do que "as doubles"?
Obrigado a todos, Vitor
On Apr 12, 2012, at 2:28 AM, Bernardo Rangel Tura wrote:
On 04/11/2012 07:26 PM, Vitor Aguiar wrote:
Caros,
quero fazer o seguinte cálculo:
pvalue = 1 - pchisq(sum(X2, na.rm = TRUE), dfreedom(X2)) #dfreedom( ) é uma função escrita por mim
mas usando os meus dados isso dá sempre 0 (zero), porque a parte do pchisq( ) é um valor muito próximo de 1, então o R arredonda para 1, ficando 1 - 1 = 0. Mesmo que o verdadeiro valor desse cálculo seja algo muitíssimo pequeno, como zero seguido de vários zeros e eventualmente algum outro número, eu preciso saber qual é.
Como fazer isso?
Desde já agradeço a quem puder ajudar.
Vitor Aguiar
Vitor,
Primeiro você ha de convir que 1-número muito pequeno = 1 Mas acho que no seu caso é mais fácil de resolver Em vez de
pvalue = 1 - pchisq(sum(X2, na.rm = TRUE), dfreedom(X2))
use
pvalue = 2 * pchisq(sum(X2, na.rm = TRUE), dfreedom(X2),lower.tail=F)
No primeiro você calcula 1 - P[X <= x] enquanto no segundo 2 * P[X > x]. Desta forma o número muito pequeno deve aparecer, se persistir o problema (o que eu duvido) use a opção "log.p=T", se ainda assim não resolver (o que acredito ser inverossímil) manda um exemplo para a lista
[]s Tura _______________________________________________ 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.
_______________________________________________ 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.
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.

só pra explicar, o "Chi square" é o sum(X2). On Apr 13, 2012, at 2:46 PM, Vitor Aguiar wrote:
esses valores são altos. É um banco de dados com muitas variáveis.
Veja:
[1] "D3S1358" Chi square 481252.8 degrees of freedom 276 p-value 1 [1] "D5S818" Chi square 7583.649 degrees of freedom 105 p-value 1 [1] "D7S820" Chi square 72249.05 degrees of freedom 105 p-value 1 [1] "D8S1179" Chi square 220352.7 degrees of freedom 190 p-value 1 [1] "D13S317" Chi square 622.7457 degrees of freedom 78 p-value 1 [1] "D16S539" Chi square 283297.9 degrees of freedom 153 p-value 1 [1] "D18S51" Chi square 11598.11 degrees of freedom 820 p-value 1 [1] "D21S11" Chi square 149753.1 degrees of freedom 561 p-value 1 [1] "CSF1PO" Chi square 2452.957 degrees of freedom 91 p-value 1 [1] "FGA" Chi square 416837 degrees of freedom 1953 p-value 1 [1] "TH01" Chi square 251881.9 degrees of freedom 153 p-value 1 [1] "TPOX" Chi square 412930.9 degrees of freedom 136 p-value 1 [1] "vWA" Chi square 12138.88 degrees of freedom 171 p-value 1 [1] "PentaD" Chi square 28528.19 degrees of freedom 351 p-value 1 [1] "PentaE" Chi square 129719.1 degrees of freedom 465 p-value 1
On Apr 13, 2012, at 2:38 PM, Benilton Carvalho wrote:
exemplo reproduzivel.........................................
bastaria vc dizer quais sao os valores de sum(X2) e os graus de liberdade...
b
2012/4/13 Vitor Aguiar <vitor.aguiar@me.com>:
Sandro,
usando format com nsmall = 20, eu tenho um resultado de 1.000000000000000000. Mas eu tenho certeza que esse número é na realidade alguma coisa menor que 1. Eu não sei se isso ocorre pelo modo como o R mostra o número (com 22 casas) ou se é um problema em como os valores estão guardados no R. Eu estou usando os valores como "doubles" mas ainda assim parece não ser suficiente.
Benílton,
se eu colocar o log=TRUE o resultado do cálculo passa a ser 0 (zero), ao invés de 1. Assim, também não consigo nenhuma medida do que quero medir.
Tura, usando
pvalue = 2 * pchisq(sum(X2, na.rm = TRUE), dfreedom(X2),lower.tail=F)
o resultado ainda é 0 (zero). E se eu usar o format(x, nsmall = 20) nisso eu ainda tenho 0.00000000000000000.
A propósito, há alguma forma de guardar números no R com mais bits do que "as doubles"?
Obrigado a todos, Vitor
On Apr 12, 2012, at 2:28 AM, Bernardo Rangel Tura wrote:
On 04/11/2012 07:26 PM, Vitor Aguiar wrote:
Caros,
quero fazer o seguinte cálculo:
pvalue = 1 - pchisq(sum(X2, na.rm = TRUE), dfreedom(X2)) #dfreedom( ) é uma função escrita por mim
mas usando os meus dados isso dá sempre 0 (zero), porque a parte do pchisq( ) é um valor muito próximo de 1, então o R arredonda para 1, ficando 1 - 1 = 0. Mesmo que o verdadeiro valor desse cálculo seja algo muitíssimo pequeno, como zero seguido de vários zeros e eventualmente algum outro número, eu preciso saber qual é.
Como fazer isso?
Desde já agradeço a quem puder ajudar.
Vitor Aguiar
Vitor,
Primeiro você ha de convir que 1-número muito pequeno = 1 Mas acho que no seu caso é mais fácil de resolver Em vez de
pvalue = 1 - pchisq(sum(X2, na.rm = TRUE), dfreedom(X2))
use
pvalue = 2 * pchisq(sum(X2, na.rm = TRUE), dfreedom(X2),lower.tail=F)
No primeiro você calcula 1 - P[X <= x] enquanto no segundo 2 * P[X > x]. Desta forma o número muito pequeno deve aparecer, se persistir o problema (o que eu duvido) use a opção "log.p=T", se ainda assim não resolver (o que acredito ser inverossímil) manda um exemplo para a lista
[]s Tura _______________________________________________ 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.
_______________________________________________ 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.
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.

Eu vou apenas usar o primeiro marcador como exemplo.... (isso representa o "Minimo" de Codigo Minimo Reproduzivel). Vou tbm assumir o usual de teste qui-quadrado, no qual usa-se pvalor = P(Chi2 > valorObservado) sx2 = 481252.8 dfreedom = 276 pvalor1 = pchisq(sx2, df=dfreedom, lower.tail=FALSE) ## vc vai obter zero pvalor2 = pchisq(sx2, df=dfreedom, lower.tail=FALSE, log.p=TRUE) ## vc vai obter -239469.2 em outras palavras, se zero nao te satisfaz como pvalor, entao e^{-239469.2} (exponencial, base neperiana) eh um valor "mais preciso". b 2012/4/13 Vitor Aguiar <vitor.aguiar@me.com>:
só pra explicar, o "Chi square" é o sum(X2).
On Apr 13, 2012, at 2:46 PM, Vitor Aguiar wrote:
esses valores são altos. É um banco de dados com muitas variáveis.
Veja:
[1] "D3S1358" Chi square 481252.8 degrees of freedom 276 p-value 1 [1] "D5S818" Chi square 7583.649 degrees of freedom 105 p-value 1 [1] "D7S820" Chi square 72249.05 degrees of freedom 105 p-value 1 [1] "D8S1179" Chi square 220352.7 degrees of freedom 190 p-value 1 [1] "D13S317" Chi square 622.7457 degrees of freedom 78 p-value 1 [1] "D16S539" Chi square 283297.9 degrees of freedom 153 p-value 1 [1] "D18S51" Chi square 11598.11 degrees of freedom 820 p-value 1 [1] "D21S11" Chi square 149753.1 degrees of freedom 561 p-value 1 [1] "CSF1PO" Chi square 2452.957 degrees of freedom 91 p-value 1 [1] "FGA" Chi square 416837 degrees of freedom 1953 p-value 1 [1] "TH01" Chi square 251881.9 degrees of freedom 153 p-value 1 [1] "TPOX" Chi square 412930.9 degrees of freedom 136 p-value 1 [1] "vWA" Chi square 12138.88 degrees of freedom 171 p-value 1 [1] "PentaD" Chi square 28528.19 degrees of freedom 351 p-value 1 [1] "PentaE" Chi square 129719.1 degrees of freedom 465 p-value 1
On Apr 13, 2012, at 2:38 PM, Benilton Carvalho wrote:
exemplo reproduzivel.........................................
bastaria vc dizer quais sao os valores de sum(X2) e os graus de liberdade...
b
2012/4/13 Vitor Aguiar <vitor.aguiar@me.com>:
Sandro,
usando format com nsmall = 20, eu tenho um resultado de 1.000000000000000000.
Mas eu tenho certeza que esse número é na realidade alguma coisa menor que 1.
Eu não sei se isso ocorre pelo modo como o R mostra o número (com 22 casas) ou se é um problema em como os valores estão guardados no R. Eu estou usando os valores como "doubles" mas ainda assim parece não ser suficiente.
Benílton,
se eu colocar o log=TRUE o resultado do cálculo passa a ser 0 (zero), ao invés de 1. Assim, também não consigo nenhuma medida do que quero medir.
Tura,
usando
pvalue = 2 * pchisq(sum(X2, na.rm = TRUE), dfreedom(X2),lower.tail=F)
o resultado ainda é 0 (zero). E se eu usar o format(x, nsmall = 20) nisso eu ainda tenho 0.00000000000000000.
A propósito, há alguma forma de guardar números no R com mais bits do que "as doubles"?
Obrigado a todos,
Vitor
On Apr 12, 2012, at 2:28 AM, Bernardo Rangel Tura wrote:
On 04/11/2012 07:26 PM, Vitor Aguiar wrote:
Caros,
quero fazer o seguinte cálculo:
pvalue = 1 - pchisq(sum(X2, na.rm = TRUE), dfreedom(X2)) #dfreedom( ) é
uma função escrita por mim
mas usando os meus dados isso dá sempre 0 (zero), porque a parte do
pchisq( ) é um valor muito próximo de 1, então o R arredonda para 1,
ficando 1 - 1 = 0.
Mesmo que o verdadeiro valor desse cálculo seja algo muitíssimo pequeno,
como zero seguido de vários zeros e eventualmente algum outro número, eu
preciso saber qual é.
Como fazer isso?
Desde já agradeço a quem puder ajudar.
Vitor Aguiar
Vitor,
Primeiro você ha de convir que 1-número muito pequeno = 1
Mas acho que no seu caso é mais fácil de resolver
Em vez de
pvalue = 1 - pchisq(sum(X2, na.rm = TRUE), dfreedom(X2))
use
pvalue = 2 * pchisq(sum(X2, na.rm = TRUE), dfreedom(X2),lower.tail=F)
No primeiro você calcula 1 - P[X <= x] enquanto no segundo 2 * P[X > x].
Desta forma o número muito pequeno deve aparecer, se persistir o problema (o que eu duvido) use a opção "log.p=T", se ainda assim não resolver (o que acredito ser inverossímil) manda um exemplo para a lista
[]s
Tura
_______________________________________________
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.
_______________________________________________
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.
_______________________________________________ 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.
_______________________________________________ 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.

Ótimo, mas uma vez sem palavras Benilton. Obrigado, Vitor On Apr 13, 2012, at 3:12 PM, Benilton Carvalho wrote:
Eu vou apenas usar o primeiro marcador como exemplo.... (isso representa o "Minimo" de Codigo Minimo Reproduzivel). Vou tbm assumir o usual de teste qui-quadrado, no qual usa-se pvalor = P(Chi2 > valorObservado)
sx2 = 481252.8 dfreedom = 276 pvalor1 = pchisq(sx2, df=dfreedom, lower.tail=FALSE) ## vc vai obter zero pvalor2 = pchisq(sx2, df=dfreedom, lower.tail=FALSE, log.p=TRUE) ## vc vai obter -239469.2
em outras palavras, se zero nao te satisfaz como pvalor, entao e^{-239469.2} (exponencial, base neperiana) eh um valor "mais preciso".
b
2012/4/13 Vitor Aguiar <vitor.aguiar@me.com>:
só pra explicar, o "Chi square" é o sum(X2).
On Apr 13, 2012, at 2:46 PM, Vitor Aguiar wrote:
esses valores são altos. É um banco de dados com muitas variáveis.
Veja:
[1] "D3S1358" Chi square 481252.8 degrees of freedom 276 p-value 1 [1] "D5S818" Chi square 7583.649 degrees of freedom 105 p-value 1 [1] "D7S820" Chi square 72249.05 degrees of freedom 105 p-value 1 [1] "D8S1179" Chi square 220352.7 degrees of freedom 190 p-value 1 [1] "D13S317" Chi square 622.7457 degrees of freedom 78 p-value 1 [1] "D16S539" Chi square 283297.9 degrees of freedom 153 p-value 1 [1] "D18S51" Chi square 11598.11 degrees of freedom 820 p-value 1 [1] "D21S11" Chi square 149753.1 degrees of freedom 561 p-value 1 [1] "CSF1PO" Chi square 2452.957 degrees of freedom 91 p-value 1 [1] "FGA" Chi square 416837 degrees of freedom 1953 p-value 1 [1] "TH01" Chi square 251881.9 degrees of freedom 153 p-value 1 [1] "TPOX" Chi square 412930.9 degrees of freedom 136 p-value 1 [1] "vWA" Chi square 12138.88 degrees of freedom 171 p-value 1 [1] "PentaD" Chi square 28528.19 degrees of freedom 351 p-value 1 [1] "PentaE" Chi square 129719.1 degrees of freedom 465 p-value 1
On Apr 13, 2012, at 2:38 PM, Benilton Carvalho wrote:
exemplo reproduzivel.........................................
bastaria vc dizer quais sao os valores de sum(X2) e os graus de liberdade...
b
2012/4/13 Vitor Aguiar <vitor.aguiar@me.com>:
Sandro,
usando format com nsmall = 20, eu tenho um resultado de 1.000000000000000000.
Mas eu tenho certeza que esse número é na realidade alguma coisa menor que 1.
Eu não sei se isso ocorre pelo modo como o R mostra o número (com 22 casas) ou se é um problema em como os valores estão guardados no R. Eu estou usando os valores como "doubles" mas ainda assim parece não ser suficiente.
Benílton,
se eu colocar o log=TRUE o resultado do cálculo passa a ser 0 (zero), ao invés de 1. Assim, também não consigo nenhuma medida do que quero medir.
Tura,
usando
pvalue = 2 * pchisq(sum(X2, na.rm = TRUE), dfreedom(X2),lower.tail=F)
o resultado ainda é 0 (zero). E se eu usar o format(x, nsmall = 20) nisso eu ainda tenho 0.00000000000000000.
A propósito, há alguma forma de guardar números no R com mais bits do que "as doubles"?
Obrigado a todos,
Vitor
On Apr 12, 2012, at 2:28 AM, Bernardo Rangel Tura wrote:
On 04/11/2012 07:26 PM, Vitor Aguiar wrote:
Caros,
quero fazer o seguinte cálculo:
pvalue = 1 - pchisq(sum(X2, na.rm = TRUE), dfreedom(X2)) #dfreedom( ) é
uma função escrita por mim
mas usando os meus dados isso dá sempre 0 (zero), porque a parte do
pchisq( ) é um valor muito próximo de 1, então o R arredonda para 1,
ficando 1 - 1 = 0.
Mesmo que o verdadeiro valor desse cálculo seja algo muitíssimo pequeno,
como zero seguido de vários zeros e eventualmente algum outro número, eu
preciso saber qual é.
Como fazer isso?
Desde já agradeço a quem puder ajudar.
Vitor Aguiar
Vitor,
Primeiro você ha de convir que 1-número muito pequeno = 1
Mas acho que no seu caso é mais fácil de resolver
Em vez de
pvalue = 1 - pchisq(sum(X2, na.rm = TRUE), dfreedom(X2))
use
pvalue = 2 * pchisq(sum(X2, na.rm = TRUE), dfreedom(X2),lower.tail=F)
No primeiro você calcula 1 - P[X <= x] enquanto no segundo 2 * P[X > x].
Desta forma o número muito pequeno deve aparecer, se persistir o problema (o que eu duvido) use a opção "log.p=T", se ainda assim não resolver (o que acredito ser inverossímil) manda um exemplo para a lista
[]s
Tura
_______________________________________________
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.
_______________________________________________
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.
_______________________________________________ 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.
_______________________________________________ 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.
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 (5)
-
Benilton Carvalho
-
Bernardo Rangel Tura
-
Edson Lira
-
Sandro Sperandei
-
Vitor Aguiar