modelling 4-parameter curve in R does not match data - how to proceed?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

modelling 4-parameter curve in R does not match data - how to proceed?

Luigi
Hello,
I have a dataset from a polymerase chain reaction. I am using the
equation given by Rutledge
(https://pubmed.ncbi.nlm.nih.gov/15601990/) but the profile I get in R
does not match the data. I ran the same thing in Desmos and instead
the profile is correct (attached).
Why do I not get the same matching model as in Desmos? I believe the
formula in R is the same as the one in Desmos, and I am using the same
parameters.
Is there a procedure to debug models?
Thanks

Here is the code:
```
high <- c(120.64, 66.14, 34.87, 27.11, 8.87, -5.8, 4.52, -7.16, -17.39,
       -14.29, -20.26, -14.99, -21.05, -20.64, -8.03, -21.56, -1.28, 15.01,
       75.26, 191.76, 455.09, 985.96, 1825.59, 2908.08, 3993.18, 5059.94,
       6071.93, 6986.32, 7796.01, 8502.25, 9111.46, 9638.01, 10077.19,
       10452.02, 10751.81, 11017.49, 11240.37, 11427.47, 11570.07, 11684.96,
       11781.77, 11863.35, 11927.44, 11980.81, 12021.88)
plot(1:45, high, type = "l")
rutledge <- function(p, x) {
  m = p$half_fluorescence
  s = p$slope
  M = p$max_fluorescence
  B = p$back_fluorescence
  y = (M / ( 1 + exp(-(x-m)/s)) ) + B
  return(y)
}
desmos <- rutledge(list(half_fluorescence = 27.1102, slope = 2.76798,
                        max_fluorescence = 11839.8, back_fluorescence
= -138.864) , high)

points(1:45, desmos, type="l", col="blue")
```

--
Best regards,
Luigi

______________________________________________
[hidden email] 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.

model.png (99K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: modelling 4-parameter curve in R does not match data - how to proceed?

Duncan Murdoch-2
On 17/03/2021 5:41 a.m., Luigi Marongiu wrote:

> Hello,
> I have a dataset from a polymerase chain reaction. I am using the
> equation given by Rutledge
> (https://pubmed.ncbi.nlm.nih.gov/15601990/) but the profile I get in R
> does not match the data. I ran the same thing in Desmos and instead
> the profile is correct (attached).
> Why do I not get the same matching model as in Desmos? I believe the
> formula in R is the same as the one in Desmos, and I am using the same
> parameters.
> Is there a procedure to debug models?
> Thanks
>
> Here is the code:
> ```
> high <- c(120.64, 66.14, 34.87, 27.11, 8.87, -5.8, 4.52, -7.16, -17.39,
>         -14.29, -20.26, -14.99, -21.05, -20.64, -8.03, -21.56, -1.28, 15.01,
>         75.26, 191.76, 455.09, 985.96, 1825.59, 2908.08, 3993.18, 5059.94,
>         6071.93, 6986.32, 7796.01, 8502.25, 9111.46, 9638.01, 10077.19,
>         10452.02, 10751.81, 11017.49, 11240.37, 11427.47, 11570.07, 11684.96,
>         11781.77, 11863.35, 11927.44, 11980.81, 12021.88)
> plot(1:45, high, type = "l")
> rutledge <- function(p, x) {
>    m = p$half_fluorescence
>    s = p$slope
>    M = p$max_fluorescence
>    B = p$back_fluorescence
>    y = (M / ( 1 + exp(-(x-m)/s)) ) + B
>    return(y)
> }
> desmos <- rutledge(list(half_fluorescence = 27.1102, slope = 2.76798,
>                          max_fluorescence = 11839.8, back_fluorescence
> = -138.864) , high)
>
> points(1:45, desmos, type="l", col="blue")


In your calculation of desmos, you are using the Y variable for x in the
formula.  Calculate it this way instead:

desmos <- rutledge(list(half_fluorescence = 27.1102, slope = 2.76798,
                           max_fluorescence = 11839.8, back_fluorescence
  = -138.864) , 1:45)

Duncan Murdoch

______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: modelling 4-parameter curve in R does not match data - how to proceed?

Luigi
yes, but in `rutledge` I model y as `y = (M / ( 1 + exp(-(x-m)/s)) ) +
B`, with x being 1:45. Isn't that the equivalent of what I fed Desmos
with? Tx

On Wed, Mar 17, 2021 at 11:31 AM Duncan Murdoch
<[hidden email]> wrote:

>
> On 17/03/2021 5:41 a.m., Luigi Marongiu wrote:
> > Hello,
> > I have a dataset from a polymerase chain reaction. I am using the
> > equation given by Rutledge
> > (https://pubmed.ncbi.nlm.nih.gov/15601990/) but the profile I get in R
> > does not match the data. I ran the same thing in Desmos and instead
> > the profile is correct (attached).
> > Why do I not get the same matching model as in Desmos? I believe the
> > formula in R is the same as the one in Desmos, and I am using the same
> > parameters.
> > Is there a procedure to debug models?
> > Thanks
> >
> > Here is the code:
> > ```
> > high <- c(120.64, 66.14, 34.87, 27.11, 8.87, -5.8, 4.52, -7.16, -17.39,
> >         -14.29, -20.26, -14.99, -21.05, -20.64, -8.03, -21.56, -1.28, 15.01,
> >         75.26, 191.76, 455.09, 985.96, 1825.59, 2908.08, 3993.18, 5059.94,
> >         6071.93, 6986.32, 7796.01, 8502.25, 9111.46, 9638.01, 10077.19,
> >         10452.02, 10751.81, 11017.49, 11240.37, 11427.47, 11570.07, 11684.96,
> >         11781.77, 11863.35, 11927.44, 11980.81, 12021.88)
> > plot(1:45, high, type = "l")
> > rutledge <- function(p, x) {
> >    m = p$half_fluorescence
> >    s = p$slope
> >    M = p$max_fluorescence
> >    B = p$back_fluorescence
> >    y = (M / ( 1 + exp(-(x-m)/s)) ) + B
> >    return(y)
> > }
> > desmos <- rutledge(list(half_fluorescence = 27.1102, slope = 2.76798,
> >                          max_fluorescence = 11839.8, back_fluorescence
> > = -138.864) , high)
> >
> > points(1:45, desmos, type="l", col="blue")
>
>
> In your calculation of desmos, you are using the Y variable for x in the
> formula.  Calculate it this way instead:
>
> desmos <- rutledge(list(half_fluorescence = 27.1102, slope = 2.76798,
>                            max_fluorescence = 11839.8, back_fluorescence
>   = -138.864) , 1:45)
>
> Duncan Murdoch
>


--
Best regards,
Luigi

______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: modelling 4-parameter curve in R does not match data - how to proceed?

Duncan Murdoch-2
On 17/03/2021 6:59 a.m., Luigi Marongiu wrote:
> yes, but in `rutledge` I model y as `y = (M / ( 1 + exp(-(x-m)/s)) ) +
> B`, with x being 1:45. Isn't that the equivalent of what I fed Desmos
> with? Tx

No, it's not.

Duncan Murdoch

>
> On Wed, Mar 17, 2021 at 11:31 AM Duncan Murdoch
> <[hidden email]> wrote:
>>
>> On 17/03/2021 5:41 a.m., Luigi Marongiu wrote:
>>> Hello,
>>> I have a dataset from a polymerase chain reaction. I am using the
>>> equation given by Rutledge
>>> (https://pubmed.ncbi.nlm.nih.gov/15601990/) but the profile I get in R
>>> does not match the data. I ran the same thing in Desmos and instead
>>> the profile is correct (attached).
>>> Why do I not get the same matching model as in Desmos? I believe the
>>> formula in R is the same as the one in Desmos, and I am using the same
>>> parameters.
>>> Is there a procedure to debug models?
>>> Thanks
>>>
>>> Here is the code:
>>> ```
>>> high <- c(120.64, 66.14, 34.87, 27.11, 8.87, -5.8, 4.52, -7.16, -17.39,
>>>          -14.29, -20.26, -14.99, -21.05, -20.64, -8.03, -21.56, -1.28, 15.01,
>>>          75.26, 191.76, 455.09, 985.96, 1825.59, 2908.08, 3993.18, 5059.94,
>>>          6071.93, 6986.32, 7796.01, 8502.25, 9111.46, 9638.01, 10077.19,
>>>          10452.02, 10751.81, 11017.49, 11240.37, 11427.47, 11570.07, 11684.96,
>>>          11781.77, 11863.35, 11927.44, 11980.81, 12021.88)
>>> plot(1:45, high, type = "l")
>>> rutledge <- function(p, x) {
>>>     m = p$half_fluorescence
>>>     s = p$slope
>>>     M = p$max_fluorescence
>>>     B = p$back_fluorescence
>>>     y = (M / ( 1 + exp(-(x-m)/s)) ) + B
>>>     return(y)
>>> }
>>> desmos <- rutledge(list(half_fluorescence = 27.1102, slope = 2.76798,
>>>                           max_fluorescence = 11839.8, back_fluorescence
>>> = -138.864) , high)
>>>
>>> points(1:45, desmos, type="l", col="blue")
>>
>>
>> In your calculation of desmos, you are using the Y variable for x in the
>> formula.  Calculate it this way instead:
>>
>> desmos <- rutledge(list(half_fluorescence = 27.1102, slope = 2.76798,
>>                             max_fluorescence = 11839.8, back_fluorescence
>>    = -138.864) , 1:45)
>>
>> Duncan Murdoch
>>
>
>

______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: modelling 4-parameter curve in R does not match data - how to proceed?

Luigi
sorry, I don't get it...

On Wed, Mar 17, 2021 at 2:35 PM Duncan Murdoch <[hidden email]> wrote:

>
> On 17/03/2021 6:59 a.m., Luigi Marongiu wrote:
> > yes, but in `rutledge` I model y as `y = (M / ( 1 + exp(-(x-m)/s)) ) +
> > B`, with x being 1:45. Isn't that the equivalent of what I fed Desmos
> > with? Tx
>
> No, it's not.
>
> Duncan Murdoch
>
> >
> > On Wed, Mar 17, 2021 at 11:31 AM Duncan Murdoch
> > <[hidden email]> wrote:
> >>
> >> On 17/03/2021 5:41 a.m., Luigi Marongiu wrote:
> >>> Hello,
> >>> I have a dataset from a polymerase chain reaction. I am using the
> >>> equation given by Rutledge
> >>> (https://pubmed.ncbi.nlm.nih.gov/15601990/) but the profile I get in R
> >>> does not match the data. I ran the same thing in Desmos and instead
> >>> the profile is correct (attached).
> >>> Why do I not get the same matching model as in Desmos? I believe the
> >>> formula in R is the same as the one in Desmos, and I am using the same
> >>> parameters.
> >>> Is there a procedure to debug models?
> >>> Thanks
> >>>
> >>> Here is the code:
> >>> ```
> >>> high <- c(120.64, 66.14, 34.87, 27.11, 8.87, -5.8, 4.52, -7.16, -17.39,
> >>>          -14.29, -20.26, -14.99, -21.05, -20.64, -8.03, -21.56, -1.28, 15.01,
> >>>          75.26, 191.76, 455.09, 985.96, 1825.59, 2908.08, 3993.18, 5059.94,
> >>>          6071.93, 6986.32, 7796.01, 8502.25, 9111.46, 9638.01, 10077.19,
> >>>          10452.02, 10751.81, 11017.49, 11240.37, 11427.47, 11570.07, 11684.96,
> >>>          11781.77, 11863.35, 11927.44, 11980.81, 12021.88)
> >>> plot(1:45, high, type = "l")
> >>> rutledge <- function(p, x) {
> >>>     m = p$half_fluorescence
> >>>     s = p$slope
> >>>     M = p$max_fluorescence
> >>>     B = p$back_fluorescence
> >>>     y = (M / ( 1 + exp(-(x-m)/s)) ) + B
> >>>     return(y)
> >>> }
> >>> desmos <- rutledge(list(half_fluorescence = 27.1102, slope = 2.76798,
> >>>                           max_fluorescence = 11839.8, back_fluorescence
> >>> = -138.864) , high)
> >>>
> >>> points(1:45, desmos, type="l", col="blue")
> >>
> >>
> >> In your calculation of desmos, you are using the Y variable for x in the
> >> formula.  Calculate it this way instead:
> >>
> >> desmos <- rutledge(list(half_fluorescence = 27.1102, slope = 2.76798,
> >>                             max_fluorescence = 11839.8, back_fluorescence
> >>    = -138.864) , 1:45)
> >>
> >> Duncan Murdoch
> >>
> >
> >
>


--
Best regards,
Luigi

______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: modelling 4-parameter curve in R does not match data - how to proceed?

Duncan Murdoch-2
On 17/03/2021 12:37 p.m., Luigi Marongiu wrote:
> sorry, I don't get it...

Modify your rutledge function to print x, and you'll see the values of
high printed.  x should be 1:45.

Duncan Murdoch

>
> On Wed, Mar 17, 2021 at 2:35 PM Duncan Murdoch <[hidden email]> wrote:
>>
>> On 17/03/2021 6:59 a.m., Luigi Marongiu wrote:
>>> yes, but in `rutledge` I model y as `y = (M / ( 1 + exp(-(x-m)/s)) ) +
>>> B`, with x being 1:45. Isn't that the equivalent of what I fed Desmos
>>> with? Tx
>>
>> No, it's not.
>>
>> Duncan Murdoch
>>
>>>
>>> On Wed, Mar 17, 2021 at 11:31 AM Duncan Murdoch
>>> <[hidden email]> wrote:
>>>>
>>>> On 17/03/2021 5:41 a.m., Luigi Marongiu wrote:
>>>>> Hello,
>>>>> I have a dataset from a polymerase chain reaction. I am using the
>>>>> equation given by Rutledge
>>>>> (https://pubmed.ncbi.nlm.nih.gov/15601990/) but the profile I get in R
>>>>> does not match the data. I ran the same thing in Desmos and instead
>>>>> the profile is correct (attached).
>>>>> Why do I not get the same matching model as in Desmos? I believe the
>>>>> formula in R is the same as the one in Desmos, and I am using the same
>>>>> parameters.
>>>>> Is there a procedure to debug models?
>>>>> Thanks
>>>>>
>>>>> Here is the code:
>>>>> ```
>>>>> high <- c(120.64, 66.14, 34.87, 27.11, 8.87, -5.8, 4.52, -7.16, -17.39,
>>>>>           -14.29, -20.26, -14.99, -21.05, -20.64, -8.03, -21.56, -1.28, 15.01,
>>>>>           75.26, 191.76, 455.09, 985.96, 1825.59, 2908.08, 3993.18, 5059.94,
>>>>>           6071.93, 6986.32, 7796.01, 8502.25, 9111.46, 9638.01, 10077.19,
>>>>>           10452.02, 10751.81, 11017.49, 11240.37, 11427.47, 11570.07, 11684.96,
>>>>>           11781.77, 11863.35, 11927.44, 11980.81, 12021.88)
>>>>> plot(1:45, high, type = "l")
>>>>> rutledge <- function(p, x) {
>>>>>      m = p$half_fluorescence
>>>>>      s = p$slope
>>>>>      M = p$max_fluorescence
>>>>>      B = p$back_fluorescence
>>>>>      y = (M / ( 1 + exp(-(x-m)/s)) ) + B
>>>>>      return(y)
>>>>> }
>>>>> desmos <- rutledge(list(half_fluorescence = 27.1102, slope = 2.76798,
>>>>>                            max_fluorescence = 11839.8, back_fluorescence
>>>>> = -138.864) , high)
>>>>>
>>>>> points(1:45, desmos, type="l", col="blue")
>>>>
>>>>
>>>> In your calculation of desmos, you are using the Y variable for x in the
>>>> formula.  Calculate it this way instead:
>>>>
>>>> desmos <- rutledge(list(half_fluorescence = 27.1102, slope = 2.76798,
>>>>                              max_fluorescence = 11839.8, back_fluorescence
>>>>     = -138.864) , 1:45)
>>>>
>>>> Duncan Murdoch
>>>>
>>>
>>>
>>
>
>

______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: modelling 4-parameter curve in R does not match data - how to proceed?

Luigi
Oh, I got it! I was sending the fluorescence instead of the cycles x.
Thank you

```
desmos <- rutledge(list(half_fluorescence = 27.1102, slope = 2.76798,
                        max_fluorescence = 11839.8, back_fluorescence
= -138.864) , 1:45)
```

On Wed, Mar 17, 2021 at 8:58 PM Duncan Murdoch <[hidden email]> wrote:

>
> On 17/03/2021 12:37 p.m., Luigi Marongiu wrote:
> > sorry, I don't get it...
>
> Modify your rutledge function to print x, and you'll see the values of
> high printed.  x should be 1:45.
>
> Duncan Murdoch
>
> >
> > On Wed, Mar 17, 2021 at 2:35 PM Duncan Murdoch <[hidden email]> wrote:
> >>
> >> On 17/03/2021 6:59 a.m., Luigi Marongiu wrote:
> >>> yes, but in `rutledge` I model y as `y = (M / ( 1 + exp(-(x-m)/s)) ) +
> >>> B`, with x being 1:45. Isn't that the equivalent of what I fed Desmos
> >>> with? Tx
> >>
> >> No, it's not.
> >>
> >> Duncan Murdoch
> >>
> >>>
> >>> On Wed, Mar 17, 2021 at 11:31 AM Duncan Murdoch
> >>> <[hidden email]> wrote:
> >>>>
> >>>> On 17/03/2021 5:41 a.m., Luigi Marongiu wrote:
> >>>>> Hello,
> >>>>> I have a dataset from a polymerase chain reaction. I am using the
> >>>>> equation given by Rutledge
> >>>>> (https://pubmed.ncbi.nlm.nih.gov/15601990/) but the profile I get in R
> >>>>> does not match the data. I ran the same thing in Desmos and instead
> >>>>> the profile is correct (attached).
> >>>>> Why do I not get the same matching model as in Desmos? I believe the
> >>>>> formula in R is the same as the one in Desmos, and I am using the same
> >>>>> parameters.
> >>>>> Is there a procedure to debug models?
> >>>>> Thanks
> >>>>>
> >>>>> Here is the code:
> >>>>> ```
> >>>>> high <- c(120.64, 66.14, 34.87, 27.11, 8.87, -5.8, 4.52, -7.16, -17.39,
> >>>>>           -14.29, -20.26, -14.99, -21.05, -20.64, -8.03, -21.56, -1.28, 15.01,
> >>>>>           75.26, 191.76, 455.09, 985.96, 1825.59, 2908.08, 3993.18, 5059.94,
> >>>>>           6071.93, 6986.32, 7796.01, 8502.25, 9111.46, 9638.01, 10077.19,
> >>>>>           10452.02, 10751.81, 11017.49, 11240.37, 11427.47, 11570.07, 11684.96,
> >>>>>           11781.77, 11863.35, 11927.44, 11980.81, 12021.88)
> >>>>> plot(1:45, high, type = "l")
> >>>>> rutledge <- function(p, x) {
> >>>>>      m = p$half_fluorescence
> >>>>>      s = p$slope
> >>>>>      M = p$max_fluorescence
> >>>>>      B = p$back_fluorescence
> >>>>>      y = (M / ( 1 + exp(-(x-m)/s)) ) + B
> >>>>>      return(y)
> >>>>> }
> >>>>> desmos <- rutledge(list(half_fluorescence = 27.1102, slope = 2.76798,
> >>>>>                            max_fluorescence = 11839.8, back_fluorescence
> >>>>> = -138.864) , high)
> >>>>>
> >>>>> points(1:45, desmos, type="l", col="blue")
> >>>>
> >>>>
> >>>> In your calculation of desmos, you are using the Y variable for x in the
> >>>> formula.  Calculate it this way instead:
> >>>>
> >>>> desmos <- rutledge(list(half_fluorescence = 27.1102, slope = 2.76798,
> >>>>                              max_fluorescence = 11839.8, back_fluorescence
> >>>>     = -138.864) , 1:45)
> >>>>
> >>>> Duncan Murdoch
> >>>>
> >>>
> >>>
> >>
> >
> >
>


--
Best regards,
Luigi

______________________________________________
[hidden email] 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.