[About Me] Let’s find it out

不務正業/東寫寫, 西寫寫, 喜歡學習新技術, 提升解決問題的能力

Graduated from medical related field, did data mining for e-commerce,

learn big data solution, my goal is creating the power to be a problem solver!

Try to do something good for humanity and for fun!

Leave a comment if you have any question!



52 Responses to “[About Me] Let’s find it out”

  1.   r96723007 Says:

    恭喜恭喜,話說去年此時我離口試還有不小一段路:p

  2.   Shrimp Li Says:

    多謝多謝~畢業那一瞬間應該會感動到痛哭流涕吧XD

  3.   r96723007 Says:

    hello:
    請問一下,在cox propotional model中,有類似一般線性迴歸中r square這種衡量模型配適度的指標嗎?不知道有沒有什麼相關的網頁或檔案可以分享,謝謝喔:)
    祝畢業快樂

  4.   Shrimp Li Says:

    HELLO:
    SAS在run COX PH model時所用的PROC PHREG指令中, output有提供Model fit statistics參考, 如AIC, SBC, 與-2Log Likelihood指標
    而這些指標的criteria不限於在PROC PHREG使用~
    criteria可以參考線性迴歸的書, 或是建模的文件: http://www2.sas.com/proceedings/sugi30/206-30.pdf
    歡迎討論 😀

  5.   r96723007 Says:

    hi:
    這一篇有解答我心中的一些問題,不過有些東西還是要在想一下。
    感謝:)

  6.   Shrimp Li Says:

    Hi:
    歡迎一起討論 :p

  7.   Incarl Says:

    我想R-square有其特殊的解釋,也就是模型的解釋力,而這些都是AIC、BIC所沒辦法提供的。
    當然在COX MODLE比較常用來比較模型的,也就是那幾個了。

    我在BLOG中隨手放一些SAS文章,歡迎指教。

  8.   Shrimp Li Says:

    HELLO:
    R-square一直是有趣的議題~

    BTW,您的blog寫得真詳細,謝謝分享~

  9.   DuanYu Says:

    一直在follow您的日志,感谢博主的分享~

  10.   Charles Says:

    想請問程式語法問題

    目前有個table如下

    year die
    1 0
    2 1
    3 1
    4 0
    5 0
    6 1

    如果想寫成
    if year<=2 then flag=1;
    if 2<year<=4 then flag=2;
    if 4<year then flag=3;

    year的值(2,4)是否能寫成自動抓取1-6的值代入呢?

  11.   Shrimp Li Says:

    「year的值(2,4)是否能寫成自動抓取1-6的值代入」這句話我不是很明白,可否描述的多一些呢?

  12.   Charles Says:

    year die
    1 0
    2 1
    3 1
    4 0
    5 0
    6 1

    if year<=a then flag=1;
    if a<year<=b then flag=2;
    if b<year then flag=3;

    a b指的是year欄位內的值

    想讓他能自動抓取每個欄位內的值進去做分組

    只是year本身有重覆的機會

    所以還要加上個判斷year不讓他重覆@@

    之前沒說明清楚真不好意思 麻煩你了

  13.   Shrimp Li Says:

    如果針對重複的機會,只想挑一筆,可以針對if first , last 條件式語法去下, 或是用sort中下其他option(看情況).
    你提供的資料檔是尚未處理過的嗎?
    可以請你提供預期得到的output嗎? 可能比較容易理解你的問題 🙂

  14.   Charles Says:

    先謝謝您的回覆,基本上是希望對選出來的flag分組做自動切等的動作

    所以要對每個影響die的year值做一個臨界點

    只是變數值的range太廣了 所以想讓sas自動抓取每一個變數進去跑

    看能不能比較省工一點 如果還有要補充的再麻煩您告知 ;p

  15.   Shrimp Li Says:

    year die
    1 0
    2 1
    3 1
    4 0
    5 0
    6 1
    if year<=a then flag=1;
    if a<year<=b then flag=2;
    if b<year then flag=3;

    「year的值(2,4)是否能寫成自動抓取1-6的值代入」
    請問為什麼是挑year=2跟year=4呢?
    我想了解關於切等的規則.

    year重複的意思,是說例如year=1會有好幾筆嗎?
    這樣重複的話,取捨條件是? 放棄? 只拿第一筆??

  16.   Charles Says:

    「year的值(2,4)是否能寫成自動抓取1-6的值代入」
    請問為什麼是挑year=2跟year=4呢?
    我想了解關於切等的規則.

    切等基本的規則是每組至少要有一組死亡的人數,
    2 4只是我隨便挑的數數,沒有特別的意思,
    是希望讓他能抓每個值進去跑切等而已,
    之後會再加上每組所占的樣本數可能會大於固定的%

    year重複的意思,是說例如year=1會有好幾筆嗎?
    這樣重複的話,取捨條件是? 放棄? 只拿第一筆??

    重複的意思是可能在n年的情況下可能會有死有活..@@
    重複的話也一樣都會納入,不會特別做取捨的動件
    可能在n至n+x年內,總計有10筆資料,其中8筆die=0 else die =1
    這樣的話這組的die perc=20%

    不好意思現在才回覆您

  17.   JJ Says:

    您好
    我想請教
    如果我有1筆資料集,其資料集如下
    data one;
    input no x1 x2 x3;
    cards;
    01 2 3 0
    02 3 5 8
    03 0 0 0
    04 . . .
    05 . . .
    06 0 0 0
    07 . . .
    08 5 0 5
    09 10 5 2
    10 6 8 9
    ;
    data two’/*補值準則*/
    input no a1 a2 a3;
    cards;
    04 0 1 0
    05 0 0 0
    07 1 0 0
    ;
    data one1(keep=x1) one2(keep=x2) one3(keep=x3);
    set one;
    if x1>0 then output one1;
    if x2>0 then output one2;
    if x3>0 then output one3;
    run;
    我想要將缺失值的資料補齊,如果04 05 07在資料集two的a1值為1的話,就從one1隨機抽一筆資料,如果值為0的話就直接補0,如此即可將04 05 07在x1的值補齊,同理,亦以相同方式補x2及x3,因此我就可以得到1組完整資料集,那如果我要反覆將缺失值補1000次,其1000組完整資料集要如何用SAS程式來完成?
    謝謝!

  18.   Shrimp Li Says:

    可參考
    http://r97846001.blog.ntu.edu.tw/2011/03/11/q-2/
    Brian版友提供的方法, 一起討論

  19.   Carl Zhou Says:

    比如我要輸入以下數據:
    1-10 40 100 110 120
    11-20 50 60 70 80 90
    21-30 10 20

    如果我直接input的話,我不知道1-10有幾個數據 11-20有幾個數據 21-30又有幾個數據,
    於是我是用三個array來完成,並用dim()來獲取個數,

    但是,後來我看見有一種方法:

    proc format;
    value a 1=’1-10′ 2=’11-20′ 3=21-30′;
    run;

    data temp;
    do group=1 to 3;input n@;
    do i=1 to n;
    output;
    end;
    end;
    format group a.;
    cards;
    40 100 110 120
    50 60 70 80 90
    10 20
    run;

    但是input n@;這裏貌似是錯誤的,估計這個例子想說,用一個類似與input n@;的方法可以直接獲得當前行的個數,
    請問博主大人有沒有什麼好的快捷的方法能做到呢?

    thanks a lot!

  20.   Shrimp Li Says:

    array+dim是OK的
    手邊沒有SAS, 這幾天測試一下之後, 再跟您分享

  21.   Carl Zhou Says:

    不好意思
    上面的data step打漏了

    data temp;
    do group=1 to 3;input n@; /*錯誤就在input n@;這,不知道還有什麼方法能獲取每一行的個數*/
    do i=1 to n;
    input x@@; /*剛才打漏了這個*/
    output;
    end;
    end;
    format group a.;
    cards;
    40 100 110 120
    50 60 70 80 90
    10 20
    run;

  22.   Carl Zhou Says:

    嗯嗯 不急不急 万分感谢

  23.   Shrimp Li Says:

    data temp3;
    do group=1 to 3;
    input n@;
    put _all_;
    do i=1 to n;
    input x@@;
    put _all_;

    output;
    end;
    end;
    format group a.;
    cards;
    40 100 110 120
    50 60 70 80 90
    10 20
    run;
    proc print; run;
    程式裡面沒有能夠讓SAS判斷分組的個數, 所以你跑出來才會沒辦法分組
    全部都會變成1-10這一組這樣, 此外他也抓錯數值, 第一個數值40就變成了n
    你看見的這個方法本來是處理甚麼樣的問題?

  24.   Carl Zhou Says:

    感謝博主大人,

    用上面的代碼輸出也是只能分到1-10哦:

    Obs group n i x
    1 1-10 40 1 100
    2 1-10 40 2 110
    3 1-10 40 3 120
    4 1-10 40 4 50
    5 1-10 40 5 60
    6 1-10 40 6 70
    7 1-10 40 7 80
    8 1-10 40 8 90
    9 1-10 40 9 10
    10 1-10 40 10 20

    是用來進行非平衡數據方差分析的,他例子就是想說可以直接獲取cards輸入數據的每一行的個數…

  25.   Shrimp Li Says:

    原來如此, 了解~

  26.   Carl Zhou Says:

    我找到一種方法了

    proc format;
    value a 1=’11-20′ 2=’21-60′ 3=’61-80′;
    run;
    data a;
    input group x @;
    do while (x ne .);
    output;
    input x @;
    end;
    format group a.;
    cards;
    1 58 61 62 61 63 70 70 68 74 78 80 76 .
    2 54 57 58 57 60 61 63 64 66 62 .
    3 42 56 57 54 60 57 53 51 .
    ;
    proc glm;
    class group;
    model x=group;
    means group/snk;
    run;
    quit;

    缺點是每行數據結尾要加一個 . missing value

  27.   Carl Zhou Says:

    data a;
    infile cards missover; /*亦或從cards中直接infile + missover選項 可以輕鬆搞定哦*/
    input group x @;
    do while (x ne .);
    output;
    input x @;
    end;
    format group a.;
    cards;
    1 58 61 62 61 63 70 70 68 74 78 80 76
    2 54 57 58 57 60 61 63 64 66 62
    3 42 56 57 54 60 57 53 51
    ;

  28.   Shrimp Li Says:

    Very GOOD!!!
    相信你的程式又更精進了!!!
    感謝與我們的分享:)

  29.   Shrimp Li Says:

    這是一個解釋missover用法很好的例子
    感謝你的提供呢!!!!

  30.   Carl Zhou Says:

    大家共同進步! 還望多多指教

  31.   Shrimp Li Says:

    好說好說, 您謙虛了

  32.   Ziggy Says:

    Posts like this brighten up my day. Thanks for taikng the time.

  33.   Carl Zhou Says:

    啊博主大人我又來了
    這回問題比較大了

    我們老師給了我們100筆股票數據 每個數據裏面有5只股票 5天的 每分鐘的股價信息
    數據格式如下
    股票代碼 股票價格 股票交易量

    要取出這500支股的每天的最高5個price和最低的5個price

    現在我能取出單獨1筆數據內的每支股的每天的5個最高price和最低price 但是期中有很多proc steps和data steps(data步讀入數據、拆解數據、取出最大、最小5筆;proc步排序)

    但是這麼一大段過程只能讀入1筆數據 要讀取100筆肯定要批量讀取 但是這些數據步和過程步不知道能不能讓他循環100次哦

    我嘗試寫了一個宏 讓所有的數據步都創建100個 過程步排序100次 但是這種方法效率低下得很 且代碼臃腫

    不只博主有沒有這方面的處理經驗

    簡單而言 我要重複以下所有過程 N 次

    data a1;
    讀入、拆解數據集
    run;

    proc sort;
    排序
    run;

    data b1;
    取出拆解後數據集的前5筆最大值和后5筆最大值
    run;

    該怎麼弄比較便捷呢 麻煩啦~~

  34.   Shrimp Li Says:

    這100筆股票數據看起來是分作100個檔案是嗎?

    每個檔案大概有幾筆觀測值?

    先合併成單一檔案再作後續data step/procedure處理會比較快嗎?

  35.   Carl Zhou Says:

    额 博主大人 最近回复要审核了呀~~

  36.   Shrimp Li Says:

    Hello,最近比較忙,不好意思
    因為之前被亂版,所以設定要審核,呵呵
    你的問題,晚上我想一想,再跟你分享

  37.   Carl Zhou Says:

    哦哦 这样呀 嗯嗯
    先谢过了~

  38.   Carl Zhou Says:

    100筆數據相互獨立 但格式相同
    每筆數據里的觀測數都是不定的 因為有些股可能交易量小所以數據很少 熱門的股的數據就很多
    由於每個單獨的數據里股票的ID可能是重複的 所以如果拼合成1個數據集 可能無法區分某ID所指的股票是來自哪筆數據了
    這是麻煩之處~~

  39.   shrimp Li Says:

    多開一個column,標記他來自1-100哪一筆數據
    即使是同一個id在不同筆數據的股票資料, 也可用這個column來辨認/

  40.   Carl Zhou Says:

    嗯 也只能這樣了 – 我再折騰折騰看下有啥有意思的方法沒

  41.   shrimp Li Says:

    若格式相同,就直接set在一起,比較快
    期待找出有意思的方法

  42.   JJ Says:

    我想請教一下取出放回的抽樣且每一個個體抽中機會不均等,
    我寫的語法如下,但在log視窗出現error(好像是解不開macro的變數),
    再麻煩幫我看一下雨法哪裡寫錯
    data one;/*原始資料讀取*/
    retain psum;
    if _N_=1 then psum=p;
    else psum=p+psum;
    input y x p;
    cards;
    1 2 0.1
    5 2 0.2
    0 5 0.3
    5 8 0.4
    ;
    run;
    proc sql;
    select count(*) into:nobs from one;
    quit;
    data _NULL_;
    set one;
    do i=1 to &nobs;
    call symput(col||left(put(i,4.)),psum);
    end;
    run;
    data sample;
    do i=1 to &nobs;
    seed=ranuni(0);
    if seed&col1 then do j=2 to &nobs;
    if &col.j-1<seed<=&col.j then a=j;
    end;
    end;
    call symput(a||left(put(i,4.)),a);
    run;
    data sampleout;
    do i=1 to &nobs;
    a=&a.i;
    set one point=a;
    run;

  43.   shrimp Li Says:

    call symput(col||left(put(i,4.)),psum);

    這行可以試著稍加研究一番

  44.   ทำเว็บ Says:

    學習當中
    謝謝你的分享~ ^^

  45.   fish Says:

    % 1995 8 1
    a 50
    b 88
    % 1996 10 15
    a 52
    b 88
    c 72
    d 55
    % 1997 1 22
    b 89
    c 73
    e 44
    f 58
    % 1998 3 6
    a 48
    請問….我有以上這樣的數據數十萬筆
    %之後為日期年月日
    以下為該日期紀錄項目a~f的值
    每日紀錄項目不一定
    請問有方法可以處理成
    年 月 日 項目 值.
    1995 8 1 a 50
    1995 8 1 b 88
    1996 10 15 a 52
    1996 10 15 b 88
    1996 10 15 c 72
    1996 10 15 d 55
    1997 1 22 b 89
    1997 1 22 c 73
    1997 1 22 e 44
    1997 1 22 f 58
    1998 3 6 a 48
    這樣的資料檔嗎…

  46.   Shrimp Li Says:

    Transpose?

  47.   http://alarmmonitoring1.webs.com/ Says:

    Good article. I am dealing with many of these issues as well.

    .

  48.   elektroniksigarafabrikasi.Com Says:

    It’s not my first time to pay a visit this site, i am browsing this site dailly and take fastidious information from here all the time.

  49.   Shrimp Li Says:

    Thank you for your visit

  50.   webvidx.com Says:

    Howdy! I realize this is somewhat off-topic however I had to ask.
    Does managing a well-established website such as yours require a large amount of work?
    I am completely new to running a blog however I do write in my journal everyday.
    I’d like to start a blog so I can easily share my experience and feelings online. Please let me know if you have any kind of suggestions or tips for brand new aspiring blog owners. Thankyou!

  51.   http://www.fishin-buddies.net/members/candacemo/activity/11691/ Says:

    I wanted to thank you for this wonderful read!
    ! I definitely enjoyed every bit of it. I have got you saved as a favorite to look
    at new things you post…

  52.   Jakarta Says:

    Thanks!


total of 2288513 visits