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

Benilton Carvalho beniltoncarvalho em gmail.com
Sexta Abril 13 18:38:30 BRT 2012


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.


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