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 的頭像
    cchien

    ToTo 奇妙の冒險

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