Dear R community,
I have currently some problems with non linear regression analysis in R.
My data correspond to the degradation kinetic of a pollutant in two
different soil A and B, x data are time in day and y data are pollutant
concentration in soil.
In a first time, I want to fit the data for the soil A by using the Ct =
C0*exp(-k*Tpst) with Ct the concentration of pollutant at time t, C0 is the
initial concentration (i.e. t=0), Tps is the time in days.
The table containing data is called «tabMika»
Here, you can find my R program:
> tabMika<-read.delim("RMika.txt")
> tabMika
Tps SolA Solb
1 0 32.97 35.92
2 0 32.01 31.35
3 1 21.73 22.03
4 1 23.73 18.53
5 2 19.68 18.28
6 2 18.56 16.79
# and continue like that until 29 days.
> library(nls)
> attach(tabMika)
> Expon<-function(Tps,parm){
+ C0<-parm[1]
+ k<-parm[2]
+ }
> DegSA.nls<-nls(SolA~C0*exp(-k*Tps),start=c(C0=35, k=1),tabMika)
> summary(DegSA.nls)
Formula: SolA ~ C0 * exp(-k * Tps)
Parameters:
Estimate Std. Error t value Pr(>|t|)
C0 25.682104 1.092113 23.52 < 2e-16 ***
k 0.087356 0.007582 11.52 6.36e-13 ***
---
Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` '
1
Residual standard error: 2.584 on 32 degrees of freedom
Correlation of Parameter Estimates:
C0
k 0.7101
# until this step, I think (or may be hope) that it is OK.
#Then, I would like to use bootstrap function to obtain 10 estimations
(more of course but 10 is retained for this example) of the parameters C0
and t. I use this way:
> library(bootstrap)
> theta<-function(tabMika){coef(eval(DegSA.nls$call))}
> bootSolA.nls<-bootstrap(tabMika,10,theta)
Warning message:
multi-argument returns are deprecated in: return(thetastar, func.thetastar,
jack.boot.val, jack.boot.se,
> bootSolA.nls
$thetastar
[,1] [,2] [,3] [,4] [,5] [,6]
C0 25.68210358 25.68210358 25.68210358 25.68210358 25.68210358 25.68210358
k 0.08735615 0.08735615 0.08735615 0.08735615 0.08735615 0.08735615
[,7] [,8] [,9] [,10]
C0 25.68210358 25.68210358 25.68210358 25.68210358
k 0.08735615 0.08735615 0.08735615 0.08735615
$func.thetastar
NULL
$jack.boot.val
NULL
$jack.boot.se
NULL
$call
bootstrap(x = tabMika, nboot = 10, theta = theta)
# as you can notify, the 10 estimations of C0 and k are the same value
(????!!!!!!), so, my program is wrong but I cannot find where is the problem.
# In a second time, I would like to fit the same data with a new function
Ct = C0*Tpsb. I did as follow and obtained the following results:
> Pat<-function(Tps,parm){
+ a<-parm[1]
+ b<-parm[2]
+ }
> PatSA.nls<-nls(SolA~a*(Tps^b),start=c(a=35, b=-1),tabMika)
Error in numericDeriv(form[[3]], names(ind), env) : Missing value or an
Infinity produced when evaluating the model
> summary(PatSA.nls)
Error in summary(PatSA.nls) : Object "PatSA.nls" not found
# I cannot understand the mean of «Error in numericDeriv(form[[3]],
names(ind), env) : Missing value or an Infinity produced when evaluating
the model», please, can you help me.
Thank you very much in advance.
Michael C
Michaël COEURDASSIER, PhD
Department of Environmental Biology
UC INRA EA3184MRT
Institute for Environmental Sciences and Technology
University of Franche-Comte
Place Leclerc
25030 Besançon cedex
FRANCE
Tel : +33 (0)381 665 741
Fax : +33 (0)381 665 797
E-m@il: michael.coeurdassier@univ-fcomte.fr
http://lbe.univ-fcomte.fr/
[[alternative HTML version deleted]]