I have two function modules VCE and VCM that differs only in the way M is computed and an additional argument CLUSTER. How can I create a single function module that can handle both computations of M?
Thanks,
Raphael
start vce(y,x,b0,b1,p1,p2,v);
... statements here ...
v = (dg(eta,p2)#dg(xb,p1)#(w-mu)/v)##2;
D = diag(v);
M = t(X)*D*X;
return(M);
finish vce;
start vcm(cluster,y,x,b0,b1,p1,p2,v);
... statements here ...
M = J(p,p,0);
v = (dg(eta,p2)#dg(xb,p1)#(w-mu)/v)##2;
uClx = unique(Cluster);
do j = 1 to ncol(uClx);
dx = loc(Cluster = uClx);
M = M + t(X[dx,])*v[dx]*t(v[dx])*X[dx,];
end;
return(M);
finish vce;