From: <Bill.Venables_at_csiro.au>

Date: Sun 17 Apr 2005 - 13:36:32 EST

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide!

http://www.R-project.org/posting-guide.html

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Sun Apr 17 13:40:35 2005

Date: Sun 17 Apr 2005 - 13:36:32 EST

This is how I'd write the formula for use with nls/nlme:

y ~ b41*(x - 1) + b42*(x^2 - 1) + ifelse((a41 - x) >= 0, b43*(a41 - x)^2, 0) + ifelse((a42 - x) >= 0, b44*(a42 - x)^2, 0)

This is a direct translation from your funny foreign-looking code below that probably makes it clear what's going on. A more swish R form might be

y ~ b41*(x - 1) + b42*(x^2 - 1) +

b43*pmax(a41 - x, 0)^2 + b44*pmax(a42 - x, 0)^2

You mention nlm, too. Here you would use a function rather than a formula, but the idea is the same.

V.

-----Original Message-----

From: r-help-bounces@stat.math.ethz.ch

[mailto:r-help-bounces@stat.math.ethz.ch] On Behalf Of andy
Sent: Sunday, 17 April 2005 1:09 PM

To: r-help@stat.math.ethz.ch

Subject: [R] nls segmented model with unknown joint points

proc nlin data=Stems.Trees;

params b41=-3 b42=1.5 b43=-1.5 b44=50 a41=0.75 a42=0.1;

term1 = (b41*(x - 1) + b42*(x**2 -1));

if (a41 - x) >= 0 then

term2 = (b43*(a41 - x)**2);

else

term2 = 0;

if (a42 - x) >=0 then

term3 = (b44*(a42 - x)**2);

else

term3 = 0;

model y = term1+term2+term3;

run;

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide!

http://www.R-project.org/posting-guide.html

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Sun Apr 17 13:40:35 2005

*
This archive was generated by hypermail 2.1.8
: Fri 03 Mar 2006 - 03:31:13 EST
*