[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: svy and pweight postestimation tools

From   Steven Samuels <>
Subject   Re: st: svy and pweight postestimation tools
Date   Sun, 18 Jan 2009 13:49:32 -0500


I think that the legitimacy is "obvious" from inspection of the formulas for weighted data. Still, here's a demonstration that - lroc- with frequency weights produces the same area under the ROC curve as a properly probability weighted estimate. I computed probability-weighted versions of the ROC and AUC with Roger Newson's programs -somersd- and -senspec-, available at SSC. -somersd- computes the AUC (he calls it the "c" statistic); and -senspec- produces sensitivities and specificities for all cut points. Both take pweights and -somersd- will take a cluster variable, so that you can compute a proper CI for the area under the curve. I had to add a zero-zero point to Roger's results before plotting. If you want to completely satisfy your committee, just use the probability-weighted versions. Be sure to zap gremlins before trying this code.


**************************CODE BEGINS**************************
sysuse auto,clear
* Frequency weighted analysis
logistic foreign mpg [fw=rep78]
predict phat0
lroc [fw=rep78]

* Probability weights
svyset _n [pweight=rep78]
quietly svy: logistic foreign mpg
predict phat

somersd foreign phat [pweight=rep78], tr(c)
matrix b = e(b)
local auc = b[1,1]
di   "Area under the Curve: " %6.5f `auc'

*  Graph ROC Curve with probability weights
senspec foreign phat [pweight=rep78], sensitivity(sens) specificity (spec)

** Add zero-zero to graph
tempfile t1
save `t1'
input spec sens
1 0
append using `t1'
gen ispec=1-spec

twoway (scatter sens ispec , sort(sens ispec) connect(L) mlab(mpg)) (line sens sens)
***************************CODE ENDS***************************

On Jan 17, 2009, at 5:23 PM, Carissa Moffat Miller wrote:


I was able to create the ROC curves using your advice about converting the pweights to fweights. However, now a dissertation committee member has asked me to justify (provide documentation) of the legitimacy of doing such a conversion. Is the conversion just to put the pweight in a format that will be accepted by the ROC command and artificially calling it an "fweight"?

I was not able to find this specific issue addressed in the below reference and I have not been able to find another reference. Do you have any suggested citations?


Subject: Re: st: svy and pweight postestimation tools
Date: Sun, 23 Nov 2008 12:13:01 -0500

Carissa, consider ROC curves (the classification tables are not very
useful in my experience). ROC curves show the trade-off between
sensitivity and specificity. You would usually want population
estimates of these probabilities, so ignoring the weights wouldn't be

My previous post describes how you can compute residuals. These are
inherently unweighted, because observations with the same covariate
pattern will have the same predicted value, and so have only two
values of residuals (for events and non-events). If you are
comparing mean residuals, you might choose to weight them. See Korn
& Graubard, Analysis of Health Surveys, Wiley, 1999, pp 105-115.


On Nov 23, 2008, at 10:40 AM, Carissa Moffat Miller wrote:

Steve and Joao,

Thank you for your suggestions and the information. I had
found the goodness of fit measure do file from your discussions
and thought there might be something similar for the estat clas or
residuals for svy.

All I was trying to say in my note is that the strata and
PSUs account for so little difference in the outcome that if it
were possible
to run residuals or classification tables using just pweights, I
wanted to keep
that option open. Such as:

xi: logistic aepart i.agecat i.Incomequ i.HIGHEDUC female

But it appears that I will have the same issues. Thank you
so much for your responses and help.


2008/11/22 Steven Samuels :


-help logistic postestimation- will show you which commands are
after -svy: logistic-. The -esttat clas- command is not one of
them in
Stata 9 or 10. -predict- with a -residuals- option is valid in
Stata 10.1
but not in Stata 9. You _can_ compute your own weighted survey -
of fit.

predict hat, xb
gen hat2 = hat*hat
svy: logistic aepart hat hat2 //link test is the significance
of phat2

You can also construct ROC Curves. Use -logistic- with fweights,
the survey
weights rounded to the nearest integer. See the thread at:
msg00739.html#_jmp0_ .


On Nov 21, 2008, at 11:45 AM, Carissa Moffat Miller wrote:


I am conducting logistic regression for a complex survey design
Stata version 9. I have found in your past discussions and the
user manuals
that many postestimation tests are not appropriate with svy
commands. I have
not found discussion on classification tables and residuals and
have been
unable to get the following commands to work either with an svy
command or
by just using the pweights in Stata.

I have been able to get these to work in another software
program using
the weights, but I'm concerned it isn't appropriately applied.
Can someone
tell me: 1) if these tests are appropriate with complex survey
data or just
pweights, and 2) if so,what are the commands or where would I
find them? or
3) if not appropriate, a reference I might cite?

(Note: The strata and PSUs, when analyzed separately, provide
effects almost equal to
1 so the effects in my model are almost entirely from the
weighting. So, I
could get results -except for standard errors - using just the

Cheers, Carissa

Syntax and error messages:

svyset APSU [pweight=FAWT], strata (ASTRATUM)
xi: svy: logistic aepart i.agecat i.Incomequ i.HIGHEDUC employed

estat clas

{ERROR}: invalid subcommand clas

predict r, residuals
summarize r, detail

{ERROR}: option residuals not allowed

* For searches and help try:

* For searches and help try:

Joao Ricardo Lima, D.Sc.
Fone: +553138923914
Skype: joao_ricardo_lima
* For searches and help try:

* For searches and help try:

* For searches and help try:

*   For searches and help try:

*   For searches and help try:

© Copyright 1996–2015 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index