[FLR-list] FLCohort
Ernesto Jardim
ernesto.jardim at gmail.com
Tue Oct 18 13:10:39 CEST 2011
On Tue, Oct 18, 2011 at 1:03 PM, Laurie <lauriekell at googlemail.com> wrote:
> **
> On 10/18/2011 12:50 PM, ernesto.jardim at jrc.ec.europa.eu wrote:
>
> On 10/18/2011 12:02 PM, Laurie wrote:
>
> On 10/18/2011 11:41 AM, ernesto.jardim at jrc.ec.europa.eu wrote:
>
> On 10/18/2011 11:26 AM, Laurie wrote:
>
> I am working on tagging models, where tags are released for a number of
> years and then recaptured in subsequent years. This allows M & Z to be
> estimated along a cohort.
>
> The data are in the form of number of fish tagged and recovered each year
> of a cohort. This means that you can´t use FLCohort which has age & cohort
> as dims 1&2.
>
> However, if you use the 1st dim for cohort then you can model this with an
> FLQuant, i.e.
>
> library(plyr)
>
> setGeneric("I", function(object,...)
> standardGeneric("I"))
> setGeneric('O', function(object, ...)
> standardGeneric("O"))
>
> setMethod('I', signature(object='FLQuant'),
> function(object,...){
> dmns <-dimnames(object)
> dmns[[1]]
> <-ac((dims(object)$minyear-dims(object)$max):(dims(object)$maxyear-
> dims(object)$min))
> names(dmns)[1]<-"quant"
> flc <-FLQuant(NA,dimnames=dmns)
>
> t. <-as.data.frame(object)
> t.$cohort <-t.$year-t.$age
> flc[]
> <-daply(t.,c("cohort","year","unit","season","area","iter"),function(x)
> sum(x$data))
>
> return(flc)})
>
> setMethod('O', signature(object='FLQuant'),
> function(object,...){
> dmns <-dimnames(object)
> dmns[[1]]
> <-ac((dims(object)$maxyear-dims(object)$max):(dims(object)$minyear-dims(object)$min))
> names(dmns)[1]<-"age"
> flc <-FLQuant(NA,dimnames=dmns)
>
> t. <-as.data.frame(object)
> t.$age <-t.$year-t.$quant
> t. <-t.[!is.na(t.$data),]
> flc[]
> <-daply(t.,c("age","year","unit","season","area","iter"),function(x)
> sum(x$data))
>
> return(flc)})
>
> data(ple4)
>
> m1=I(m(ple4))
> m2=O(m1)
>
> It is probably best to derive a new class for this object just to break
> VPAs etc. But what to call it? Also how does it relate to FLCohort.
> Laurie
>
>
> You may change the age in FLCohort
>
> library(FLCore)
> data(ple4)
> flc <- FLCohort(catch.n(ple4))
> quant(flc) <- "year"
>
> why not using year in the first dimension ? it should work out of the box.
>
> EJ
>
>
> But you don´t get what you want.
>
>
>
> I(m(ple4))[1:10,1:10]An object of class "FLQuant"
> , , unit = unique, season = all, area = unique
>
> year
> quant 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966
> 1947 0.1 NA NA NA NA NA NA NA NA NA
> 1948 0.1 0.1 NA NA NA NA NA NA NA NA
> 1949 0.1 0.1 0.1 NA NA NA NA NA NA NA
> 1950 0.1 0.1 0.1 0.1 NA NA NA NA NA NA
> 1951 0.1 0.1 0.1 0.1 0.1 NA NA NA NA NA
> 1952 0.1 0.1 0.1 0.1 0.1 0.1 NA NA NA NA
> 1953 0.1 0.1 0.1 0.1 0.1 0.1 0.1 NA NA NA
> 1954 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 NA NA
> 1955 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 NA
> 1956 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
>
> units: NA > FLCohort(m(ple4))[1:10,1:10]An object of class "FLCohort"
> , , unit = unique, season = all, area = unique
>
> cohort
> age 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956
> 1 NA NA NA NA NA NA NA NA NA 0.1
> 2 NA NA NA NA NA NA NA NA 0.1 0.1
> 3 NA NA NA NA NA NA NA 0.1 0.1 0.1
> 4 NA NA NA NA NA NA 0.1 0.1 0.1 0.1
> 5 NA NA NA NA NA 0.1 0.1 0.1 0.1 0.1
> 6 NA NA NA NA 0.1 0.1 0.1 0.1 0.1 0.1
> 7 NA NA NA 0.1 0.1 0.1 0.1 0.1 0.1 0.1
> 8 NA NA 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
> 9 NA 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
>
> laurie
>
>
>
> Lost me. What do you want ?
>
> EJ
>
>
>
> There are three ways to represent the 1st two dims in an FLQuant.
>
> i) age & year
> ii) age & cohort
> iii) cohort & year
>
> (i) is FLQuant and (ii) is FLCohort; However we do not have (iii) which is
> what I need for my tagging model.
>
> I have created an "FLCohortYear" from an FLQuant by adding I() & O() as
> coercion methods and validity that only allows 1st dim to be called cohort.
> But then we have two FLCohort objects which might conflict.
>
> Laurie
>
>
>
But you can use FLQuant and change the first dimension. You may need a
method to convert i) or ii) into it but shouldn't create any conflicts. If
you really need a new data structure and the problem only affects tag data,
call it FLTag and extend FLQuant.
Best
EJ
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/flr-list/attachments/20111018/97a47e8c/attachment.htm>
More information about the flr-list
mailing list