[R] Population growthrate with Euler-Lotka

Simon Blomberg s.blomberg1 at uq.edu.au
Mon Jun 30 13:19:13 CEST 2014


There may be something wrong with your data: in all but one case you have lx=1 and mx=0. Uniroot may be having difficulty because of this.

Simon.

Sent from my iPhone

> On 30 Jun 2014, at 9:09 pm, "Simon Blomberg" <s.blomberg1 at uq.edu.au> wrote:
> 
> Hmm. Try setting extendInt="yes" in the call to uniroot. You should also look at the help page for uniroot. help(uniroot) May give you a clue. It's difficult for me to debug code on my iphone. Well, more difficult than usual.
> 
> Best,
> 
> Simon.
> 
> Sent from my iPhone
> 
> On 30 Jun 2014, at 8:53 pm, "Mark Christjani" <m_christjani at gmx.de<mailto:m_christjani at gmx.de>> wrote:
> 
> Thank you, Simon, for your input.
> 
> Data import works fine now, but the final equation still won`t work.
> 
> Console reads now:
> 
>> setwd("c:/Mark")
>> 
>> table <- read.table("r-TCO-Scene-Kontrolle.csv", header=TRUE, sep=";")
>> 
>> table
>    x  lx  mx
> 1   1 1.0 0.0
> 2   2 1.0 0.0
> 3   3 1.0 0.0
> 4   4 1.0 0.0
> 5   5 1.0 0.0
> 6   6 1.0 0.0
> 7   7 1.0 0.0
> 8   8 1.0 0.0
> 9   9 1.0 0.0
> 10 10 1.0 0.0
> 11 11 0.2 3.5
>> 
>> x <- c(table$x)
>> L <- c(table$lx)
>> m <- c(table$mx)
>> r.range<- c(0, 5)
>> 
>> eulerlotka <- function(r) sum(L * m * exp(-r * x)) - 1
>> res <- uniroot(f = eulerlotka, interval = r.range, tol = 1e-8)
> Error in uniroot(f = eulerlotka, interval = r.range, tol = 1e-08) :
>  f() values at end points not of opposite sign
>> 
>> res$root
> Error: object 'res' not found
> 
> Any idea on this "Error in uniroot(f = eulerlotka, interval = r.range, tol = 1e-08) :
>  f() values at end points not of opposite sign"-matter?
> 
> Kind regards,
> Mark
> 
> 
> 
> Gesendet: Montag, 30. Juni 2014 um 12:41 Uhr
> Von: "Simon Blomberg" <s.blomberg1 at uq.edu.au<mailto:s.blomberg1 at uq.edu.au>>
> An: "Mark Christjani" <m_christjani at gmx.de<mailto:m_christjani at gmx.de>>
> Cc: "r-help at r-project.org<mailto:r-help at r-project.org>" <r-help at r-project.org<mailto:r-help at r-project.org>>
> Betreff: Re: [R] Population growthrate with Euler-Lotka
> Your script is failing at the first hurdle because you data are not being imported properly. You should include
> 
> header=TRUE. sep=";"
> 
> In the call to read.table.
> 
> Cheers.
> 
> Simon.
> 
> Sent from my iPhone
> 
> Sent from my iPhone
>> On 30 Jun 2014, at 7:10 pm, "Mark Christjani" <m_christjani at gmx.de<mailto:m_christjani at gmx.de>> wrote:
>> 
>> 
>> Hi everybody,
>> 
>> I`m Mark and I do my PhD in biology. I try using R to calculate a population
>> growth rate of animals grown on different types of food. Our workgroup has a
>> R-skript to do so, but sadly nobody, who knows how this works. I`ve never
>> used R before, but got some stuff figured out myself. The skript goes:
>> 
>> setwd("c:/Mark")
>> table <- read.table("r-TCO-Scene-Kontrolle.csv")
>> table
>> x <- c(table$x)
>> L <- c(table$lx)
>> m <- c(table$mx)
>> r.range<- c(0, 5)
>> eulerlotka <- function(r) sum(L * m * exp(-r * x)) - 1
>> res <- uniroot(f = eulerlotka, interval = r.range, tol = 1e-8)
>> res$root
>> 
>> I understood that the first 3 lines are simply to load my data and show it
>> in the workspace console. The next 4 lines define variables of my .csv table
>> for R. Thus far, everything works fine. Now comes the Euler-Lotka equation,
>> but somehow, this does not seem to work out as supposed. I tried to find a
>> solution on the internet, but I think this formula is somewhat special so I
>> could not find a suitible solution for my special problem. The console says:
>> 
>> 
>>> setwd("c:/Mark")
>>> 
>>> table <- read.table("r-TCO-Scene-Kontrolle.csv")
>>> 
>>> table
>> V1
>> 1 x;lx;mx
>> 2 1;1;0
>> 3 2;1;0
>> 4 3;1;0
>> 5 4;1;0
>> 6 5;1;0
>> 7 6;1;0
>> 8 7;1;0
>> 9 8;1;0
>> 10 9;1;0
>> 11 10;1;0
>> 12 11;0.2;3.5
>>> 
>>> x <- c(table$x)
>>> L <- c(table$lx)
>>> m <- c(table$mx)
>>> r.range<- c(0, 5)
>>> 
>>> eulerlotka <- function(r) sum(L * m * exp(-r * x)) - 1
>>> res <- uniroot(f = eulerlotka, interval = r.range, tol = 1e-8)
>> Error in uniroot(f = eulerlotka, interval = r.range, tol = 1e-08) :
>> f() values at end points not of opposite sign
>>> 
>>> res$root
>> 
>> Does anybody have an idea how to get this running?
>> 
>> Thanks in advance
>> 
>> Kind regards
>> Mark
>> ______________________________________________
>> R-help at r-project.org<mailto: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.
> 
>    [[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.



More information about the R-help mailing list