BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
Barkat
Pyrite | Level 9

How can I create a graph or chart to display sensitivity and specificity with 95% confidence intervals of multiple screening tests?

 

Name of Tests Sn Sp Lower limit of 95% CI Upper limit of 95% CI
A 60% 70% 0.45  0.98
B 70% 75% 0.75 0.95
C 80% 80% 0.82 1.00
1 ACCEPTED SOLUTION

Accepted Solutions
Reeza
Super User

I don't recommend that graphic either, forest plots will definitely be nicer. 

 

data have;
informat sn sp percent.;
infile cards dlm='09'x;
input group $ sn sp sn_ll sn_ul sp_ll sp_ul;
cards;
X	60%	70%	0.45 	0.98	0.50	0.90
Y	70%	75%	0.35	0.95	0.40	0.90
Z	80%	80%	0.62	1.00	0.50	1.00
;;;;
run;

data long;
set have;
  type = "Sensitivity";
  value = sn;
  ll = sn_ll;
  ul = sn_ul;
  output;
  type = 'Specificity';
  value = sp;
  ll = sp_ll;
  ul = sp_ul;
  output;
  
  drop sn: sp:;
run;

proc sgplot data=long;
vbarparm category=group response = value / limitlower=ll limitupper=ul group=type groupdisplay=cluster;
run;


proc sgplot data=long;
highlow x=group  high=ul low = ll / group = type open =value groupdisplay = cluster;
run;

View solution in original post

11 REPLIES 11
PaigeMiller
Diamond | Level 26

What would such a chart look like? Can you point us to an example somewhere on the internet? Or draw it somehow and show us?

--
Paige Miller
Barkat
Pyrite | Level 9

I should have added two more columns to the hypothetical table. I have revised the 95% CI values to make it more realistic.

 

Name of Tests Sn Sp

Lower limit of 95% CI

for Sn

Upper limit of 95% CI

for Sn

Lower limit of 95% CI

for Sp

Upper limit of 95% CI

for Sp

X 60% 70% 0.45  0.98 0.50 0.90
Y 70% 75% 0.35 0.95 0.40 0.90
Z 80% 80% 0.62 1.00 0.50 1.00

 

Please see the graph in the link, (1) graph with error bars - Bing images

 

Think, the red and blue bars as Sn and Sp, respectively. The lines as 95% CI. d16 as Test X, d20 as Test Y, and d21 as Test Z

Reeza
Super User

I don't recommend that graphic either, forest plots will definitely be nicer. 

 

data have;
informat sn sp percent.;
infile cards dlm='09'x;
input group $ sn sp sn_ll sn_ul sp_ll sp_ul;
cards;
X	60%	70%	0.45 	0.98	0.50	0.90
Y	70%	75%	0.35	0.95	0.40	0.90
Z	80%	80%	0.62	1.00	0.50	1.00
;;;;
run;

data long;
set have;
  type = "Sensitivity";
  value = sn;
  ll = sn_ll;
  ul = sn_ul;
  output;
  type = 'Specificity';
  value = sp;
  ll = sp_ll;
  ul = sp_ul;
  output;
  
  drop sn: sp:;
run;

proc sgplot data=long;
vbarparm category=group response = value / limitlower=ll limitupper=ul group=type groupdisplay=cluster;
run;


proc sgplot data=long;
highlow x=group  high=ul low = ll / group = type open =value groupdisplay = cluster;
run;
Barkat
Pyrite | Level 9

Thanks so much! Is it possible to change color of the bars or lines for confidence intervals?

Reeza
Super User

Yes, take a look at the documentation for specifications or data attribute maps.

Barkat
Pyrite | Level 9
I can't seem to understand it. When I use fillattrs=(color=blig), it changes color of both types of bars. How can I choose two colors for two types of bars?
Reeza
Super User
You specified only one colour in the parenthesis. What happens if you specify two colours?

See discrete map example here:
https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/grstatproc/n18szqcwir8q2nn10od9hhdh2ksj.htm
Barkat
Pyrite | Level 9
It ignores the second color, if I mention two colors in the parentheses.
Reeza
Super User
proc sgplot data=long;
styleattrs datacolors=(cx9999ff cx993366);
vbarparm category=group response = value / limitlower=ll limitupper=ul group=type groupdisplay=cluster;
run;

Use STYLEATTRS but if you're missing a category you MUST use data attribute maps. 

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

Mastering the WHERE Clause in PROC SQL

SAS' Charu Shankar shares her PROC SQL expertise by showing you how to master the WHERE clause using real winter weather data.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 11 replies
  • 2861 views
  • 4 likes
  • 4 in conversation