Programming the statistical procedures from SAS

How can I calculate Stabilized Inverse Probability weights?

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 10
Accepted Solution

How can I calculate Stabilized Inverse Probability weights?

Hello,

 

I need to use stabilized IP weights for my analysis because of the large weights I get when I use the regular IPW (due to large variance). I calculated the regular IPW using the following code:

 

*Calculating probability of participation/no drop out given covariates;

proc logistic data=ipw ;
class gender race income education smoking BMIcat ;
model responder = gender race income education smoking BMIcat;
output out=weights predicted=prob;
run;

*Computing inverse weights;

data inverseweights;
set weights;
if responder=1 then ipw = 1/prob;
if responder=0 then ipw=1/(1-prob);  run;

 

*Merging dataset containing inverse weights with full dataset;

data weight.ipwanalysis;
merge inverseweights fulldataset (in=a);
if a;  by id;  run;

 

*Final Adjusted model weighted by IPW;

proc glm data=ipwanalysis ;
class bmicat race;
model FinalScore=bmicat race age;
weight ipw;
lsmeans bmicat/ stderr pdiff cl; run;  quit;

 

How can I calculate and use Stabilized Inverse Probability Weights (instead of regular IPW) so that I can weight the mean differences I get from my final adjusted model (proc glm). I appreciate any help you can offer


Accepted Solutions
Solution
‎04-19-2018 10:03 AM
Esteemed Advisor
Posts: 5,521

Re: How can I calculate Stabilized Inverse Probability weights?

Try replacing your second step with:

 

proc sql;
create table marginalWeights as
select 
    sum(responder) / count(responder) as marginalWeight
from weights;

create table inverseWeights as
select 
    *,
    case responder
        when 1 then marginalWeight / prob
        when 0 then (1 - marginalWeight) / (1-prob)
        else .
        end as ipw
from weights, marginalWeights
order by id;

quit;

(untested)

 

PG

View solution in original post


All Replies
Solution
‎04-19-2018 10:03 AM
Esteemed Advisor
Posts: 5,521

Re: How can I calculate Stabilized Inverse Probability weights?

Try replacing your second step with:

 

proc sql;
create table marginalWeights as
select 
    sum(responder) / count(responder) as marginalWeight
from weights;

create table inverseWeights as
select 
    *,
    case responder
        when 1 then marginalWeight / prob
        when 0 then (1 - marginalWeight) / (1-prob)
        else .
        end as ipw
from weights, marginalWeights
order by id;

quit;

(untested)

 

PG
☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 1 reply
  • 160 views
  • 1 like
  • 2 in conversation