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

Bernardo Rangel Tura tura em centroin.com.br
Quinta Abril 12 06:28:57 BRT 2012


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


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