Besides this, using bounds to fix (also called "mask") parameters is generally a very bad idea. Some optimization methods allow this explicitly. For nonlinear least squares nlmrt package has it, but I'm not sure I fully documented the process. For optimization, Rvmmin and Rcgmin both allow masks, but again the documentation is not fully developed. There is a section in my 2014 book Nonlinear Parameter Optimization in R. I'm on vacation, and don't have the page refs. at this moment, however.

I know there are some other packages that include the possibility of fixed parameters, and perhaps others could give pointers, as I don't have the references with me.

JN

On 15-09-19 05:10 AM, Sarah Goslee wrote:
You need to read the help more closely. start should be a list, as you've
done, but upper and lower should be vectors instead. Which is exactly what
your error message is telling you.

lower, upper

vectors of lower and upper bounds, replicated to be as long as start. If
unspecified, all parameters are assumed to be unconstrained. Bounds can
only be used with the "port" algorithm. They are ignored, with a warning,
if given for other algorithms.
Sarah

On Saturday, September 19, 2015, Jianling Fan <fanjianl...@gmail.com> wrote:

Hello, everyone,

I am using a nls regression with 6 groups data. I am trying to coerce
a parameter to 1 by using a upper and lower statement. but I always
get an error like below:

Error in ifelse(internalPars < upper, 1, -1) :
   (list) object cannot be coerced to type 'double'

does anyone know how to fix it?

thanks in advance!

My code is below:



dproot
    depth       den ref
1     20 0.5730000   1
2     40 0.7800000   1
3     60 0.9470000   1
4     80 0.9900000   1
5    100 1.0000000   1
6     10 0.6000000   2
7     20 0.8200000   2
8     30 0.9300000   2
9     40 1.0000000   2
10    20 0.4800000   3
11    40 0.7340000   3
12    60 0.9610000   3
13    80 0.9980000   3
14   100 1.0000000   3
15    20 3.2083491   4
16    40 4.9683383   4
17    60 6.2381133   4
18    80 6.5322348   4
19   100 6.5780660   4
20   120 6.6032064   4
21    20 0.6140000   5
22    40 0.8270000   5
23    60 0.9500000   5
24    80 0.9950000   5
25   100 1.0000000   5
26    20 0.4345774   6
27    40 0.6654726   6
28    60 0.8480684   6
29    80 0.9268951   6
30   100 0.9723207   6
31   120 0.9939966   6
32   140 0.9992400   6

fitdp<-nls(den~Rm[ref]/(1+(depth/d50)^c),data=dproot,
+ start = list(Rm=c(1.01, 1.01, 1.01, 6.65,1.01,1), d50=20, c=-1))
summary(fitdp)

Formula: den ~ Rm[ref]/(1 + (depth/d50)^c)

Parameters:
     Estimate Std. Error t value Pr(>|t|)
Rm1  1.12560    0.07156   15.73 3.84e-14 ***
Rm2  1.57643    0.11722   13.45 1.14e-12 ***
Rm3  1.10697    0.07130   15.53 5.11e-14 ***
Rm4  7.23925    0.20788   34.83  < 2e-16 ***
Rm5  1.14516    0.07184   15.94 2.87e-14 ***
Rm6  1.03658    0.05664   18.30 1.33e-15 ***
d50 22.69426    1.03855   21.85  < 2e-16 ***
c   -1.59796    0.15589  -10.25 3.02e-10 ***
---
Signif. codes:  0 ?**?0.001 ?*?0.01 ??0.05 ??0.1 ??1

Residual standard error: 0.1094 on 24 degrees of freedom

Number of iterations to convergence: 8
Achieved convergence tolerance: 9.374e-06

fitdp1<-nls(den~Rm[ref]/(1+(depth/d50)^c),data=dproot, algorithm="port",
+ start = list(Rm=c(1.01, 1.01, 1.01, 6.65, 1.01, 1), d50=20, c=-1),
+ lower = list(Rm=c(1.01, 1.01, 1.01, 6.65, 1.01, 1), d50=20, c=-1),
+ upper = list(Rm=c(2.1, 2.2, 2.12, 12.5, 2.3, 1), d50=50, c=1))

Error in ifelse(internalPars < upper, 1, -1) :
   (list) object cannot be coerced to type 'double'

______________________________________________
R-help@r-project.org <javascript:;> mailing list -- To UNSUBSCRIBE and
more, see
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.




______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to