hi everyone, i need help. I have to calculate the double sigmoid function via the nonlinear regression function. I have to estimate the following parameters:

a1, a2, c1, c2, qmax.

where a1 and a2 are slopes, while c1 and c2 are average values. these parameters are present in the formula that I have to use in the regression. i need to set a function for each parameter.

otherwise I get the error: attempt to apply a non-function.

can someone help me?

I don't fully understand, is it the case that you have some data, that you believe is best fitted by a double sigmoid, and you wish to calculate the fit ? or is it something else ?

No, I have to calculate the parameters using the NLS code. The formula already contains the parameters that the model must estimate and I should therefore set them as a function.

E.g.: a1 = slope of first growth

a2 = slope of second growth

c1= mean of first growth

c2 = mean of second growth

Growth refers to the initials I must estimate. How do I set the functions for parameters?

Sorry, you haven't shared any formula with me.

Sorry, I know. But it isnâ€™t important. I need only the functions for parameteres

I dont know what 'functions for parameters' means. Sorry

I'm sorry, I have to set a single function for the parameters that I have to estimate with non-linear regression.

Parameters:

- c1 = midpoint if x <0
- c2 = midpoint if x> 0
- a1 = slope of the first growth (which should be x <0)
- a2 = slope of the second growth (x> 0)
- qmax = final value of double sigmoide curve

The function is:

`q_ds = qmin + (qmid - qmin)/(1+exp(-a1*(spread-c1)))+(qmax - qmid)/((1+exp(-a2*(spread-c2))))`

i have the value of qmid and i know that:

qds(deltat = 0) = qmid

so, i can make qmin (initial value of the function) explicit as a function of all the other parameters.

`qmin = function(a1, a2, c1, c2, qmax) {(exp(-a1(val_spread-c1)+1)(2*qmid+qmid*exp(-a2(val_spread-c2))-qmax))/(exp(-a1(val_spread-c1))(1+exp(-a2(val_spread-c2))))}`

I substitute qmin in the qds formula, to have to estimate one less parameter.

```
qds = function(spread, a1, a2, c1, c2, qmax) {(((exp(-a1(val_spread-(c1))+1)(2(qmid)+qmidexp(-a2(val_spread-c2))-qmax))/(exp(-a1(val_spread-c1))(1+exp(-a2(val_spread-c2)))) + (qmid - (((exp(-a1(val_spread-c1))+1)(2(qmid)+qmidexp(-a2(val_spread-c2))-qmax))/(exp(-a1(val_spread-c1))(1+exp(-a2(val_spread-c2))))))/(1+exp(-a1(x-c1)))+(qmax - qmid)/((1+exp(-a2(x-c2))))))}
```

Now, by running the nls command:

`ds = nls(y ~ qds, data = data)`

the error comes out:

```
Error in object[[3L]][[1L]] : object of type 'symbol' is not subsettable
Inoltre: Warning messages:
1: In min(x) : no non-missing arguments to min; returning Inf
2: In max(x) : no non-missing arguments to max; returning -Inf
```

Can you help me?

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.