close

 昨日在幫 Ann 完成 GEE model diagnostic 之後,她雖很心滿意足地回去繼續她的論文,但留了一個洞給我繼續挖。任何的 model diagnostic 中,每個觀測值都會產生一些統計值,如 Cook's D 或 Leverage,都需要畫一些圖表來顯示每個統計值的高低,讓讀者可以很明白地看出哪些值是 influential data。因此,除了要描點之外,還要特別把幾個 influential data 的編號標示出來。這種圖示我就不知道該怎樣去做了。因此,趁著寫感謝信給 Dr. John Pressier 之餘,順便在信中問他那種圖該怎樣畫(因為他在 paper 裡面秀了很多張這類的圖表)。但如我一開始的直覺假設,他那些圖果然是用 S-PLUS 弄出來的。這時要我去研究怎樣用 S-PLUS 去做圖是不可能的,因為我從上個世紀(也就是我念研究所的時代)就不喜歡用 S-PLUS,即便他後來的功能改的很強。因此,正當我在翻閱 SAS/GRAPH 手冊尋求任何配套程式寫法時,John 的另一位 co-author,Dr. Bradley Hammill,寄了一封信給我,教我如何用 SAS 來畫那種圖。原來只要用 POINTLABEL 這個指令就可以標示想要的數字出來(但 SAS/GRAPH 原文手冊裡面居然沒有列出這個指令!)。在此分享一下 Brad 提供的範例:



* Generate some random data for plotting;


data a;


    do idnum = 1 to 100;


        sres = rannor(23456);


        output;


    end;


run;





* Label all points in index plot with ID number;


symbol v=dot c=black pointlabel=(h=2pct "#idnum");





proc gplot data=a;


    plot sres * idnum;


run;





* Setup a new var that only has the ID number if abs(SRES) > 2;


data a;


    set a;


    if abs(sres) > 2 then idhigh = idnum;


    else idhigh = .;


run;





* Label only high-SRES points in index plot with ID number;


symbol v=dot c=black pointlabel=(h=2pct "#idhigh");





* W/out this option, missing labels in plot will appear as .;


options missing=" ";





proc gplot data=a;


    plot sres * idnum;


run;














arrow
arrow
    全站熱搜

    cchien 發表在 痞客邦 留言(3) 人氣()