Thank you. Sorry for the cyc variable, I simplified in 35 in the first
call but not in the second. The actual value would be
```
df = data.frame(Cycles = 1:35, Values = val[1:35)
```
I'll try your suggestion.
Best regards

On Fri, Apr 11, 2025 at 8:05 PM Duncan Murdoch <murdoch.dun...@gmail.com> wrote:
>
> Your example doesn't run because it uses a variable `cyc` which you
> didn't include.
>
> But in general, I think you are mixing up two separate problems here.
>
> The first problem is creating a function of x (which is Cycles in your
> dataset).  You used the predictions from a glm() to do this.
>
> That's a reasonable way to create a function with a range of 0 to 1, but
> you want a function with a different range.  Dividing by the max is one
> way to get it, but there are others.  I'd say a better approach would be
> to think about the problem from a subject matter point of view and
> determine a class of functions that match your needs.  After you've done
> that, you might use glm() to find the particular version of that
> function (i.e. the unknown parameters), or maybe some other method.
>
> The second problem is finding where that function intersects a line.  In
> your sample code, you were trying to intersect a horizontal line.  If
> that's always the case, then it's a problem of inverting the function
> from the first problem.  Just write out y = f(x) and solve for x =
> f^-1(y).  If the formula isn't convenient, you can approximate the
> answer using the R function uniroot().
>
> Duncan Murdoch
>
> On 2025-04-11 11:53 a.m., Luigi Marongiu wrote:
> > I am trying to predict the intersection value between a curve and a line.
> > I can fit a logistic model to the data by converting the data to the
> > range 0-1. How can I determine the intersection with a line?
> > Also, is there a way to do the same without converting the data?
> > Here is an example:
> >
> > ```
> > val = 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,
> >   12058.35,    12100.63,
> >         12133.57,    12148.89,    12137.09)
> > df = data.frame(Cycles = 1:35, Values = val[1:cyc])
> > M = max(df$Values)
> > df$Norm = df$Values/M
> > df$Norm[df$Norm<0] = 0
> > b_model = glm(Norm ~ Cycles, data=df, family=binomial)
> > x = 0.15
> > plot(Norm ~ Cycles, df, main="Normalized view",
> >       xlab=expression(bold("Amplification cycle")),
> >       ylab=expression(bold("Fluorescence (normalized)")),
> >       type="l", lwd=3, col="blue")
> > lines(b_model$fitted.values ~ df$Cycles, col="red", lwd=2, lty=2)
> > abline(h=x, col="green", lwd=2)
> > ```
> > Thank you
> >
> > ______________________________________________
> > 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 
> > https://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
>


-- 
Best regards,
Luigi

______________________________________________
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 https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to