Programming the statistical procedures from SAS

Regression analysis

Reply
New Contributor
Posts: 2

Regression analysis

Hello group, first post,

I have one physiological outcome variable and 3 independent variables that I have measured in different conditions on the same subjects. Physiologically, my 3 dependent variables should be able to explain all of the outcome, so in linear regression, my model would look like this (without intercept):

outcome = a*V1 + b*V2 + c*V3, with V1-3 being my independent variables.

So far, pretty simple. However, for interpretation I would like/need to constrain a, b, c to >0 & <1, and that their sum should always be 1.

I've tried in NLMIXED:

proc nlmixed data=final;

bounds

a > 0, b > 0, a < 1, b < 1;

parameters

a = .3

b = .3

;

c = (1-a-b);

pred = a*V1 + b*V2 + c*V3;

model outcome ~ normal(pred,5);

run;

All variables, including outcome, are continues between 0 and 100. They are a measure of hemoglobin saturation.

However, this doesn't include subject-subject variation (random effect) and I don't get an estimate of c (fair enough).

Any help out there? Thanks. Peter

Respected Advisor
Posts: 2,655

Re: Regression analysis

You won't get an estimate for c under this parameterization, as V3 is a linear combination of V1 and V2.  As far as adding in a subject effect, see the first example in Getting Started: NLMIXED Procedure.  It is for nonlinear growth curves with gaussian data, but the principles for adding in a subject effect are clearly outlined.  You might actually end up with an estimate for c under this model, but it would represent sampling differences more than anything else--it still represents a fully collinear combination of V1 and V2 under the boundary conditions.

Good luck.

Steve Denham

New Contributor
Posts: 2

Re: Regression analysis

Dear Steve, thanks for you reply. I may have misunderstood your reply or maybe not phrased my question clearly. For that I apologise. The idea is to fit a model where V1-3 can fully explain the outcome variable so as far as my thinking goes, a+b+c = 1 is a requirement of the model. I do still get the same estimates for a, b and c if I replace "c = 1-a-b" with e.g "a = 1-b-c". Where is the flaw in my logic/thinking? Anyway, here is two examples of my code. The proc model I am fairly confident in but I am not sure I am adding the random effect the right way in proc nlmixed.

title 'NIRO, arterial, venous, and skin contribution, without intercept';

proc model data=final;

      ods output ParameterEstimates=NIROnoint;

      bounds a > 0, a < 1, b > 0, b < 1;

      parameters a = 0.50 b = 0.20;

      c = 1-a-b;

      niro_toi = a*sao2 + b*sjvo2 + c*moor_so2;

      fit niro_toi;

      estimate 'Arterial' a, 'Venous' b, 'Skin' c;

run;

title 'NIRO, random effects model, arterial, venous, and skin contribution, without intercept';

proc nlmixed data=final ;

      bounds a > 0, b > 0, a < 1, b < 1;

      parameters a = .5 b = .25 sd1 = 110 sd2 = 0.03;

      c = 1-a-b;

      pred = (a*sao2 + b*sjvo2 + c*moor_so2)*r;

      model niro_toi ~ normal(pred,sd1);

      random r ~ normal(1,sd2) subject=subject;

      estimate 'Arterial' a;

      estimate 'Venous' b;

      estimate 'Skin' c;

run;

Respected Advisor
Posts: 2,655

Re: Regression analysis

That is an interesting parameterization in the NLMIXED code--multiplying by a random effect.  Most of the models I have seen involve additive random effects around the parameters. My brain thinks of the additive pretty easily--the subjects come from a population with a multivariate normal distribution for the parameters, with variances for each and covariances between them.  Could you present a motivation for the multiplicative effect?

Given this approach, you may think about doing some recoding to force the multiplier to be consistently positive. Do a  search on the SAS-L listserv:archives for NLMIXED, and look particularly for articles by Dale McLerran.  He has several where log and exp transforms are used to constrain parameters to positive values.

Steve Denham

Respected Advisor
Posts: 4,742

Re: Regression analysis

You will require some luck to get a c value greater than 0 with those programs. It would be safer to add the restriction a + b < 1 to the proc model statements. For nlmixed you will have to rely on luck or more complicated programming Smiley Happy. I think you are not likely to get stable estimates of sd1 and sd2, unless you have many observations per subject.

PG

PG
Ask a Question
Discussion stats
  • 4 replies
  • 268 views
  • 0 likes
  • 3 in conversation