## Example 4 for PROC GAMPL

```/****************************************************************/
/*          S A S   S A M P L E   L I B R A R Y                 */
/*                                                              */
/*    NAME: hpgamex4                                            */
/*   TITLE: Example 4 for PROC GAMPL                            */
/*    DESC: fitting a nonparametric tweedie regression          */
/*     REF:                                                     */
/* PRODUCT: STAT                                                */
/*  SYSTEM: ALL                                                 */
/*    KEYS:                                                     */
/*   PROCS: GAMPL                                               */
/*                                                              */
/* SUPPORT: Weijie Cai                                          */
/****************************************************************/

title 'Nonparametric Tweedie Model';
%let phi=0.4;
%let power=1.5;

data one;
do i=1 to 1000;

/* Sample the predictors */
x1=ranuni(1);
x2=ranuni(1);
x3=ranuni(1);
x4=ranuni(1);

/* Apply nonlinear transformations to predictors */
f1=2*sin(3.14159265*x1);
f2=exp(2*x2)*0.8;
f3=0.2*x3**11*(10*(1-x3))**6+10*(10*x3)**3*(1-x3)**10;
xb=f1+f2+f3;
xb=xb/20;
mu=exp(xb);

/* Compute parameters of compound Poisson distribution */
lambda=mu**(2-&power)/(&phi*(2-&power));
alpha=(2-&power)/(&power-1);
gamma=&phi*(&power-1)*(mu**(&power-1));

/* Simulate the response */
rpoi=ranpoi(1,lambda);
if rpoi=0 then y=0;
else do;
y=0;
do j=1 to rpoi;
y=y+rangam(1,alpha);
end;
y=y*gamma;
end;
output;
end;
run;

proc genmod data=one;
model y=x1 x2 x3 x4/dist=tweedie;
run;

proc gampl data=one seed=1234;
model y=param(x1 x2 x3 x4)/dist=tweedie;
run;

proc gampl data=one seed=1234 plots;
model y=spline(x1) spline(x2) spline(x3) spline(x4)/dist=tweedie;
run;

```