[R] Great difference for piecewise linear function between R and SAS
Duncan Murdoch
murdoch at stats.uwo.ca
Mon Mar 24 10:48:13 CET 2008
On 24/03/2008 5:23 AM, zhijie zhang wrote:
> Dear Rusers,
> I am now using R and SAS to fit the piecewise linear functions, and what
> surprised me is that they have a great differrent result. See below.
You're using different bases. Compare the predictions, not the
coefficients.
To see the bases that R uses, do this:
matplot(distance, bs(distance,degree=1,knots=c(16.13,24)))
matplot(y, bs(y,degree=1,knots=c(-0.4357,-0.3202)))
Duncan Murdoch
> #R code--Knots for distance are 16.13 and 24, respectively, and Knots for y
> are -0.4357 and -0.3202
> m.glm<-glm(mark~x+poly(elevation,2)+bs(distance,degree=1,knots=c(16.13,24))
> +bs(y,degree=1,knots=c(-0.4357,-0.3202
> )),family=binomial(logit),data=point)
> summary(m.glm)
>
> Coefficients:
> Estimate Std. Error z
> value Pr(>|z|)
> (Intercept) 12.104 3.138
> 3.857 0.000115 ***
> x 5.815 1.987
> 2.926 0.003433 **
> poly(elevation, 2)1 6.654 4.457
> 1.493 0.135444
> poly(elevation, 2)2 -6.755 3.441 -
> 1.963 0.049645 *
> bs(distance, degree = 1, knots = c(16.13, 24))1 -1.291 1.139 -
> 1.133 0.257220
> bs(distance, degree = 1, knots = c(16.13, 24))2 -10.348 2.025 -
> 5.110 3.22e-07 ***
> bs(distance, degree = 1, knots = c(16.13, 24))3 -3.530 3.752 -
> 0.941 0.346850
> bs(y, degree = 1, knots = c(-0.4357, -0.3202))1 -6.828 1.836 -
> 3.719 0.000200 ***
> bs(y, degree = 1, knots = c(-0.4357, -0.3202))2 -4.426 1.614 -
> 2.742 0.006105 **
> bs(y, degree = 1, knots = c(-0.4357, -0.3202))3 -11.216 2.861 -
> 3.920 8.86e-05 ***
>
> #SAS codes
> data b;
> set a;
> if distance > 16.13 then d1=1; else d1=0;
> distance2=d1*(distance - 16.13);
> if distance > 24 then d2=1; else d2=0;
> distance3=d2*(distance - 24);
> if y>-0.4357 then dd1=1; else dd1=0;
> y2=dd1*(y+0.4357);
> if y>-0.3202 then dd2=1; else dd2=0;
> y3=dd2*(y+0.3202);
> run;
>
> proc logistic descending data=b;
> model mark =x elevation elevation*elevation distance distance2 distance3 y
> y2 y3;
> run;
>
>
> The LOGISTIC Procedure Analysis of Maximum Likelihood
> Estimates
>
> Standard Wald
> Parameter DF Estimate Error
> Chi-Square Pr > ChiSq
>
> Intercept 1 -2.6148 2.1445
> 1.4867
> 0.2227
> x 1 5.8146 1.9872
> 8.5615
> 0.0034
> elevation 1 0.4457 0.1506
> 8.7545
> 0.0031
> elevation*elevation 1 -0.0279 0.0142
> 3.8533
> 0.0496
> distance 1 -0.1091 0.0963
> 1.2836
> 0.2572
> distance2 1 -1.0418 0.2668
> 15.2424
> <.0001
> distance3 1 2.8633 0.7555
> 14.3625
> 0.0002
> y 1 -16.2032 4.3568
> 13.8314
> 0.0002
> y2 1 36.9974 10.3219
> 12.8476
> 0.0003
> y3 1 -58.4938 14.0279
> 17.3875
> <.0001
> Q: What is the problem? which one is correct for the piecewise linear
> function?
> Thanks very much.
>
>
More information about the R-help
mailing list