[R] R crashing oddly

Uwe Ligges ligges at statistik.tu-dortmund.de
Fri Apr 23 10:41:55 CEST 2010


When I try it, I do not get a crash but an error message:

1 0.5Error in `coef<-.corSpatial`(`*tmp*`, value = c(0, 0, 0)) :
   Cannot change the length of the parameter after initialization

Even trying several times I always get the error and cannot reproduce 
any crash.

Best wishes,
Uwe



On 22.04.2010 19:31, Michael Steven Rooney wrote:
> Hi Uwe,
>
> I downloaded R 2.11.0 and the latest version of nlme. I am still getting the
> problem. I should also note that I got a message from Viechtbauer Wolfgang
> saying that he had experienced a similar problem using nlme.
 >
> I have pasted the code below. (The data is generated in the first ~15
> lines). I have bunch of debug() statements, which may or may not be useful.
> The code is not as elegant as it could be since I have been constantly
> editing it to try to track down the bug (I replaced the corMatrix C routine
> with R code). FYI, the objective of the code is to simultaneously fit
> temporal and spatial correlation (adding one corExp matrix plus another)
> where the nuggets are constrained to add to 1.
>
> I really hope you have a chance to look at this. Thanks so much!!
>
> ## BEGIN
>
> N<- 100
> x<- round(sin(rep(1:23/2,length.out=N)),digits=2)+1:N*2/N
> y<- round(cos(rep(1:23/2,length.out=N)),digits=2)+1:N*2/N
> g<- rep(1:5,each=N/5)
> a<- round(runif(N,0,10))
> t<- 1:N
> r<- runif(N,0,5)
> e<- 5*sin(4*x) +
>       5*cos(4*y) +
>       5*sin(t) +
>       2*g +
>       a +
>       r
> e<- round(e)
>
> df<- data.frame(x,y,g,a,t,r,e)
> df<- df[-c(22,23,67),]
>
> library(nlme)
>
> corSPT<- function(a,b) {
>    object<- list("time"=a,"space"=b)
>    class(object)<-  c("corSPT","corSpatial","corStruct")
>    attr(object, "formula")<- formula(object)
>    attr(object, "nugget")<- attr(object[["time"]], "nugget")
>    attr(object, "metric")<- attr(object[["time"]], "metric")
>    attr(object, "fixed")<- attr(object[["time"]], "fixed")
>    return(object)
> }
>
> coef.corSPT<- function(object,...) {
>
> c("time"=coef(object[["time"]],...),"space"=coef(object[["space"]],...)[1])
> }
>
> "coef<-.corSPT"<- function (object, ..., value) {
>      value<- as.numeric(value)
>      if (length(value) != 3) {
>          stop("Cannot change the length of the parameter of a corSPT object")
>      }
>      object[["time"]][]<- value[1:2]
>      object[["space"]][]<- c(value[3],-value[2]) # nugget for space is
> determined by the nugget for time
>      attr(object, "factor")<- NULL
>      attr(object, "factor")<- corFactor(object)
>      attr(object, "logDet")<- NULL
>      attr(object, "logDet")<- logDet(object)
>      object
> }
>
> Initialize.corSPT<- function (object, data, ...) {
>      if (!is.null(attr(object[["time"]], "minD"))) {
>          return(object)
>      }
>      object[["time"]]<-
> getS3method("Initialize","corStruct")(object[["time"]], data)
>      object[["space"]]<-
> getS3method("Initialize","corStruct")(object[["space"]], data)
>      object[["time"]][1]<- log(object[["time"]][1])
>      object[["space"]][1]<- log(object[["space"]][1])
>      object[["time"]][2]<- log(object[["time"]][2]/(1 -
> object[["time"]][2]))
>      object[["space"]][2]<- -object[["time"]][2]
>      attr(object,"groups")<- attr(object[["time"]],"groups")
>      attr(object,"Dim")<- attr(object[["time"]],"Dim")
>      attr(object,"covariate")<- NULL
>      attr(object, "nugget")<- attr(object[["time"]], "nugget")
>      attr(object[["time"]],"minD")<- min(unlist(attr(object[["time"]],
> "covariate")))
>      attr(object[["space"]],"minD")<- min(unlist(attr(object[["space"]],
> "covariate")))
>      attr(object, "minD")<- NULL
>      ###
>      corD<- Dim(object[["time"]])
>      attr(object[["time"]],"covariate")<- lapply(seq(corD$M),function(M) {
>        x<- attr(object[["time"]],"covariate")[[M]]
>        l<- corD$len[M]
>        g<- rep(seq(l),(l-1):0)
>        mat<- do.call(rbind,lapply(seq(l),function(G) {c(rep(0,G),x[g==G])}))
>        mat<- mat + t(mat)
>      })
>      attr(object[["space"]],"covariate")<- lapply(seq(corD$M),function(M) {
>        x<- attr(object[["space"]],"covariate")[[M]]
>        l<- corD$len[M]
>        g<- rep(seq(l),(l-1):0)
>        mat<- do.call(rbind,lapply(seq(l),function(G) {c(rep(0,G),x[g==G])}))
>        mat<- mat + t(mat)
>      })
>      ###
>      attr(object, "factor")<- corFactor(object)
>      attr(object, "logDet")<- -attr(attr(object, "factor"), "logDet")
>      object
> }
>
> corMatrix.corSPT<- function(object,covariate = NULL,corr=TRUE, ...) {
>    if (corr) {
>      temp<- coef(object[["time"]],unconstrained=FALSE)
>      cat(temp)
>      time.rng<- temp[1]
>      time.nug<- temp[2]
>      temp<- coef(object[["space"]],unconstrained=FALSE)
>      space.rng<- temp[1]
>      space.nug<- temp[2]
>      cor.time<- lapply(attr(object[["time"]],"covariate"),function(mat)
> (1-time.nug)*exp(-mat/time.rng))
>      cor.space<- lapply(attr(object[["space"]],"covariate"),function(mat)
> (1-space.nug)*exp(-mat/space.rng))
>      x<- lapply(seq(length(cor.time)),function(mat)
> round(cor.time[[mat]]+cor.space[[mat]],4))
>      attr(x, "logDet")<- NULL
>    } else {
>      d<- Dim(object)
>      gg<- rep(seq(d$M),each=d$len^2)
>      cf<- corFactor(object)
>      lD<- attr(cf, "logDet")
>      x<- lapply(seq(d$M),function(mm) {mat<- cf[gg==mm];
> matrix(mat,nrow=d$len[mm])})
>      attr(x,"logDet")<- lD
>    }
>    return(x)
> }
>
> corFactor.corSPT<- getS3method("corFactor","corStruct")
> logDet.corSPT<- getS3method("logDet","corStruct")
> recalc.corSPT<- getS3method("recalc","corStruct")
>
> formula.corSPT<- function(object,...) {
>    a<- as.character(formula(object[["time"]]))
>    b<- as.character(formula(object[["space"]]))
>    a<- strsplit(a[2],split="|",fixed=TRUE)[[1]]
>    b<- strsplit(b[2],split="|",fixed=TRUE)[[1]]
>    as.formula(paste("~",a[1],"+",b[1],"|",a[2]))
> }
>
> Dim.corSPT<- function(object,...) {
>    Dim(object[["time"]],...)
> }
>
> debug(corSPT)
> debug(getS3method("recalc","corSpatial"))
> debug(getS3method("recalc","corStruct"))
> debug(getS3method("Initialize","corSPT"))
> debug(getS3method("coef<-","corSPT"))
> debug(getS3method("coef","corSPT"))
> debug(getS3method("corFactor","corSPT"))
> debug(getS3method("logDet","corStruct"))
> debug(getS3method("logLik","lmeStruct"))
> debug(getS3method("recalc","modelStruct"))
> debug(getS3method("recalc","corStruct"))
> debug(getS3method("corMatrix","corSPT"))
> debug(getS3method("coef<-","reStruct"))
> debug(getS3method("coef<-","modelStruct"))
> debug(getS3method("corMatrix","corSpatial"))
> debug(getS3method("Initialize","corSpatial"))
> debug(getS3method("Initialize","corStruct"))
>
> mymodel<- lme(fixed = e ~ a,random= ~ 1 |
> g,data=df,correlation=corSPT(corExp(c(1,.5),form = ~ t |
> g,nugget=TRUE),corExp(c(1,.5),form= ~ x + y | g,
> nugget=TRUE)),control=list(msVerbose=TRUE,opt="nlminb"))
>
> ## End
>
>
> 2010/4/21 Uwe Ligges<ligges at statistik.tu-dortmund.de>
>
>>
>>
>> On 21.04.2010 18:19, Michael Steven Rooney wrote:
>>
>>> The R version is 2.9.2.
>>>
>>
>> Please try with R-2.11.0 RC (release candidate) to be released tomorrow as
>> well as a recent version of nlme.
>>
>> If its still fails, please send code (and data, if you do not generate them
>> in the code) that reproduces the problem.
>>
>> Uwe Ligges
>>
>>
>>
>>
>>
>>   nlme version is 3.1-93
>>> The OS is Windows XP.
>>> This is for my work computer but I get the same behavior at home using
>>> Vista.
>>> ---------- Forwarded message ----------
>>> From: Sarah Goslee<sarah.goslee at gmail.com>
>>> Date: Wed, Apr 21, 2010 at 11:50 AM
>>> Subject: Re: [R] R crashing oddly
>>> To: Michael Steven Rooney<michael.s.rooney at gmail.com>
>>>
>>>
>>> You definitely need to provide the information requested in the posting
>>> guide,
>>> specifically OS, R version, package version (and update to the newest if
>>> you
>>> haven't yet).
>>>
>>> Sarah
>>>
>>> On Wed, Apr 21, 2010 at 11:41 AM, Michael Steven Rooney
>>> <michael.s.rooney at gmail.com>   wrote:
>>>
>>>> Hi,
>>>>
>>>> I am working with the package nlme, and I tried creating a new
>>>> correlation
>>>> class (which, according to the help pages, is possible if you write a few
>>>> new method functions). Anyways, I think I am 99% of the way there, but I
>>>> have a recurring problem with R crashing on seemingly innocuous
>>>> statements
>>>> (I have set debug() on nearly every function, so I can see where it is
>>>> failing).
>>>>
>>>>   --
>>> Sarah Goslee
>>> http://www.functionaldiversity.org
>>>
>>>         [[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