[R-br] arredondamento de números no R

Benilton Carvalho beniltoncarvalho em gmail.com
Sexta Abril 13 19:12:13 BRT 2012


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 em 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 em 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 em 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 em 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 em 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 em 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.


Mais detalhes sobre a lista de discussão R-br