2009年6月28日

奔牛節

某一天看到報紙「奔牛節的街頭藝術品被破壞」,才知道台中市有這個項活動,這應該是屬於街頭裝置的藝術品吧,感覺還滿有趣的。

到了國美館,在綠色的草地上就出現了數頭顏色鮮豔的大牛!

DSCN6844

分別給其中隻三來個特寫。

DSCN6846 DSCN6845 DSCN6849

這幾隻牛上的小東西真的是很有趣,牛那麼大,在小時候的印象總是需要一些小動物的~

DSCN6848

其他室外的牛也是很有趣的,甚至躺著的牛 XD

DSCN6856 DSCN6858 DSCN6864

除了室外,室內的展區也是有很多奇妙的牛。這一隻應該也是牛吧,有一堆小牛圍在旁邊。
(照片中的為國美館的服務人員,還很辛苦的在數小牛數目有無正確。)

DSCN6865 DSCN6867

這裡也是有一堆小牛,由一個大圓石走出來。

DSCN6868

當然室內也是有大牛,有閃亮花俏的大牛,有小人控制的大牛…

DSCN6870 DSCN6872 DSCN6871

還有「天下第一味」的…牛肉麵?

DSCN6874

有興趣想看這群牛的,時間不多了,展出到2009/7/5。

DSCN6843

在SAS中使用已經整理好的統計量

實務上常遇到研究者只提供已算好的數字(統計量),例如列聯表中的個數和百分比或兩樣本的人數、平均數和標準差等,如果要利用這些統計量做某些檢定,例如卡方檢定或雙樣本T檢定等,可使用PROC FREQPROC TTEST處理僅有統計量的問題。

PROC FREQ

有兩群病患分別使用A藥和B藥,再觀察兩組實驗組症狀有無改善,結果如下表,如研究者想問A藥和B藥病患症狀改善的比率有無不同,可採用卡方檢定(Chi-square test)

  A藥 B藥
症狀無改善 9 12
症狀改善 21 18

當然第一步要先把資料輸入至SAS中,程式可以這樣寫:

DATA TRIAL_1;
INPUT DRUG $ EFFECT COUNT;
DATALINES;
A 0 9
A 1 21
B 0 12
B 1 18
;
RUN;
PROC SQL;
SELECT *
FROM TRIAL_1;
QUIT;

接下來是卡方檢定的部分

PROC FREQ DATA=TRIAL_1;
WEIGHT COUNT;
TABLE EFFECT*DRUG/CHISQ;
RUN;

PROC TTEST

同樣兩群病患使用A藥和B藥,使用後測量某個臨床指標(連續型變項),研究者欲使用T檢定,探討兩組病患的臨床指標平均值有無差異。資料如下表

  A藥(N=30) B藥(N=30)
臨床指標 89(12) 95(16)
mean(std)

因為這裡我們只有拿到兩組病患的人數、平均值和標準差,所以在輸入資料時要稍微複雜一點,必須符合SAS程式的規定,一定要有一個變項名稱為『_TYPE_』或『_STAT_』,在這個變項中,必須要放入‘N’、‘MEAN’、 ‘STD’這三筆資料,資料輸入程式如下

DATA TRIAL_2;
INPUT DRUG $ _TYPE_ $ EFFECT;
DATALINES;
A N 30
A MEAN 89
A STD 12
B N 30
B MEAN 95
B STD 18
;
RUN;

接下來執行PROC TTEST程序就簡單了,和一般寫法沒有太大差異

PROC TTEST DATA=TRIAL_2;
CLASS DRUG;
VAR EFFECT;
RUN;

以上程式可於SAS 9.1.3和SAS 9.2執行。

2009年6月17日

熬夜看書

數統最後一學期的期末考終於到了,
每次考試幾乎都要熬夜看書,可是又不敢不睡,
隔天還有許多待續工作要完成。

胡言亂語中,做個紀念吧!
明天(今天?)也要考試的伙伴加油吧!

2009年3月29日

Stay Hungry, Stay Foolish

真是一場發人深思的演說。

這個片段的起頭就說到了死亡,中間也提及了Your time is limited..,死亡是人類重要,但又深深隱身在人群之中,舉個例,某個工安事件發生了,新聞|社會最關注的就是有無人員死亡,誰要對這個死者負責,家屬萬分哀痛等。每個人都知道死亡一定會公平的發生在每個人身上,有可能就是下一秒,但平常生活中,我們卻常刻意忽略這個重要的議題,假裝死亡不存在,只有在她真的發生時才覺得重要,但對個人來說太晚了。

