[R] Computational problems in R

Duncan Murdoch murdoch at stats.uwo.ca
Sat Oct 25 12:35:57 CEST 2008


On 24/10/2008 9:50 PM, Steven McKinney wrote:
> I suspect there's a deeper issue here.
> sum(exp(yi)) when large yi occur is
> problematic.  exp(yi) for yi>710 is
> just a huge number, and summing additional
> values only makes the overall sum larger as all
> components of the summation are positive.
> There's no way around that.

Sure there is, and you quoted it below.  Work on a log scale.  The log 
of exp(yi) is yi, and it sounds as though the yi values are manageable.

You might end up knowing that the log of the final answer is 20000 and 
not be able to evaluate exp(20000) in R, but you still know that the 
answer is exp(20000).

Duncan Murdoch
> 
> You could try this with Robin Hankins'
> package "brobdingnag" which can handle
> bunches of bizarrely large numbers.
> 
> What kind of process are you studying?
> What kind of process generates values
> such as exp(8/0.01) when other values
> are much smaller?  Are these outliers
> in an otherwise well-behaved
> data set?  Perhaps then they need
> to be set aside and investigated
> separately, etc.
> 
> 
> Steven McKinney
> 
> Statistician
> Molecular Oncology and Breast Cancer Program
> British Columbia Cancer Research Centre
> 
> email: smckinney +at+ bccrc +dot+ ca
> 
> tel: 604-675-8000 x7561
> 
> BCCRC
> Molecular Oncology
> 675 West 10th Ave, Floor 4
> Vancouver B.C. 
> V5Z 1L3
> Canada
> 
> 
> 
> 
> -----Original Message-----
> From: r-help-bounces at r-project.org on behalf of Duncan Murdoch
> Sent: Fri 10/24/2008 4:04 PM
> To: A.Noufaily
> Cc: r-help at r-project.org
> Subject: Re: [R] Computational problems in R
>  
> On 24/10/2008 12:42 PM, A.Noufaily wrote:
>> Dear all,
>>
>> I would be grateful if anyone can help me with the following:
>>
>> My aim is to compute explicitely the sum S=A+B where A=sum(exp(c_i/d)),
>> i=1,...,n;
>> B, c_i, and d are real numbers with -Inf<B,c_i<+Inf; and d>0.
>> The problem is that when c_i/d >710 (for some i) R is setting
>> exp(c_i/d) to be equal to +Inf and hence the whole summation S.
>> So in simple cases where for example c_i=8 (for some i), and d=0.01 the
>> whole summation is turning out to be infinite.
>> Is there a way to get round that in R?
>> Can anyone suggest any computational trick to calculate S when c_i/d>710
>> (for some i)?
> 
> Work on a log scale.  Use the identity that
> 
> A+B = A*(1 + B/A)
>      = exp(log(A) + log(1 + B/A))
> 
> (where you chose A to be the biggest term in the sum).
> 
> Duncan Murdoch
> 
>> Any suggestions would be much appreciated.
>>
>> Regards,
>>
>> Amy
>>
>>
>>
>>
>>
>> ---------------------------------
>> The Open University is incorporated by Royal Charter (RC 000391), an exempt charity in England & Wales and a charity registered in Scotland (SC 038302).
>>
>> 	[[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list