[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