BookmarkSubscribeRSS Feed
ph6
Obsidian | Level 7 ph6
Obsidian | Level 7
 

I am using SAS to calculate sensitivity and specificity for a diagnostic test against the golden standard. Among 300 enrolled children 32 cases have the disease and 268 cases do not have the disease. The diagnostic test for which I want to calculate the specificity has 6 positives, 288 negatives and 6 missing values.

When I use

`` proc freq data=data;
    tables Test*Response;
   run;
``

I get different values for the specificity when I impute missing values with 999 (68.8%) and when I do not impute them (100%). What is the right approach? How missing values will influence on the specificity calculations ?

 

Here is my data:

``
        test response
  [1,]    0    0
  [2,]    0    0
  [3,]    1    1
  [4,]    0    0
  [5,]    0    0
  [6,]    0    0
  [7,]    1    1
  [8,]    0    0
  [9,]    0    0
 [10,]    0    0
 [11,]    0    0
 [12,]    1    1
 [13,]    0    0
 [14,]    0    0
 [15,]    0    0
 [16,]    0    0
 [17,]    0    0
 [18,]    0    0
 [19,]    0    0
 [20,]    0    0
 [21,]    0    0
 [22,]    1    1
 [23,]    0    0
 [24,]    0    0
 [25,]    0    0
 [26,]    0    0
 [27,]    0    0
 [28,]    0    0
 [29,]    0    0
 [30,]    0    0
 [31,]    0    1
 [32,]    0    0
 [33,]    0    0
 [34,]   NA    0
 [35,]    0    0
 [36,]    0    0
 [37,]    0    0
 [38,]    0    0
 [39,]   NA    1
 [40,]    0    0
 [41,]    1    1
 [42,]    0    0
 [43,]    0    0
 [44,]    0    1
 [45,]    0    0
 [46,]    1    1
 [47,]    0    0
 [48,]    0    0
 [49,]    0    0
 [50,]    0    1
 [51,]    0    0
 [52,]    0    0
 [53,]   NA    0
 [54,]    0    0
 [55,]    0    0
 [56,]    0    0
 [57,]    0    0
 [58,]    0    0
 [59,]    1    1
 [60,]    0    0
 [61,]    1    1
 [62,]    0    0
 [63,]    0    0
 [64,]    0    0
 [65,]    0    0
 [66,]    1    1
 [67,]    0    0
 [68,]    0    0
 [69,]    0    0
 [70,]    0    0
 [71,]    0    0
 [72,]    0    0
 [73,]    0    0
 [74,]    0    0
 [75,]    0    0
 [76,]    0    0
 [77,]    0    0
 [78,]    0    0
 [79,]    0    0
 [80,]    0    0
 [81,]    0    0
 [82,]    0    0
 [83,]    1    1
 [84,]    0    0
 [85,]    0    0
 [86,]    0    0
 [87,]   NA    1
 [88,]    0    0
 [89,]    0    0
 [90,]    0    0
 [91,]    0    0
 [92,]    0    0
 [93,]    0    0
 [94,]    0    0
 [95,]    0    0
 [96,]    0    0
 [97,]    0    0
 [98,]    0    0
 [99,]    0    0
