
以下程式請在安裝pandas套件下,在 jupyter notebook 的 python 執行;
程式撰寫: 以斯帖統計顧問公司 Python課程講師 蔡勝雄老師(Amos)
estat 發表在 痞客邦 留言(0) 人氣(530)
以下將介紹 first.variable 與 last.variable 的應用 , 利用這兩個指令,完成以下三項任務
(1)歸戶
(2)定義第幾次就醫記錄
(3)定義門診就醫三次以上;
estat 發表在 痞客邦 留言(1) 人氣(6,256)
文章撰寫 : 以斯帖統計顧問公司 Python課程講師 蔡勝雄老師(Amos)estat 發表在 痞客邦 留言(0) 人氣(198)
健保資料分析時,會遇到循環性的資料處理步驟,以1:1個案配對(individual matching)的資料處理過程為例,1個暴露個案(cohort study 的 exposure)或1個病例個案(case-control study 中的 case)依特定條件配到1個對照個案,此時要將該對照個案從對照組的抽樣母體中扣除,再繼續找下一個exposure或case的對照個案,直到對照組的個案建立完成,因此是由巨集指令(Macro Language)的迴圈進行此連續動作。而扣除的方式是以身份證號(ID)以及生日(ID_birthday)做為關鍵變項(key variable),將被抽中者從抽樣母體中扣除,因此在對照組的抽樣母體中再也找不到該位病人的資料,因此不會被之後的exposure或case再抽中,以致相同的對照個案有重覆出現的情形。
estat 發表在 痞客邦 留言(0) 人氣(3,377)
estat 發表在 痞客邦 留言(0) 人氣(16,481)
過去10年,學術界一窩蜂地以健保資料庫作為『省錢、省時、省力』的研究方法,由於過於浮濫的發表,有些學校已嚴格限制健保資料庫作為升等的題材,究竟這麼珍貴的資料庫,何以成為被學界所垢病的次級資料(secondary data),究竟這個領域的研究限制是什麼?而它獨步全球的優勢又是什麼?
estat 發表在 痞客邦 留言(0) 人氣(8,903)
在臨床實驗或介入型研究,經常需要對同一個受試個體(Subject)在不同的時間點觀察其反應,當觀察的時間點只有兩個時,可以用來分析的統計方法為paired t-test;如果觀察的個體數目太少,則會建議使用相依樣本的無母數檢定方法,如:Wilcoxon signed-rank test,若反應變項為類別型資料,且資料為相依樣本的情況下,其統計檢定方法為McNemar Test。
estat 發表在 痞客邦 留言(10) 人氣(30,777)
過去曾經介紹過以SAS的IFN(), LAG()等函數將資料向下垂直移動,但SAS可否有LAG()函數的相反函數,也就是將資料垂直向上移動的函數,答案應該是沒有的,但可透過PROC EXPAND程序執行資料的垂直向上以及向下的移動,甚至是移動數個列數,該語法屬於Time series(時間序列)的應用。
在【程式一】建立範例資料,資料中包含ID(身份證號)、sex(性別)、Birthday(生日)、date (就醫日期)。
【程式一】
data aa;
input id $ sex $ birthday yymmdd10. +1 date yymmdd10.;
format birthday date yymmdd10.;
cards;
A01 F 1958-01-04 2001-02-03
A01 F 1958-01-04 2004-05-06
A02 M 1964-07-08 2004-12-11
A02 M 1964-07-08 2005-01-03
A02 M 1964-07-08 2006-11-13
;
proc print;
run;
【程式二】
以下利用proc expand 進行資料的向上與向下移動,移動後的資料檔名為work.bb,移動的依據為ID與birthday。再利用convert指定將資料作轉換,convert的指令為CONVERT variable = newname … </options>; 等號左邊放要被轉換的變項,等號右邊為轉換後的變項。透過transformout=(lag)可以將資料往下移動,transformout=(lead)則將資料往上移動。若在lag或lead後面加上數字,則是移動的列數。也可以利用id指令取代by而作為資料移動的依據,但是id指令後面只能放數值型資料,包括日期格式的資料。
/*-移動日期--*/
proc expand data=aa out=bb method = none;
by id birthday;
convert date = date_lag1 / transformout=(lag);
convert date = date_lead1 / transformout=(lead);
convert date = date_lag2 / transformout=(lag 2);
convert date = date_lead2 / transformout=(lead 2);
proc print;
run;
【結果】
Reference
http://goo.gl/q0mM1R
estat 發表在 痞客邦 留言(0) 人氣(6,007)
傳統的存活分析方法大多用於估計單一次事件(例如:死亡,得病等)的存活率,但是在臨床研究上,有些存活資料屬於復發事件(recurrent event);例如,同一個體(subject)在追蹤時間(follow-up time)內發生多次某種症狀。以傳統的存活分析的觀點,可以僅看”第一次”復發事件的存活分析,但缺點是忽略了其他復發事件發生的訊息。所以,當資料型態是這種情形下,採用多次復發存活分析方法是較爲合適的。
一般的存活分析方法僅能用於資料之間爲獨立的情形下,然而,在臨床研究上,常收集到的資料是具有相關性的;例如,同一個體(subject)中的眼睛、腎臟等兩個以上的器官所收集到的存活資料。此外,同一家庭內的兩個不同個體的存活資料,亦可視爲此種資料型態。此種資料因爲具有配對的特性,所以在分析上較爲複雜,所採用的方法為配對存活分析(Matched Survival)。
在醫學研究中最常見的資料型態為右設限(right censored)資料,此類個案僅能記錄到從進入研究到研究截止的時間,在研究時間中止前,某些個案尚未發生感興趣的事件,所記錄的時間非真正發生事件的時間,造成資料不完整的情形。另一種常見的不完整情形爲左截切(left truncation)資料,左截切分析中,究者感興趣的是個案的存活年齡,例如65歲以後入住於老人安養院後能存活到幾歲。如果個案在研究開始前即死亡,則完全無法被觀察到,有別於右設限,左截切僅能觀察到部份的個案資料。在這種情形下,典型的Kaplan-Meier estimate是無法使用的。
另外。在醫學研究的實務應用中,可能存在有二種以上的不同事件,而感興趣的事件為其中一種。在這種情形下,出現某種事件可能會掩蓋了其它事件發生的可能性,此即為競爭風險(Competing Risks)。例如,針對白血病骨髓移植病患的研究,可能發生的事件有二種。白血病復發(relapse)以及移植失敗所造成的死亡(death)。如果我們要探討的是骨髓移植的復發率,移植失敗所造成的死亡(death)即為復發(relapse)的競爭風險事件(competing risk event)。所採用的方法為以累積發生函數(cumulative incidence function; CIF)來呈現特定事件在不同時間點發生的可能性。estat 發表在 痞客邦 留言(0) 人氣(3,305)
在資料分析時,經常遇到資料格式不是我們預期的,例如日期為文字型態,因此無法計算研究對象的年齡、或與時間有關的所有日期資料,或是資料合併時,發現兩個檔的資料型態不同,以致資料無法合併。以下將簡介SAS中的PUT()與INPUT()等函數的應用。
estat 發表在 痞客邦 留言(0) 人氣(49,596)