- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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)
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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)