[100,]    0    0
[101,]    0    0
[102,]    0    0
[103,]    0    0
[104,]    0    0
[105,]    0    0
[106,]    0    0
[107,]    0    0
[108,]    0    0
[109,]    0    0
[110,]    0    0
[111,]    0    0
[112,]    0    0
[113,]    0    0
[114,]    0    0
[115,]    0    0
[116,]    0    0
[117,]    0    0
[118,]    0    0
[119,]    0    0
[120,]    0    0
[121,]    0    0
[122,]    0    0
[123,]    0    0
[124,]    0    0
[125,]    1    1
[126,]    0    0
[127,]    0    0
[128,]    0    0
[129,]    0    0
[130,]    0    0
[131,]    0    0
[132,]    0    0
[133,]    0    0
[134,]    0    0
[135,]    0    0
[136,]    1    1
[137,]    0    0
[138,]    1    1
[139,]    0    0
[140,]    0    0
[141,]    0    0
[142,]    0    0
[143,]    0    0
[144,]    0    0
[145,]    0    0
[146,]    0    0
[147,]    0    0
[148,]    0    0
[149,]    0    0
[150,]    0    0
[151,]    1    1
[152,]    1    1
[153,]    0    0
[154,]    0    0
[155,]    0    0
[156,]    1    1
[157,]    0    0
[158,]    0    0
[159,]    0    0
[160,]    0    0
[161,]    0    0
[162,]    0    0
[163,]    0    0
[164,]    0    0
[165,]    0    0
[166,]    0    0
[167,]    0    0
[168,]    0    0
[169,]    0    0
[170,]    0    0
[171,]    1    1
[172,]    0    0
[173,]    0    0
[174,]    0    0
[175,]    0    0
[176,]    0    0
[177,]    0    0
[178,]    0    0
[179,]    0    0
[180,]    0    0
[181,]    0    0
[182,]    0    0
[183,]    0    0
[184,]    0    0
[185,]    0    0
[186,]    0    0
[187,]    0    0
[188,]    1    1
[189,]    0    0
[190,]    0    0
[191,]    0    0
[192,]    0    0
[193,]    0    1
[194,]    0    0
[195,]    0    0
[196,]    0    0
[197,]    0    1
[198,]   NA    0
[199,]    1    1
[200,]    0    0
[201,]    0    0
[202,]    0    0
[203,]    0    0
[204,]    0    1
[205,]    0    0
[206,]    0    0
[207,]    0    0
[208,]    0    0
[209,]    0    0
[210,]    0    0
[211,]    0    0
[212,]    0    0
[213,]   NA    0
[214,]    0    0
[215,]    0    0
[216,]    0    0
[217,]    0    0
[218,]    0    0
[219,]    0    0
[220,]    0    0
[221,]    0    0
[222,]    0    0
[223,]    0    0
[224,]    0    0
[225,]    0    0
[226,]    0    0
[227,]    0    0
[228,]    0    0
[229,]    0    0
[230,]    0    0
[231,]    0    0
[232,]    0    0
[233,]    0    0
[234,]    1    1
[235,]    1    1
[236,]   NA    0
[237,]    0    0
[238,]    0    0
[239,]    0    0
[240,]    0    0
[241,]    0    0
[242,]    0    0
[243,]    0    0
[244,]    0    0
[245,]    0    0
[246,]    0    0
[247,]    0    0
[248,]    0    0
[249,]    0    0
[250,]    0    0
[251,]    0    0
[252,]    0    0
[253,]    0    0
[254,]    0    0
[255,]    0    0
[256,]    0    0
[257,]    0    0
[258,]    0    0
[259,]    0    0
[260,]    1    1
[261,]    0    0
[262,]    0    0
[263,]    0    0
[264,]    0    0
[265,]    0    0
[266,]    0    0
[267,]    0    0
[268,]    0    0
[269,]    0    0
[270,]    0    0
[271,]    0    0
[272,]   NA    1
[273,]    0    0
[274,]    0    0
[275,]    0    0
[276,]    0    0
[277,]    0    0
[278,]    0    0
[279,]    0    0
[280,]    0    0
[281,]    0    0
[282,]    0    0
[283,]    0    0
[284,]    0    1
[285,]    0    0
[286,]    0    0
[287,]    0    0
[288,]    0    0
[289,]    0    0
[290,]    0    0
[291,]    0    0
[292,]    0    0
[293,]    0    0
[294,]    0    0
[295,]    0    0
[296,]    0    0
[297,]   NA    0
[298,]    0    0
[299,]    0    0
[300,]    0    0
5 REPLIES 5
Haris
Lapis Lazuli | Level 10
I don't think there is a 'right approach'. I would describe the data including the reasons for missingness and then report both: the number of cases correctly identified by the test both including and excluding the missing cases. What is the right number to use will depend on the reasons for missingness and the intended uses of the summary.
ph6
Obsidian | Level 7 ph6
Obsidian | Level 7
Thanks for your reply, the reason for the missingness is that the test hasn't been achieved from those samples.
Rick_SAS
SAS Super FREQ

What do you mean by "when I impute missing values with 999 (68.8%)."  Can you show the code you are using?

 

ph6
Obsidian | Level 7 ph6
Obsidian | Level 7

I am using the following code to impute the missing values with 999.

 

data lab_results1;
set lab_results;
array Nums[*] _numeric_;
do i = 1 to dim(Nums);
if Nums[i] = . then Nums[i] = 999;
end;
run;

Tom
Super User Tom
Super User

So you replaced the missing values with the value 999? Why?

 

Note that if you are using PROC FREQ you can just use the / MISSING option on the TABLES statement to have it include the missing values when generating the cross-tab.

 

tables Test*Response / missing;

 

If you have the 999 values instead of missing value and you want to exclude them then add a WHERE clause to your PROC FREQ step.

where test ne 999 and response ne 999;
tables Test*Response ;

 

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 16. Read more here about why you should contribute and what is in it for you!

Submit your idea!

What is ANOVA?

ANOVA, or Analysis Of Variance, is used to compare the averages or means of two or more populations to better understand how they differ. Watch this tutorial for more.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 5 replies
  • 894 views
  • 0 likes
  • 4 in conversation