[R] nlme starting values are not the correct length

PIKAL Petr petr.pikal at precheza.cz
Thu Dec 6 07:52:03 CET 2012


Hi

see inline

> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Lara Reichmann
> Sent: Wednesday, December 05, 2012 1:53 AM
> To: R-help at lists.R-project.org
> Subject: [R] nlme starting values are not the correct length
> 
> Dear R community,
> 
> I am trying to fit an nlme model where I want to estimate the fixed
> effects of two treatments on the parameters on the following equation
> Photo~(a*(1-exp(-c*PARi/a)))-b I was able to fit a simple model without
> covariates following the method described in Mixed-Effects Methods and
> Classes for S and S-PLUS, version 3.0, but when I add the covariates, I
> get the error " starting values for the fixed component are not the
> correct length"
> 
> My data has the following structure "Subject" "Species" "Fert" "Photo"
> "PARi" , where several "Photo" measurements where taken on the same
> subject by changing "PARi", 4 Species levels and 2 Fert levels, there
> are 31 Subjects (one missing value), and 323 observations
> 
> DATA extract
> 
> Subject	Species	Fert	Photo	PARi
> 1	bb	1	22.5389	1499.3307
> 1	bb	1	21.881	1248.913
> 1	bb	1	21.2862	999.3387
> 1	bb	1	20.5836	799.9308
> 1	bb	1	19.3758	601.1412
> 1	bb	1	15.5915	399.815
> 1	bb	1	8.7978	200.1087
> 1	bb	1	4.4347	99.686
> 1	bb	1	2.0387	49.7842
> 1	bb	1	-1.4854	0.0576
> 2	sw	0	6.782	1500.5337
> 2	sw	0	7.1432	1249.2749
> 2	sw	0	7.3319	1000.9891
> 2	sw	0	7.5848	799.1752
> 2	sw	0	7.1882	599.5544
> 2	sw	0	6.809	399.988
> 2	sw	0	5.3877	198.7574
> 2	sw	0	3.5104	100.7115
> 2	sw	0	0.8856	50.7015
> 2	sw	0	-1.121	0.0569
> 3	jg	1	16.0827	2000.4941
> 3	jg	1	16.0236	1501.1957
> 3	jg	1	16.3818	1248.9551
> 3	jg	1	16.7815	1499.6414
> 3	jg	1	17.175	2000.6851
> 3	jg	1	16.6529	1000.2707
> 3	jg	1	15.7987	799.676
> 3	jg	1	15.5437	598.9409
> 3	jg	1	11.7683	400.7715
> 3	jg	1	4.89	200.7468
> 3	jg	1	4.1294	100.9664
> 3	jg	1	1.6008	50.9254
> 3	jg	1	-0.89	0.5347
> 4	sw	1	25.2889	2000.1454
> 4	sw	1	24.7284	1499.6191
> 4	sw	1	24.3637	1249.7523
> 4	sw	1	23.3523	1000.0944
> 4	sw	1	21.6057	800.2209
> 4	sw	1	18.8926	599.7022
> 4	sw	1	14.6598	398.9366
> 4	sw	1	7.7182	201.5697
> 4	sw	1	3.4775	100.5139
> 4	sw	1	1.169	49.7045
> 4	sw	1	-1.3558	1.6914
> 5	jg	0	6.1626	2000.9351
> 5	jg	0	7.5573	1499.6581
> 5	jg	0	7.7129	1249.5073
> 5	jg	0	7.442	1000.7276
> 5	jg	0	7.5135	799.1286
> 5	jg	0	7.1559	599.5568
> 5	jg	0	6.8161	400.3576
> 5	jg	0	4.0097	199.7442
> 5	jg	0	2.7202	101.1253
> 5	jg	0	1.0746	51.1787
> 5	jg	0	-0.5913	0.975
> 
> 
> 
> This works so far:
> 
> lightresponse<-groupedData(Photo~PARi|Subject,data=lightr,outer = ~
> Species * Fert,labels = list(x = "PAR", y = "CO2 uptake rate"),units =
> list(x = "(photon s-1)", y = "(umol/m?2 s)")) Photo.resp<-
> function(PARi,A,B,C)A*(1-exp(-C*PARi/A))-B
> Photo.resp<-deriv ((~A *(1-exp(-C*PARi/A))-
> B),c("A","B","C"),function(PARi,A,B,C){})
> 
> >
> >lightresp.fit1<-
> nlme(model=Photo~Photo.resp(PARi,A,B,C),fixed=A+B+C~1,d
> >ata=lightresponse,start=c(30,-5,0.1))#fitting  nlme without any
> >covariates
> >lightresp.fit1
> 
> OUTPUT
> > lightresp.fit1
> Nonlinear mixed-effects model fit by maximum likelihood
>   Model: Photo ~ Photo.resp(PARi, A, B, C)
>   Data: lightresponse
>   Log-likelihood: -494.5926
>   Fixed: A + B + C ~ 1
>           A           B           C
> 24.89334793  1.77983637  0.06499634
> 
> Random effects:
>  Formula: list(A ~ 1, B ~ 1, C ~ 1)
>  Level: Subject2
>  Structure: General positive-definite, Log-Cholesky parametrization
>          StdDev      Corr
> A        10.67382785 A     B
> B         0.52572012 1.000
> C         0.01433605 0.371 0.384
> Residual  0.71900020
> 
> Number of Observations: 323
> Number of Groups: 31
> 
> ##Now, I want to test the effect of Species and Fert, I don't fully
> understand how to modify the start vector, as I tried several options
> and no one seems to be correct. Do the number of levels in each factor
> matter? In that case 4 Species and 2 Fert levels, I would need 6
> initial parameters x 3? This didn't work either
> 
> >lightresp.fit2<-nlme(model=Photo~Photo.resp(PARi,A,B,C),fixed=A+B+C ~
> >Species*Fert,random=A+B+C~1,data=lightresponse,
> >start=c(24.89,0,0,0,1.78,0,0,0,0.065,0,0,0))
> Error in nlme.formula(model = Photo ~ Photo.resp(PARi, A, B, C), fixed
> = A +  :
>   starting values for the fixed component are not the correct length
> 

A aqm not an expert in nlme models but it seems that you have only three fixed parameters A,B,C and want to feed them with 12 starting values. This is probably the reason for error.

Maybe you shall also search in R-sig-mixed-models

Regards
Petr


> I hope someone out there has the answer!
> Thanks!!!
> 
> Lara
> 
> Lara G. Reichmann
> Postdoctoral Fellow
> USDA-ARS
> 808 E Blackland Rd
> Temple, TX 76502
> 
> ______________________________________________
> 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