Thanks a lot, Berwin. Unfortunately, pK1 may well be negative and as I
understand the literature it may be poorly defined as such, and also
seems to be at a boundary, since when lower is set to say rep(-4,3) pK1
is returned as -4 while pK2 and pK3 are undisturbed. Perhaps the point
is that pK1 is not carrying any information at the pH around 5. Fair
enough, I guess. Only, I believe I need stick to including all three pK
values to be in agreement with the molecular information about HEPES -
although even this is contentious. Be as it may, I wonder if not your
method might work if only we KNOW that pK1 is either positive OR
negative, in which case we have pK1 = -exp(theta1)?
Best wishes
Troels
Den 07-11-2023 kl. 05:10 skrev Berwin A Turlach:
G'day Troels,
On Mon, 6 Nov 2023 20:43:10 +0100
Troels Ring <tr...@gvdnet.dk> wrote:
Thanks a lot! This was amazing. I'm not sure I see how the conditiion
pK1 < pK2 < pK3 is enforced?
One way of enforcing such constraints (well, in finite computer
arithemtic only "<=" can be enforced) is to rewrite the parameters as:
pK1 = exp(theta1) ## only if pK1 > 0
pK2 = pK1 + exp(theta2)
pK3 = pk2 + exp(theta3)
And then use your optimiser to optimise over theta1, theta2 and theta3.
There might be better approaches depending on the specific problem.
Cheers,
Berwin
______________________________________________
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.