지역사회건강조사에서소지역추정법으로 동읍면흡연율계산. 서언 지역사회건강조사는보건소단위로주민의주요건강지표를생산하기위하여보건소별로 세이상성인 여명을층화집락추출법으로선정하여 CAPI(computer assissted personal interviewing) 를이용한조사이다. 보건소내의동읍면과주택유형을층화변수로사용하여보건소별표본크기 명을동읍면에대해서비례배분한후에동읍면내에서주택유형 ( 아파트와단독주택 ) 에대해서비례배분하고표본지점인통반리를가구수를기준으로확률비례추출법으로선정한다. 그후에선정된표본지점에서평균적으로 가구를계통추출법으로선정하고추출된조사대상가구에서는 세이상모든성인을대상으로개별방문면접조사롤통해서주민의건강실태를조사한다 ( 이계오외인, ). 보건소단위에서는일정수준의정도 (precision) 를갖는건강지표를생산하고있으나보건소내동읍면단위로주요건강지표생산의요구가많아지고있다. 동읍면단위의조사된표본규모는적게는 여명에서많게는수백명에이르고있으므로표본규모가 명이하인동읍면의흡연율과같은건강지표를전통적인통계추정법으로생산할경우에는추정치의표본분산이너무커서이용할수없으므로 Ghosh and Rao() 가설명한소지역추정법 (small area estimation) 과같은특별한추정법으로동읍면단위통계치의계산이필요하여 SAS를이용한계산방법을설명하고자한다.. 소지역추정법 표본설계당시에통계생산단위로고려되지않았으나조사후에소영역에대한통계를생산하고자할때소영역에할당된표본규모가작기때문에추정값의분산이커지게되므로이를보완하기위해서주변의조사정보를이용하거나다른 source의보조정보를이용또는모집단의통계적모형구조를이용하는추정기법을소지역추정법 (small area estimation) 이라한다 ( 이계오외인, ; Gonzalez, Placek and Scott, ). 지역사회건강조사에서도보건소단위로건강지표를산출하기위한표본설계를하 --
였으나조사완료후에소영역인동읍면단위의건강지표를안정적으로생산하기위 해서는소지역추정법을적용할필요가있으며보건소내의동읍면별건강지표를산 출하는데적용할수있는소지역추정법을설명하겠다 ( 이계오, ). () 직접추정량 ( Direct estimator) 지역사회건강조사에서수집한자료중에서동읍면별로해당되는자료만을이용하여건강지표를추정하는것이며조사된데이터세트에조사항목별로조사된사례에가중치가부여되었으므로가중값 ( ) 와관찰값 ( ) 를이용한표본설계기반의직접추정량과분산의추정식을아래와같이나타낼수있다. () 여기서, 는동읍면표본수이고는추출률과응답률을고려한승수이며 는관찰값이다. 식 () 에주어진추정량의분산추정식은식 () 로나타낼수있다. () 여기서이고, 이다. () 합성추정량 (Synthetic estimator) 보건소내동읍면별성별과연령대별주민등록인구를보조정보로사용하여동읍면별흡연율의추정치를좀더정확하게산출하는추정량이합성추정량 (synthetic estimator) 이다 ( 이계오, ; Ghosh and Rao, ). 보건소내의동읍면의사회생활환경과인구구성비를집락변수 (clustering variable) 로사용하여동읍면들을 -개의동질적인집락으로구분한후에각집락별로집락내의동읍면들은성별과연령대별로흡연율과같은건강지표가유사할것이라는가정을할수있으므로성별 * 연령대별흡연율과동읍면의주민등록인구수를결합하여동읍면의흡연율을아래와같이계산할수있다. --
() 여기서 는그룹내범주의평균추정값을, 는그룹내동읍 면, 범주의주민등록인구를, 는그룹내의범주표본수를, 는그룹내의범 주의수를의미한다. 식 () 에주어진추정량의분산의추정식은식 () 와같다. () 여기서이다. 합성추정량은일종의편향추정량이지만보건소내의동읍면별로집락화를잘했을경우에는각집락 ( 그룹 ) 내에서동읍면별로성별-연령대별범주의특성이유사하게될것이므로이경우에는편향을무시해도될것이다. 만일에편향이무시할정도가아니라면식 () 에주어진분산의추정식은식 () 의추정량의추정오차를과소추정하게될가능성이있기때문에집락화를통한그룹의구분에유의해야한다. () 복합추정량 (composite estimator) 식 () 에주어진직접추정량은불편추정량이지만표본크기가크지않기때문에표준오차가클뿐만아니라추정값이불안정하고, 식 () 에주어진합성추정량은편향을갖기때문에두추정량의문제점을보완하여보다안정된추정량을얻는방법은두추정량의가중평균형식의추정법을고려할수있다. 식 () 과식 () 에주어진추정량들의가중평균형식을복합추정량 (composite estimator) 이라하고아래와같이계산할수있다. --
() 여기서는를최소화하는가중값이되어야하므로다음과같이계산된다. () 의최적값은의평균제곱오차를최소화하는값이되어야하지만합성추정량의편향의크기가무시될정도로동읍면의집락화가잘되고직접추정량과합성추정량이서로독립이라는가정에서식 () 에의해서를계산한다. --
. SAS 이용흡연율계산 년지역사회건강조사자료를이용하여보건소내동읍면단위의흡연율을추 정하는방법을설명하기위해서앞에서설명한소지역추정법을서울시강남구 개동별흡연율계산에적용하여계산과정을설명하겠다. () 직접추정량 년에조사된강남구보건소의데이터에서 개동별표본수의분포를보면표본수가가장작은동은개포동으로 명이고가장많은동은역삼동으로 명이다. 개별로흡연율을식 () 에주어진직접추정량과식 () 에주어진분산추정식으로계산하기위해서아래와같은 SAS코드를사용하였다 (R코드프로그램은이계오 () 연구보고서참조 ). /* 서울시강남구보건소데이터구성-연령그룹및흡연여부변수생성 */ data abc.seoul_gangnam_data; set abc.chs; length age_group $. keep josa_year dong sm_a sma_z sma_z age age_group sex wt; rename dong= 읍면동 ;;\ if <=age<= then age_group="-세 "; if <=age<= then age_group="-세 "; if <=age then age_group="세이상 "; **. 현재흡연율 ( 다른조사항목변수설명은질병관리본부 () 참조 ) ========================================= 변수명 : sm_a ( 현재흡연율산출변수 ) 분석데이터변수명 : sma_z( 평생흡연여부 ) sma_z( 현재흡연여부 ) =========================================; if sma_z = then do ; if sma_z in (,) then sm_a = ; else if sma_z = then sm_a = ; end ; else if sma_z = then do ; sm_a = ; --
end ; if bogun_cd=; ( 강남구보건소코드 ) /* 서울시강남구직접추정량과분산추정 */ proc surveymeans data=abc.seoul_gangnam_data; var sm_a; ( 현재흡연율산출변수 ) domain 읍면동 ; weight wt; ( 표본설계가중치 ) ods output Domain=abc.direct_estimator; () 합성추정량 동별흡연율의합성추정량을계산하기위해서는강남구의 개동을 개의집락으로구분하고각집락별로성별 * 연령대별 (-세, -세, 세이상 ) 의흡연율을계산한다음에동별흡연율과분산을각각식 () 과식 () 를이용하여계산하는데세부적인계산과정은아래와같다. 동별 년 월말기준성별 * 연령대별주민등록인구소아구성비를계산한다. < 표 > 동별성별연령대의주민등록인구구성비 동 남 _ 세 남 _ 세 남 세이상 여 _ 세 여 _ 세 여 세이상 신사동...... 논현 동...... 논현 동...... 압구정동...... 청담동...... 삼성 동...... 삼성 동...... 대치 동...... 대치 동...... 대치 동...... 역삼 동...... 역삼 동...... --
도곡동...... 도곡동...... 개포동...... 개포동...... 개포동...... 세곡동...... 일원본동...... 일원동...... 일원동...... 수서동...... 개동을성별 * 연령대별인구구성비와흡연율등을집락화변수로사용하여 k-means 방법으로집락화한다. 개집락으로구분된결과를주민등록인구수와사 회생활환경여건의유사성등을고려하여집락구분을검토한후에확정한다. /* 서울시강남구 년성별 _ 연령대별인구구성비흡연율을통한군집분석 */ /* 데이터불러오기 */ proc import out=abc.seoul_gangnam_cluster_data datafile="d:\연구활동 \sas강의\ 서울강남구 _ 군집화데이터 " datafiel=dbms=excel replace; rage=" 서울 $ getnames=yes; mixed=no; scantext=yes; usedate=ye; scantime=yes; /*k-평균집락화 */ proc fastclus data=abc.seoul_gangnam_cluster_data maxc= out=abc.seoul_gangnam_kcluster; var 남 세남 세남_세이상여 세여 세여_세이상 ; id 읍면동 ; /* 군집엑셀로보내기 */ proc exprot data=abc.seoul_gangnam_kcluster OUTFILE= "D:\ 연구활 동 \sas 강의 \ 서울강남구 _ 군집분석 " label dbms=excel replace; --
/* 군집수정하기 */ proc import out=abc.seoul_gangnam_rcluster datafile="d:\연구활동 \sas 강의 \ 서울강남구 _ 수정군집화 " dmbs=excel replace; rage=" 서울 $" getnames=yes; mixed=no; scantext=yes; usedate=yes; scantime=yes; 개집락별로집락내의성별 * 연령대별흡연율을계산한다. /* 서울시강남구데이터에수정군집통합 */ proc sort data=abc.seoul_gangnam_data; by 읍면동 ; run proc sort data=abc.seoul_gangnam_rcluster; by 읍면동 ; run data abc.seoul_gangnam_data; merge abc.seoul_gangnam_data abc.seoul_gangnam_rcluster; by 읍면동 ; group= 수정군집 "_" sex "_" age_group; group=compress(group); proc print data=abc.seoul_gangnam_data; < 표 > 수정군집, 성별과연령대와흡연율산출변수포함데이터구조예시 OBS 읍면동 se x sma _z sma _z ag e wt age_gro up sm_a Clu ste r 수정군집 group 논현 동. - 세 - 세 논현 동. - 세 - 세 논현 동. - 세 - 세 논현 동. - 세 - 세 논현 동.. - 세 - 세 논현 동.. - 세 - 세 논현 동. - 세 - 세 논현 동. - 세 - 세 --
/* 집락내성별 * 연령대별흡연율추정치계산 */ proc surveymeans data=abc.seoul_gangnam_data mean; var sm_a; domain group; weight wt; ods output Domain=abc.com_estimator_r; < 표 > 그룹별 ( 군집, 성별과연령대 ) 현재흡연율추정치와표준오차 group Variable Mean Std Error of Mean -세 sm_a.. -세 sm_a.. 세이상 sm_a.. -세 sm_a.. -세 sm_a.. 세이상 sm_a.. -세 sm_a.. -세 sm_a.. 세이상 sm_a.. -세 sm_a.. -세 sm_a.. 세이상 sm_a -세 sm_a.. -세 sm_a.. 세이상 sm_a.. -세 sm_a.. -세 sm_a 세이상 sm_a.. 개동별흡연율의합성추정치와분산을계산한다. --
/* 집락내성별 * 연령대별흡연율추정치계산데이터준비 */ /* 서울시강남구데이터에수정군집통합 */ proc sort data=abc.seoul_gangnam_data; by 읍면동 ; run proc sort data=abc.seoul_gangnam_rcluster; by 읍면동 ; run data abc.seoul_gangnam_data; merge abc.seoul_gangnam_data abc.seoul_gangnam_rcluster; by 읍면동 ; group= 수정군집 "_" sex "_" age_group; group=compress(group); /* 서울강남구 개동별합성추정량 */ proc surveymeans data=abc.seoul_gangnam_com mean; domain 읍면동 ; var mean; weight 인구 ; ods output Domain=abc.seoul_gangnam_comestimator_mean; < 표 > 동별현재흡연율의합성추정치와표준오차 동 Mean Std Error of Mean 개포동.. 개포동.. 개포동.. 논현동.. 논현동.. 대치동.. 대치동.. 대치동.. 도곡동.. 도곡동.. 삼성동.. --
삼성동.. 세곡동.. 수서동.. 신사동.. 압구정동.. 역삼동.. 역삼동.. 일원동.. 일원동.. 일원본동.. 청담동.. /* 개동별합성추정량의분산추정 */ proc sort data=abc.seoul_gangnam_data; by group; run data abc.seoul_gangnam_comvar; merge abc.seoul_gangnam_data abc.com_estimator_r; by group; sum_wj_yj_rj=((wt*wt)*((sm_a-mean)*(sm_a-mean))); /* 그룹내 k범주의가중치의합 */ proc surveymeans data=abc.seoul_gangnam_comvar; domain group; var wt; ods output domain=abc.seoul_gangnam_comvar_; /* 그룹내 k 범주의분산을위한합 */ proc tabulate data=abc.seoul_gangnam_comvar; class group; var sum_wj_yj_rj; table group*sum_wj_yj_rj; ods output table=abc.seoul_gangnam_comvar_; --
data abc.seoul_gangnam_comvar_data; merge abc.seoul_gangnam_pop abc.seoul_gangnam_comvar_ abc.seoul_gangnam_comvar_; by group; keep 읍면동 수정군집 성별 연령그룹 인구 N Mean sum_wj_yj_rj_sum group; < 표 > 그룹별 ( 군집, 성별과연령대 ) 합성추정치의분산 OBS 읍면동 수정 군집 성별 연령그룹 인구 group N Mean (wt) sum_wj_yj_ rj_sum 신사동 - 세 - 세. 논현 동 - 세 - 세. 논현 동 - 세 - 세. 압구정동 - 세 - 세. 청담동 - 세 - 세. 삼성 동 - 세 - 세. 삼성 동 - 세 - 세. 신사동 - 세 - 세. 논현 동 - 세 - 세. 논현 동 - 세 - 세. 압구정동 - 세 - 세. 청담동 - 세 - 세. 삼성 동 - 세 - 세. 삼성 동 - 세 - 세. 신사동 세이상 세이상.. 논현 동 세이상 세이상.. 논현 동 세이상 세이상.. 압구정동 세이상 세이상.. 청담동 세이상 세이상.. proc surveymeans data=abc.seoul_gangnam_comvar_data sum; domain 읍면동 ; var 인구 ; --
ods output domain=abc.seoul_gangnam_comvar_data; proc sort data=abc.seoul_gangnam_comvar_data; by 읍면동 ; proc sort data=abc.seoul_gangnam_comvar_data; by 읍면동 ; /* 합성추정량분산추정 */ data abc.seoul_gangnam_comvar_data; merge abc.seoul_gangnam_comvar_data abc.seoul_gangnam_comvar_data; by 읍면동 ; drop varname varlabel stddev DomainLabel; Zjk= 인구 /Sum; Var=((Zjk*Zjk)/((N*(N-))*(mean*mean)))*sum_wj_yj_rj_sum; < 표 > 동별그룹별합성추정치의분산계산 OB S 읍면동 수정군집 성별 연령그룹 개포 동 - 세 개포 동 - 세 개포 동 세이상 개포 동 - 세 개포 동 - 세 개포 동 세이상 개포 동 - 세 개포 동 - 세 개포 동 세이상 인구 group N Mean sum_wj _yj_rj_s um - 세 - 세 세이상 - 세 - 세 세이상 - 세 - 세 세이상.......... Sum Zjk Var............E-.E-.E-...E- --
개포 동 - 세 - 세...E- 개포 동 - 세 - 세.. 개포 동 세이상 세이상....E- proc surveymeans data=abc.seoul_gangnam_comvar_data sum; domain 읍면동 ; var var; ods output domain=abc.seoul_gangnam_comvariance; /* 동별합성치와분산추정치의통합데이터세트 */ /* 합성추정량과분산 */ data abc.seoul_gangnam_estimator_com; merge abc.seoul_gangnam_comestimator_mean abc.seoul_gangnam_comvariance; by 읍면동 ; drop DomainLabel VarName stderr StdDev; rename mean=y_s sum=var_y_s; () 복합추정량 앞에서계산한동별흡연율의직접추정치와합성추정치를가중평균으로결합하 여복합추정치를계산하는데가중치를계산하는방법으로다음 가지를적용한다. 먼저식 () 로주어진복합추정량의평균제곱오차를최소화하는는아 래와같다. () --
최적가중값의추정값은다음식으로계산된다. () 모든소영역에공통가중값을부여하는방법으로써초기공통가중값 하여들의평균을최소화하는가중값은아래와같다. 을이용 () 각소영역에배정된표본크기에의존하는가중값은다음과같이계산된다. 그외 () 단, 는소영역의크기이며이다. 는직접추정량이며는합성추정량의기여도를조정하는값이므로주관적으로결정한값이다. 예를들어캐나다노동력통계조사에서는 = /을사용하므로본계산에서도 = /을사용한다 (Singh, Gambino and Mantel, ). 위에서주어진 종의가중치별로동별흡연율의복합추정치를계산한후에적 합한추정방법을선택할것이며복합추정치의세부계산절차는아래와같다. 개동별로계산된직접추정치 (Y_d) 와합성추정치 (Y_s) 를통합하여데이터 세트를구성한다. /* 직접추정량합성추정량 ( 추정치와분산 )*/ data abc.seoul_gangnam_estimators; merge abc.seoul_gangnam_estimator_direct abc.seoul_gangnam_estimator_com; by 읍면동 ; --
< 표 > 동별현재흡연율의직접추정치와합성추정치계산결과 OBS 읍면동 N Y_d Var_Y_d 수정군집 Y_s var_y_s 개포동.... 개포동.... 개포동.... 논현동.... 논현동.... 대치동.... 대치동.... 대치동.... 도곡동.... 도곡동.... 삼성동.... 삼성동.... 세곡동.... 수서동.... 신사동.... 압구정동.... 역삼동.... 역삼동.... 일원동.... 일원동.... 일원본동.... 청담동.... 첫번째가중치를사용한복합추정치 (Y_c) 을계산한다. /* 복합추정량*/ data abc.seoul_gangnam_estimator_c; set abc.seoul_gangnam_estimators; alpha=var_y_s/(var_y_d+var_y_s); Y_c=(alpha*Y_d)+((-alpha)*Y_s); --
Var_Y_c=((alpha*alpha)*Var_y_d)+(((-alpha)*(- alpha))*var_y_s); sumvar_ys_yd=(var_y_s+var_y_d); /* 수정군집별직접추정량의분산과직접추정량분산 + 합성추정량 */ proc surveymeans data=abc.seoul_gangnam_estimator_c sum; domain 수정군집 ; var Var_Y_d; ods output domain=abc; data abc; set abc; rename sum=sum; proc surveymeans data=abc.seoul_gangnam_estimator_c sum; domain 수정군집 ; var sumvar_ys_yd; ods output domain=abc; data abc; merge abc abc; by 수정군집 ; alpha=-(sum/sum); keep 수정군집 alpha; proc sort data=abc.seoul_gangnam_estimator_c; by 수정군집 ; --
두번째가중치를사용한복합추정치 (Y_c) 을계산한다. /* 복합추정량*/ data abc.seoul_gangnam_estimator_c; merge abc.seoul_gangnam_estimator_c abc; by 수정군집 ; Y_c=(alpha*Y_d)+((-alpha)*Y_s); Var_Y_c=((alpha*alpha)*Var_y_d)+(((-alpha)*(- alpha))*var_y_s); proc surveymeans data=abc.seoul_gangnam_pop sum; domain 읍면동 ; var 인구 ; ods output domain=abc; proc surveymeans data=abc.seoul_gangnam_pop sum; domain 수정군집 ; var 인구 ; ods output domain=abc; proc surveymeans data=abc.seoul_gangnam_estimator_c sum; domain 수정군집 ; var N; ods output domain=abc; proc sort data=abc; by 읍면동 ; data abc; set abc; rename Sum= 집락인구수 ; proc sort data=abc; by 수정군집 ; data abc; set abc; rename Sum= 집락표본수 ; proc sort data=abc; by 수정군집 ; proc sort data=abc.seoul_gangnam_estimator_c; by 읍면동 ; data abc.seoul_gangnam_estimator_c_; merge abc.seoul_gangnam_estimator_c abc; by 읍면동 ; drop DomainLabel VarName VarLabel StdDev; rename sum= 주민등록인구수 ; proc sort data=abc.seoul_gangnam_estimator_c_; by 수정군집 ; data abc.seoul_gangnam_estimator_c_; merge abc.seoul_gangnam_estimator_c_ abc abc; by 수정군집 ; drop DomainLabel VarName VarLabel StdDev; --
세번째가중치를사용한복합추정치 (Y_c) 을계산한다. 첫번째가중치와세번째가중치의평균가중치를사용한복합추정치 (Y_c) 를계산한다. /* 복합추정량*/ data abc.seoul_gangnam_estimator_c; set abc.seoul_gangnam_estimator_c_; hat_n_i= 집락인구수 *(N/ 집락표본수 ); if hat_n_i>=((/)* 주민등록인구수 ) then alpha= else alpha=hat_n_i/((/)* 주민등록인구수 ); Y_c=(alpha*Y_d)+((-alpha)*Y_s); Var_Y_c=((alpha*alpha)*Var_y_d)+(((-alpha)*(- alpha))*var_y_s); /* 복합추정량*/ data abc.seoul_gangnam_estimator_c; set abc.seoul_gangnam_estimator_c; alpha=(alpha+alpha)/ Y_c=(alpha*Y_d)+((-alpha)*Y_s); Var_Y_c=((alpha*alpha)*Var_y_d)+(((-alpha)*(- alpha))*var_y_s); /* 직접추정량 _ 합성추정량 _ 복합추정량 */ data abc.estimator_total; set abc.seoul_gangnam_estimator_c; keep 읍면동 Y_d Var_Y_d Y_s var_y_s alpha Y_c var_y_c alpha Y_c var_y_c Y_c var_y_c; proc print data=abc.estimator_total; --
종의복합추정법에따른추정결과요약 < 표 > 동별현재흡연율의 종복합추정치의계산결과 읍면동표본수 Y_d V_d Y_c V_c Y_c V_c Y_c V_c Y_c V_c 논현 동.......... 논현 동.......... 삼성 동.......... 삼성 동.......... 신사동.......... 압구정동.......... 청담동.......... 대치 동.......... 대치 동.......... 대치 동.......... 도곡 동.......... 도곡 동.......... 역삼 동.......... 역삼 동.......... 개포 동.......... 개포 동.......... 개포 동.......... 세곡동.......... 수서동.......... 일원 동.......... 일원 동.......... 일원본동.......... < 표 > 에동별현재흡연율의 종복합추정치계산결과를정리하였는데직접추 --
정치에비해서모두분산을작아졌으나현재흡연율추정치가동별표본크기에따라서변화가크게나타났는데이는복합추정방법의특징이추정치를안정화시키기때문이다. 따라서직접추정치의분산은줄이고합성추정치의편향을보정하는관점에서볼때 번째복합추정량이동별추정치의안정화에서유용한것으로생각된다. 보건소단위로건강지표를산출할목적으로조사를설계하여자료를수집한후에소영역인동읍면별건강지표를소지역추정법으로산출하는수치적인사례를설명하였는데다양한분야에서광역단위의통계를산출할목적으로조사한후에소영역이나세부영역의통계를생산할필요가있을경우에응용할수있는계산과정을 SAS코드로예시하였으므로앞으로소영역의통계생산에도움이될수있기를바란다.. 참고문헌 [] 이계오외 인 (), 년지역사회건강조사전국표본설계및표본관리, 최종결과보고서 [] 이계오 (), 시군구실업자추정을위한소지역추정법, 응용통계연구, 제권 호, - [] 이계오외 인 (), 소지역통계추정법, 통계청연구결과보고서 [] 이계오외 인 (), 지역사회건강조사동읍면단위통계생산프로그램 ( 알고리즘 ) 개발연구, 질병관리본부연구결과보고서 [] 질병관리본부 (), 지역사회건강조사원시자료이용지침서, 질병관리본부 [] J.F. Gonzalez, P.J.Placek, and C.Scott(), "Synthetic estimation in followback surveys at the national center for health statistics", Statistical Policy Working Paper, Chapter. [] Ghosh, M. and Rao, J.N.K () Small area estimation: an appraisal. Statistical Science,, - [] Singh, M.P., Gambino, J. and Mantel, H.J. () Issues and strategies for small area data. Survey Methodology,, - --