Steve Jobs曾經得到死亡率超高的胰臟癌,但他活下來了,可能因此體會到死亡的重要,重新去排序生活中的重要的事情,他也提到了不要被傳統的教條束縛,要多聽聽自己的聲音,在死亡前多完成「自己想做的事情」,也許只是件傻事。(不過我相信Steve Jobs在發現胰臟癌之前就懂得尊重自己)

Who is Steve Jobs,請自行查閱Wiki的資訊吧(http://zh.wikipedia.org/w/index.php?title=Steve_Jobs&variant=zh-tw

完整的演說-1(只有英文字幕):

完整的演說-2(只有英文字幕):

2009年3月26日

遇見未來的

這4個研究所的小朋友,是我於2007年就期待看到的一群,當時還在猜測他們是誰,會哪裡考來。

現在他們已經入學超過了半年,也認識快9個月了,我無法否認,對這群小朋友有不一樣的感覺,因此也花了比較多時間在他們身上,把一些我覺得重要的東西讓他們瞭解,但當下一屆出現時,也許我這個熱情就會修正了。終究,他們是我曾經期待的一群。〔將自己放在未來,總有減壓的和跳離現實痛苦的感覺,享受過就好了,不要沈迷在未來與過去之間。〕

我沒讀過國立大學,我不知道那邊的資源,但我的過往經驗告訴我,他們真的很幸福,老師數比學生多,每次諮詢報告老師全到的陣容,還真是完整,除了老師的資源,我同事總是能給這群小朋豐富又實務的資源,這也許就是某種「產學合作」吧。如果當時有這樣的資源,也許我就不用花那麼多時間自修了,想當初自己嘗試「認識」MACRO或是說入門,就花了好多好多時間了。

2009年1月8日

兩隻笨貓終於可以重逢了

橘子貓今天終於可以在遙遠的那一方見到另外一隻笨貓了,雖然這一切真的是很突然。
永遠祝福那可愛的兩隻笨貓。

2008年12月7日

想念的影片

這個已經不知道在那個世界的貓,這是唯一能夠想起她身影的方式了,
一位很愛她的女生曾經說過「她是全世界最可愛的貓」。

當我想要一個人的時候,我都會去她休息的地方坐坐,曬曬太陽,
如果你們看到一個人,默默在那邊舔者傷口,請不要打擾他,
也許他身旁正有一隻全世界最可愛的貓。

2008年11月22日

SAS Macro ( 巨集 ) 簡易教學

SAS的巨集雖然屬於P3等級的內容,不過對於實際分析資料的使用者來說,應該是相當實用的語法,且必要學習的。巨集沒有想像中的難,只是多了一些平常不會使用的符號,例如『%』或『&』等,這一篇教學將會舉一個簡單的例子,說明巨集的使用方式。


先來假設一個狀況,有4個資料檔{a1,a2,a3,a4},每個資料檔中均包含4個變項{y1,x1,x2,x3},而我想以PROC REG來分析4個資料檔中「y1和x1」、「y1和x2」及「y1和x3」的相關性。

第一步:先建立4個資料檔並包含3個變數。
先以do loop建立4個資料檔,而y1、x1、x2、x3的值將隨機由uniform分佈中抽取。程式如下:

data a1 a2 a3 a4 ;
do i=1 to 4;
do j=1 to 100;
y1=uniform(123);
x1=uniform(1234); x2=uniform(12345); x3=uniform(12345);
drop i j;
if i=1 then output a1;
else if i=2 then output a2;
else if i=3 then output a3;
else if i=4 then output a4;
end;
end;
run;


第二步:用傳統方式寫PROC REG程式。
當然可以傳統語法,逐筆將資料檔名稱和變項寫入程式中,以資料a1為範例:

proc reg data=a1;
model y1=x1;
run;
proc reg data=a1;
model y1=x2;
run;
proc reg data=a1;
model y1=x3;
run;

然後再將這一小段程式複製3次,將data分別改成a2、a3、a4即可。

第三步:改用巨集的語法。
其實可以很清楚的找到一個邏輯性;PROC REG的程式每次只需要修改下面藍色的部分就好,
proc reg data=a1;
model y1=x3;
run;

因此抓到這個邏輯以後,就可以寫出一段小小的巨集。

%macro My_reg (mydata, myvar);
proc reg data=&mydata;
model y1=&myvar;
run;
%mend My_reg;

這裡出現了奇怪的符號「%」和「&」。『%mcaro』為告訴SAS要開始寫一段巨集程式,有開始就會有結束,如同do loop會有do...end一樣,在巨集語法中結束即為『%mend』。

在『%macro』後面的My_reg為宣告這段巨集程式的名稱,為何要宣告,因為我們可能會同時使用上很多個巨集程式,如沒有宣告,SAS程式也搞不清楚現在要使用那個巨集程式。

接下來的『(mydata, myvar)』,就是在巨集有幾個「變數」會換(前面PROC REG藍色的2部分),並給這些變數一個名稱。

在被巨集程式的包裹住的語法,絕大部分都和之前寫的程式一樣,只有多了『&mydata』和『&myvar』這兩個,這個由『&』開頭的兩個部分稱為『巨集變項』,這為等一下要被取代的部分。

第四步:使用My_reg巨集。
已經寫好的巨集叫『My_reg』使用時,在巨集名稱前多加『%』,寫法如下:

%My_reg (a1,x1);
%My_reg (a1,x2);
%My_reg (a1,x3);

%My_reg (a2,x1);
%My_reg (a2,x2);
%My_reg (a2,x3);

%My_reg (a3,x1);
%My_reg (a3,x2);
%My_reg (a3,x3);

%My_reg (a4,x1);
%My_reg (a4,x2);
%My_reg (a4,x3);

在巨集名稱後面()要放入取代
巨集變項的「文字」,記得要以『,』區隔。執行後SAS便會將所寫入的文字逐步取代到『My_reg』巨集中,然後執行。

第五步:多一點的寫法。
這裡主要希望SAS能自己重複執行這個結果,不需要如第四步一樣手動改文字,此程式先不在這裡說明了,有興趣的請自行研究了。

%macro My_reg1 ;
%do i=1 %to 4;
%do j=1 %to 3;
proc reg data=a&i;
model y1=x&j;
run;
%end;
%end;
%mend My_reg1;
%My_reg1;


2008年11月4日

令人心碎的一週

一個好好的星期天,卻發生兩件令人心碎/心跳的比賽....

先說說兄弟象好了,其實看到恰恰的奮戰精神,和由挑戰賽到總冠軍第7站的表現,其實也滿足,雖然結果有點令人難過,但令人整個心碎的比賽卻出現在F1中。

我很少看到重播比賽確如此心跳加速,2008年度車手冠軍幾乎可以說在最後一個彎角最後10秒鐘才決定,在倒數幾圈的時候,總冠軍不斷在Massa和那位討人厭的H車手中轉換,真的是超刺激的。但最後卻是那個H車手拿到,真是太令人失望了,看到Massa在台上流淚的樣子,好無言喔。

看比賽如果有支持的隊伍,真的會很有感覺,不管是勝利或失敗,真是很棒的感覺!

黃軍紅軍明年加油,特別紅軍車手明年不要再讓那位拿冠軍了。

2008年10月5日

SAS Certified Base Programmer Credential for SAS 9

自從幾年前知道SAS有所謂全球認證考試的時候,就很想要試試,終於在前一段時間順利取得了,把一些個人的心得和大家分享。



參考書目方面,SAS Programming ISAS Programming IISAS Certification Review:Base Programming for SAS9(簡稱CRB),這三本SAS公司正式課程的講義是很棒的參考書目。當然能去上這3堂課可能會是更好的選擇,這3個課程我都上了,在老師的講解下,對以前比較模糊的概念重新釐清,對於考試老師應該也會有重點提示!如果時間真的不夠,那強烈推薦CRB課程一定要去

模擬試題,在CRB課程後面會有50題的試題,而網路上也可以找到所謂的「50題」和「123題」,其中的123題可能是某家補習班出的,而似乎有點過難,時間不夠可以考慮跳過。

「CRB」和「50題」如果的答題正確率有超過75或80%,正式考試的通過率應該不會太低了。不過我考試時當天可能運氣比較差,覺得正式的題目似乎比模擬題目難了一些。

準備考試,還是需要讀書的,因為會考一些平常比較少用的指令,例如PROC REPORT,可能需要用腦袋記下了。如果有幾個同伴一起準備,應該也會很有幫助,大家先以題目為主題討論,互相分享大加的讀書心得,如再加上已經自己有1年以上的SAS使用經驗,應該對考試更有相當大的幫助,因為有不少題目,用實務經驗判斷就好。

考試形式為
70單選題,正確率達65%便可取得證書,英文出題,考完當場就知道成績。

有興趣朋友可以參考下面兩個連結的內容,當然還有課程的費用(不要被嚇到!)

SAS台灣官網:
http://www.sas.com/offices/asiapacific/taiwan/index.html

SAS Global Certification Program:
http://support.sas.com/certify/