• 文章總列表
  • 統計分析
    • R SAS All
      R

      [R]散佈圖與相…

      2019-12-31

      R

      [R]Logis…

      2019-10-31

      R

      [SAS][R]…

      2019-09-27

      R

      [R]Chi-s…

      2019-09-19

      SAS

      [SAS] Ma…

      2026-01-21

      SAS

      [SAS]傾向分…

      2020-10-28

      SAS

      [SAS]Log…

      2020-06-10

      SAS

      [SAS]迴歸分…

      2020-02-28

      統計分析

      [SAS] Ma…

      2026-01-21

      統計分析

      什麼是meta-…

      2024-11-05

      統計分析

      Test-ret…

      2024-06-07

      統計分析

      [SAS]傾向分…

      2020-10-28

  • SAS
    • SAS

      [SAS] Ma…

      2026-01-21

      SAS

      [SAS]傾向分…

      2020-10-28

      SAS

      [SAS]Log…

      2020-06-10

      SAS

      [SAS]迴歸分…

      2020-02-28

      SAS

      [SAS]線性迴…

      2020-02-26

  • R
    • R

      [R]散佈圖與相…

      2019-12-31

      R

      [R]Logis…

      2019-10-31

      R

      [SAS][R]…

      2019-09-27

      R

      [R]Chi-s…

      2019-09-19

      R

      [SAS][R]…

      2019-07-08

  • 機器學習
    • 機器學習

      Unsuperv…

      2021-07-22

      機器學習

      Unsuperv…

      2021-07-12

      機器學習

      Unsuperv…

      2021-05-20

      機器學習

      Unsuperv…

      2021-05-12

      機器學習

      Matrix F…

      2021-04-30

  • 閱讀筆記
    • 閱讀筆記

      [閱讀心得 #2…

      2025-02-05

      閱讀筆記

      [閱讀心得#20…

      2024-10-25

      閱讀筆記

      [閱讀心得#19…

      2024-08-16

      閱讀筆記

      [閱讀心得#18…

      2024-05-10

      閱讀筆記

      [閱讀心得#17…

      2022-01-22

Wenwu's blog
wenwu's blog
  • 請我喝珍奶

Popular Posts

[R]散佈圖...

2019-12-31

[SAS]L...

2020-06-10

[SAS][...

2019-07-08

[R]Log...

2019-10-31

[SAS] ...

2020-01-22

[SAS]線...

2020-02-26

[SAS]存...

2019-12-18

[SAS]迴...

2020-02-28
SAS

[SAS]線性迴歸 linear regression

by wenwu 2020-02-26

[SAS]線性迴歸 linear regression

之前在 [R]Logistic Regression 羅吉斯迴歸 文章中提到 線性回歸與羅吉斯迴歸的差別。羅吉斯迴歸主要是分類,而線性迴歸主要是預測。線性迴歸希望是找到一條線,使每一點的資料都盡量靠近這條線(誤差小)。

所謂的迴歸就是分析變數與變數之間的關係,探討自變數(X)與依變數(Y)的關係,目標是使用自變項(X)來預測或推論依變項(Y)。

依變項(Y)為單一的連續變數,自變項(X)可以是類別或是連續變數,也可以是多。
如果只有單一的自變數(X),為簡單線性迴歸(sample linear regression)。
若有多個自變數(X),則為多元的線性迴歸(multiple linear regression)。
下圖為兩者的差異,多元的線性迴歸使用k個自變項(X)。


線性迴歸需要滿足四項基本統計假設:

  1. 線性關係:依變項(Y)和自變項(X)必須是線性關係。(若不是,可以透過轉換成線性,再進行線性迴歸)
  2. 常態性(Normality): 若母體為常態分布,誤差項也為常態。(樣本數足夠時,可以畫直方圖確認。若不夠,可以使用常態檢定)
  3. 獨立性(Independency):自變項(X)的誤差項,應為互相獨立的。(若非獨立,會降低統計的檢定立。可以使用殘差的圖形判斷,不會有特定的patten )
  4. 變異數同質性(Constant Variance): 變異數若不相等會導致自變項(X)無法有效估計依變項(Y)

使用迴歸分析時需要使用的假設檢定:

  1. 迴歸模型的顯著性檢定(F-test):
    H0: β0 = β1 = … = βk = 0 (多元線性迴歸使用 k個自變項)
    H1: 至少有一個 β ≠ 0
    當係數不全為0時,迴歸模型才有預測力。統計值: F
  2. 個別迴歸係數的邊際檢定(t-test):
    H0: βi = 0 (i=1…k)
    H1: βi ≠ 0 (i=1…k) 
    當係數不全為0時,自變項才有解釋力。統計值: t
  3. 判定係數R平方(R square):
    R² 為迴歸模型的總變異中可被解釋的百分比,R² 越大越好,若大於0.5代表不錯。
    R² = SSR/SST = 1- (SSE/SST)
  4. 調整後R平方(adjusted-R square):
    當加入的自變項越多,R²會越大,會呈現高估的現象,所以需要調整後的R²。
    Adjusted R² = 1 – (SSE/(n-k))/(SST/(n-1))/

這次使用的資料是晨晰統計在網站上分享的資料:

依變項(Y)為單一的連續變數,代表同學的閱讀測驗成績。
這邊的自變項(X)有五個,X1~X5分別代表同學的 單字成績\片語成績\文法成績\自我期望\智力測驗成績

有一個依變項(Y)和五個自變項(X),代表我們想要看看依變項和自變項的關係,使用X1~X5(單字成績\片語成績\文法成績\自我期望\智力測驗成績)使否可以預測學生的閱讀測驗成績

data reg;
input Y x1 x2 x3 x4 x5;
cards;
70 16 19 29 88 108
63 10 30 23 71 113
51  9 35 27 78 103
71 19 20 40 75 109
79 22 42 25 85 114
81 21 42 38 92 116
80 14 22 16 86 125
44 20 30 22 50 101
59 18 48 20 65 92
61 17 31 10 73 108
60 21 35 27 71 111
69 13 43 33 79 112
70 17 39 40 76 120
74 11 50 32 84 125
50  8 48 29 43 96
62 12 50 33 80 105
;

程式碼如下: ( CLB代表參數的 95%區間

proc reg data=reg;
model y=x1 x2 x3 x4 x5 /CLB; 
run;

下面是output & 解釋:

首先,從ANOVA table 可以得到 p-value = 0.0028,達到統計上顯著,表示拒絕虛無假設,至少有一個 β ≠ 0。

再來可以看到 R² =0.8005 ,代表此模型可解釋百分之80的變異。因為模型中有五自變項,當自變項越多 R² 就會越大,容易高估。所以可以看到 adj R²=0.7007 ,此模型可解釋百分之70的變異,代表此模型有高度的解釋能力。

再看到最下面的表格,從截具項: β0 到 β5 的預估參數為 parameter estimate ,β0到β5 分別為 : -31.867 / 0.444 / 0.084 / 0.074 / 0.434 /0.479

可以寫出模型為 : 
 Y= -31.867+0.444 * X1 +0.084* X2+0.074* X3+0.434* X4+0.479* X5

前面有提到,不只需要觀察迴歸模型的顯著性,也需要看個別迴歸係數的檢定,可以看到個別的 p-value= 0.1752/0.2363/0.6092/0.7141/0.0236/
0.0613,只有x4的迴歸係數小於0.05 達到統計上顯著,和X5的較靠近0.05 ,其他都>0.15 。 ( 下一篇會介紹如何使用 stepwise )

最後,下面的圖可以幫助我們看這組資料有沒有滿足最開始的假設
殘差(residual)需要滿足 : 常態性(Normality) & 獨立性( Independence)

左圖的左下角畫出residual 的分布,看似常態,左中圖畫出residual的QQ plot ,也沒有點距離對角線太遠,表示符合常態性。

右圖畫出X1~X5 的residual ,五張圖中沒有特別的patten ,表示殘差沒有互相關係,表示符合獨立性。

今天的文章就到這裡,下一篇會使用同樣的資料來示範Stepwise 逐步挑選的迴歸分析。

下一篇:[SAS]迴歸分析 — 模型挑選

2020-02-26 0 comment
1 FacebookTwitterPinterestEmail
SAS

[SAS] 如何使用SAS做出描述性統計 SAS Description

by wenwu 2020-01-22

[SAS] 如何使用SAS做出描述性統計

描述統計量\直方圖 histogram\盒狀圖 box plot\散佈圖 scatter plot

統計可以分成兩個部分,敘述統計和推論統計。若是將現有的數據做預測亦或是推論都算是推論統計,反之若是使用現有的數據以此呈現,那就是敘述統計。而我們在一開始認識一筆資料或是一組數據最直接的方式,就是對於數據的描述。今天要使用SAS 來介紹以下幾種描述資料的方式


描述資料概論

最基本描述樣本的方式,就是知道(1)樣本的個數 (2)樣本的描述統計量(平均數 、中位數 )等相關的資訊

這次使用的資料如下:

data data1;
input subject gender $ Height Weight @@;
Datalines;
1 M 190 80 2 F 178 80 3 F 181 71 4 M 175 67
5 M 183 70 6 M 192 100 7 F 177 66 8 M . 90
;

(資料來源,SAS在統計學的應用,p37)

如果要知道基本的描述統計量的話,可以使用 proc means ,輸入完資料後再將需要的資訊 ,n代表個數, mean代表平均數, std代表簡單表準差, stderr代表標準誤差, min代表最小值, max代表最大值, sum 代表總和, var代表變異數 , Maxdec = 2 代表取到小數點後第二位。

proc means data=data1 Maxdec=2 n mean std stderr min max sum var;
 title descriptives;
run;
code of proc means

結果如下圖,SAS會依照每一個變項個別算出輸入的描述統計量,比較特別的是 subject 是我給的編號,SAS也一起算進去了。而最後一位的身高是遺失資料,所以個數等於七,SAS會自動刪掉遺失值來計算。

如果想要將資料分組,在個別計算統計量,只要加上class gender ,SAS會自動分組並計算指定的統計量

如果想要知道其他的敘述統計量,可以使用 「執行單變量統計」(Proc Univeriate) ,給完資料後給定 “normal” 和 “plot” 就可以得到「常態性」 、「莖葉圖」 以及「箱型圖」,記得要設定 var 值喔(就是你有興趣的變數)

proc univariate data=data1 normal plot ;
title simple descriptive statistics ;
var height weight;
run;

這邊設定的變數為 height & weight ,SAS會依照這兩個變數提供所有相關的數值,這邊就不一一列出了,大家記得跑跑看。在output的最後會出現「常態性」 、「莖葉圖」 以及「箱型圖」。


直方圖 histogram

如果不想要上面生成的直方圖,我們也可以用proc univariate 來畫。給定histogram之後設定參數height,之後可以再設定間距是多少,這邊的設定是從160到200 間距為五。後面加上Normal 則是加上常態分佈的曲線(幫助我們看這組資料是否靠近常態分佈,或是比較有什麼樣的差異)

proc univariate data=data1 ;
 histogram height/ midpoint = 160 to 200 by 5 Normal;
run;
code of histogram

最終的直方圖就會長這樣啦!


盒狀圖 box plot

盒狀圖是本篇中我最喜歡的方式,因為在一個小小的盒狀圖可以得知許多的資訊。讓我們看看維基百科的解釋,下面的盒狀圖可以告訴我們甚麼數據呢?

                            +-----+-+       
  *           o     |-------|   + | |---|
                            +-----+-+    

+---+---+---+---+---+---+---+---+---+---+   分數
0   1   2   3   4   5   6   7   8   9  10

這組數據顯示出:

  • 最小值(minimum)=5
  • 下四分位數(Q1)=7
  • 中位數(Medium — 也就是Q2)=8.5
  • 上四分位數(Q3)=9
  • 最大值(maximum )=10
  • 平均值(Mean)=8
  • 四分位間距(interquartile range)={\displaystyle (Q3-Q1)}=2 (即ΔQ)

沒錯,盒狀圖可以知道最大值最小值,Q1~Q3,平均值和中位數,也可以直接看出有沒有離群值

上面在跑Proc Univeriate 時,就會出現小小的盒狀圖,若是想要依照性別分組畫出盒狀圖時,可以使用下列的語法 ( 記得要先排序,才能畫出來喔) 
先使用proc sort 依照gender 排序, 在使用boxplot *後面是分組的變項

/*box plot 分類 BY gender*/
Proc sort data=data1; by gender;
Proc boxplot data=data1 ;
Plot (height weight)*gender; run;

跑出來的圖如下,分別依照性別做分類的盒狀圖。

在proc boxplot 的語法中, plot *之後一定要加上分組的類別,如果不想分組該如何解決呢?

只要將data 增加一筆變項 group ,每一位病人都是1 這樣就好了 ( 一樣需要先排序)

data data2 ; set data1; group=1; run;
Proc sort data=data2; by group;
Proc boxplot data=data2 ;
Plot height*group;
run;

這樣跑出來的盒狀圖就是一個了!


散佈圖 scatter plot

散佈圖也是一種很好呈現數據的方法,但是資料僅限於兩個變項,主要是看兩個變項的關係(是否有相關,正相關或是副相關),如果有興趣可以看一下之前寫的 [R]散佈圖與相關係數 ,這篇使用R軟體介紹了散佈圖與相關係數的關係,而且有很詳細的公式計算。

使用proc plot 就可以畫出散佈圖,symbol value 為非必要,這邊的設定是紅色三角形。

proc plot data=data1;
plot weight*height;
symbol value= triangle color=red;
run;

畫出來的散佈圖如下,可以發現兩者的相關性很高。

這邊直接附上correlation 的算法和檢定

proc corr data=data1;
with height;
var weight; run;

下圖為output,相關係數為0.78881,p-value = 0.0350,表示兩者有顯著相關。

使用上面的方法,就可以呈現各種數據的型態了喔! 

2020-01-22 0 comment
1 FacebookTwitterPinterestEmail
SAS

[SAS] One-way ANOVA 單因子變異數分析

by wenwu 2020-01-13

[SAS] One-way ANOVA 單因子變異數分析

開站來第一篇文章就是講到 t-test : [SAS][R]常用的三種t-test 
t-test 可以檢定兩組資料的平均數是否有顯著差異,如果資料多於兩組我們該怎麼檢定呢? 當然我們可以使用多次的t-test 兩兩檢定,但是這不僅花時間,更會增加型一誤差的機率。
今天要介紹變異數分析 ANalysis Of VAriance 簡稱ANOVA

變異數分析 ANOVA

為甚麼叫做變異數分析呢? 因為在變異數分析中,我們利用樣本資料間的變異來推斷各組樣本的母體平均數是否具有顯著差異

在執行變異數分析前需要符合下列假設 : 
1.常態性:母體需要符合常態分佈
2.同質性:母體變異數必須具有同質性
3.獨立性:樣本之間必須獨立

要怎麼執行變異數分析呢?
事實上變異數分析是一種假設檢定,虛無假設為各組樣本的母體平均沒有差異,對立假設為至少有一組樣本的母體平均數與其他有差異
H0: μ1= μ2= μ3= … = μk 
H1: μi ≠μj , i , j = 1 …. k

變異數分析執行的概念以及方法 : 
1.組間變異=SSR
2.組內變異=SSE
3.總變異=SST 
公式如下圖:

其中,SST=SSR+SSE , ni 為每一組樣本數, μi為每一組平均數 ,y bar 為全部樣本的平均

ANOVA table

上面三個公式讓你昏了嗎? 別急! 
下面的ANOVA table 讓你輕鬆算出統計檢定量F 
其中n是全部的樣本數,k是組別數

統計檢定量F=MSR/MSE ~ F(n-1,n-k) 
如果F>Fα(k-1,n-k) ,就拒絕虛無假設

EXAMPLE

現在就直接套入資料來算吧! 
假設我們想要知道大華國小 A\B\C 班的數學成績是否有差別
A班同學的成績: 64\85\82\74\92
B班同學的成績: 94\76\67\85\85
C班同學的成績: 70\55\49\60\61

A\B\C 班的平均為: 79.4\81.4\59 ,全部人的平均為:73.2667

SSE= (64–79.4)²+(85–79.4)²+(82–79.4)²+(74–79.4)²+(92–79.4)²+(94–81.4)²+ … + (85–81.4)²+(70–59)²+(61–59)² = 1126.4

SSR= 5*(79.4-73.2667)²+ 5*(81.4–73.2667)²+ 5*(59–73.2667)² = 1536.533

SST=SSE+SSR=2662.933

n=15,k=3,所以從上到下的自由度分別為 2 / 12 / 14

MSR=SSR/(k-1)=SSR/2=768.2667
MSE=SSE/(n-k)=SSE/12 =93.8667
F=MSR/MSE=8.184659

當 α=0.05 時,F(k-1,n-k)=F(2,12)=3.89
F = 8.184659 > 3.89 ,拒絕虛無假設,表示三個班級間的成績有顯著差異

Example for SAS

接下來就使用SAS來示範拉~~~

同樣使用上面的資料,輸入的資料如下:

data score;
 input group $ math @@ ;
 datalines;
 A 64 A 85 A 82 A 74 A 92 B 94 B 76 B 67 B 85 B 85 C 70 C 55 C 49 C 60 C 61
 ;

ANOVA 的SAS code 如下:

proc anova data=score;
class group;
model math= group;
run;

class 組別 ;
model 變數=組別

在output的第一個表格就是ANOVA table 
SSR=1536.5333
SSE=1126.4000
SST=2662.9333 
MSR=768.2667
MSE=93.86667 
F=8.18 ,使用SAS 就不用查表了, p-value=0.0057 ,表示拒絕虛無假設,三個班的成績有顯著差異

跑SAS時也會附上盒鬚圖,可以發現C班的成績比其他班低

One-Way ANOVA 就介紹到這裡了,希望之後還有機會介紹其他的變異數分析

2020-01-13 0 comment
0 FacebookTwitterPinterestEmail
R

[R]散佈圖與相關係數 Scatter plot & Correlation

by wenwu 2019-12-31

[R]散佈圖與相關係數 Scatter plot & Correlation

在我們收集的資料中,兩個不同的連續變數是否會有某些程度的連結或是影響呢? 比方說喜樂國小的A班的學生數學成績比較高,那英文成績會因此影響嗎? 身高高的人,是否體重也比較重呢? 兩個變數的關係是因著其中一個增加而降低或是減少呢?

有很多方法可以看見兩個變數之間的關係,最直覺的方法可以使用兩個變數畫出散步圖,先觀察兩者的關係。


散佈圖Scatter plot

假設我們現在有兩個變數 x & y ,資料如下

x <- c(11,16,19,18,20,23,19,21,24,29)
y <- c(23,26,34,29,33,27,23,36,30,40)

使用 plot 函數畫出散步圖

plot(x, y)

下面是plot(x, y)畫出的散步圖,可以發現這十個點好像呈現一條線的樣子(從左下到右上) ,可以發現好像x 增加了,y也增加。但是兩個變數的相關性強還是弱,在統計上無法直接用圖形來解釋,我們可以使用相關係數知道他們的關係。


皮爾森相關係數Pearson Correlation

皮爾森相關係數的公式如下:

相關係數的性質:

  1. 相關係數是一純量(scalar),具有單位不變性的性質
  2. 0<=|r|<=1
  3. |r|越靠近1表示X和Y的直線關係越強
  4. |r|表示表示X和Y的沒有直線關係,但不代表X和Y不具有其他的非直線關係

相關係數的意義:

  1. r的正負號代表著X與Y的相關性,如果r>0,表示X和Y為正相關,亦代表Y值會隨X值變大而增大;反之,如果r<0,表示X和Y為負相關,亦代表Y值會隨X值變大而縮小。
  2. |r|<=1。若|r|=1 則表示X和Y在一直線上,|r|越靠近1表示X和Y的直線關係越強;反之,若|r|越靠近0則表示X和Y的直線關係越弱。
  3. 若 |r|=1.00 代表 兩組變數完全相關
    若 |r|介於0.70到0.99 代表 兩組變數高度相關
    若 |r|介於0.40到0.69 代表 兩組變數中度相關
    若 |r|介於0.10到0.39 代表 兩組變數低度相關
    若 |r|小於0.1 代表 兩組變數相關非常低

要如何計算相關係數呢?直接使用R的cor 函數

cor(x,y)

相關係數 r=0.6991015,r>0 表示 x&y為正相關,|r|=0.699 很靠近0.7 表示 x&y 有高度相關,下面介紹假設檢定來看兩者是否有顯著相關

H0: r = 0 ,H1: r ≠0
設立虛無假設為相關係數等於零,而對立假設不為零

檢定統計量如右圖
其中 r 為相關係數
n 為樣本個數

同樣使用R的函數 cor.test ,會出現統計檢定量 t , p-value ,correlation

cor.test(x,y)

可以看到相關係數r=0.6991015,統計檢定量t=2.7654,以及p-value=0.02447 < α=0.05 表示reject H0 ,兩者有顯著相關。


散佈圖加上趨勢線

我們已經有相關係數,也知道兩者有顯著相關了,再來我們在圖上加上趨勢線,可以幫助視覺化,並且把相關係數跟p-value加在圖上

plot(x, y)
abline(lm(y~x),col=”red”)
legend(“topleft”, legend = c(“r = 0.6991015”, “p — value = 0.02447”))

搭拉~~~最後我們的圖就完成啦 !

終於完成我的小小目標在2019完成十篇文章啦! 2020 也請大家多多指教 
祝大家新年快樂 ~

wen 2019/12/31

2019-12-31 0 comment
0 FacebookTwitterPinterestEmail
統計分析

整體存活率 vs 無病存活率 overall survival vs disease-free survival

by wenwu 2019-12-27

整體存活率 vs 無病存活率
overall survival vs disease-free survival

在使用存活分析時,通常我們想要知道是事件的存活率是多少? 
或是時常聽到五年的存活率是多少?究竟要怎麼解釋呢?

在存活分析中,通常我們會設定一個起始時間,像是確診某疾病的時間或是接受手術的時間點,並且觀察特定事件(event)(死亡或疾病復發),進一步計算疾病的存活率。


整體存活率( overall survival )

在醫學上,我們有興趣的事件(event),通常都是死亡。使用在整體存活率的特定事件(event)也是死亡。

假設完成某手術後的一年存活率為60%,指的是觀察一年之後,有百分之六十的病人一年後還存活。中位存活率(median overall survival)為 14個月,表示約有一半的病人存活超過14個月。

無病存活率( disease-free survival )

那無病存活率又是甚麼呢?

在整體存活率中,我們將觀察的事件設定為死亡。而在無病存活率中,將特定事件設定為死亡或是復發的事件。亦即,若是遇到死亡或是復發,就代表我們有興趣的事件發生了。

若是在病人想要知道手術之後復發的機率,我們就可以提供手術一年 、三年 、五年的無病存活率。假設此手術的三年無病存活率為60%,表示有百分之六十的病人在未來三年後不會復發並且存活。


本篇簡單介紹了整體存活率和無病存活率,希望可以幫助到有需要的朋友

前兩篇介紹了存活分析survival analysis 的 KM survival plot 和 Cox model 
 在這裡 → [SAS]存活分析(1) KM存活曲線
 和這裡 → [SAS]存活分析(2) COX regression model

再加上這一篇介紹整體存活率以及無病存活率,如果第一次要使用存活分析應該綽綽有餘了 ! 希望之後還有空可以寫 R 的版本 ,存活分析就先告一段落啦~~~

2019-12-27 0 comment
1 FacebookTwitterPinterestEmail
SAS

[SAS]存活分析(2) COX regression model

by wenwu 2019-12-18

[SAS]存活分析(2) COX regression model

使用存活分析時,除了想要了解不同組別之間是否有顯著差異外,我們也想要了解不同的自變項(X)對存活的影響。正常情形下,我們研究樣本的病人會有不同的特徵,像是性別 、年齡、是否接受特定手術、本身的健康數據等等,我們可以使用 Cox model 知道這些變項對存活函數的影響是什麼。

本篇要介紹的就是Cox proportional hazard model ( Cox比例風險模式 )。在 Cox model中,自變項(X)可以超過兩個以上,並且不管是類別變項或是連續變項都可以。藉著Cox model,我們可以知道各變項的風險,並且調整這些潛在的解釋變數之後,比較各種治療之間的存活時間或存活機率。


example for SAS

和上一篇一樣在我們的研究範圍中追蹤20個病人 ,因為我們想使用Cox model來知道不同類別的自變項對存活函數的影響是甚麼,所以這邊加上了兩個新的變數,第一個是連續資料 weight ,第二個是類別資料 :年齡的分類 age_group ,下面是SAS code 可以直接使用

Data data_cox;
input id time status sex$ weight age_group$ @@;
datalines;
1 121.98680 1 M 58.6 40–49 2 66.33585 0 F 62.4 50–64 3 101.31992 1 M 76.5 40–49 4 120.96599 1 F 56.8 65up 5 30.89584 1 M 66.3 50–64 6 88.88542 0 M 62.7 50–64 7 114.43314 0 F 59.5 65up 8 76.36350 0 M 68.9 50–64 9 139.02362 0 F 74.5 40–49 10 42.17000 0 F 67.5 65up 11 111.80827 1 M 64.1 50–64 12 122.19009 1 F 66.8 40–49 13 80.05458 1 M 81.2 65up 14 107.82935 0 M 64.4 50–64 15 81.77838 0 F 69.4 50–64 16 85.48578 1 M 75.8 65up 17 93.72746 1 F 59.1 50–64 18 69.38994 0 M 63.5 40–49 19 53.35931 0 F 71.5 50–64 20 87.06297 1 M 65.8 40–49
;

單變項的Cox model

我們想要知道每個變項的Cox model,首先使用weight
weight是連續的資料,給定data之後再設定model 
因為是單變項的cox model ,這邊只想要知道weight對存活函數的影響
所以等號前面的第一項先放time,也就是我們的追蹤時間,乘上status,也就是我們有興趣的event ,time*status(0)這兩個組合其實就是我們的依變項(Y),等號後面放上我們的自變項(X),也就是weight

proc phreg data=data_cox; /*連續*/
model time*status(0)=weight/RISKLIMITS;run;

跑完之後就可以看到weight的Hazard ratio 和 95% HR CI 以及 p-value
p-value=0.5171 >0.05 ,表示沒有顯著影響的風險因子
(若p-value<0.05 ,表示有顯著影響並且每增加一公斤死亡風險增加1.031倍,注意!這邊並沒有顯著影響,只是舉例顯著時如何解釋風險函數)


class 類別資料

再來是類別資料 age_group,需要使用class 讓SAS知道他是類別,我們也需要設定一個參考組(param=ref ref=’40–49′),這邊的參考組是40-49歲的病人

proc phreg data=data_cox;
class age_group(param=ref ref=’40–49') ;
model time*status(0)=age_group/RISKLIMITS;run;

因為我們設定了參考組,在class level information 也可以看到 design variables : 40–49 的design variables都是0 ,表示參考組

跑完之後就可以看到weight的Hazard ratio 和 95% HR CI 以及 p-value
p-value >0.05 ,表示沒有顯著影響的風險因子
(若兩個p-value都小於0.05呢 ? 表示有顯著影響
年齡50-64歲的病人的死亡風險是參考組(40-49歲的病人)的2.716倍
年齡65歲以上的病人的死亡風險是參考組(40–49歲的病人)的2.856倍
注意!這邊並沒有顯著影響,只是舉例顯著時如何解釋風險函數)


class SEX

最後一個附上性別的cox model :

proc phreg data=data_cox;
class SEX(param=ref ref=’F’) ;
model time*status(0)=SEX/RISKLIMITS;run;

同樣,p-value = 0.0662 >0.05 ,表示沒有顯著差異


多變項的Cox model

接下來就是多變項的Cox model ,我們不只想要知道單變項對於存活函數的影響,也想知道多個自變項同時對於存活函數的影響。下面是程式的範例

在依變項(Y)的地方(model 等號的右邊)依舊是 time*status(0)
現在的自變項(X)不只是一個了,分別是SEX weight age_group 
若自變項是類別的話,記得加上class 並附上參考組讓SAS判讀
plots(overlay)=survival 則是會畫上經過調整後的KM plot

proc phreg data=data_cox plots(overlay)=survival;
class SEX(param=ref ref=’F’) age_group(param=ref ref=’40–49');
model time*status(0)=SEX weight age_group/RISKLIMITS;run;

結果如下,有沒有發現數字和剛剛單變項不同呢?
可以看到SEX 的 p-value <0.05 ,表示有顯著影響,男性病人的死亡風險是女性的7.971倍。

因為Cox 可以同時校正其他干擾因子,所以畫出來的KM plot 就是調整後的KM plot


KM survival curve

接著,如果想要和上一篇一樣比較兩組的存活率,這邊也有指令可以將KM 存活曲線分成兩組。baseline survival=s /diradj group=SEX;

proc phreg data=data_cox plots(overlay)=survival;
class age_group(param=ref ref=’40–49') SEX(param=ref ref=’F’);
model time*status(0)=age_group weight SEX /RISKLIMITS;
baseline survival=s /diradj group=SEX;
run;

我們將研究的病人依照性別分組,可以看到Hazard Ratio 跟上面是一樣的,加了baseline survival=s /diradj group=SEX; 可以將KM survival plot 分成兩組

如下圖,紅色是男性的KM 存活曲線,藍色是女性的KM存活曲線,都是經過Cox 之後,調整後的KM plot。有發現跟調整前的KM plot不一樣嗎? 可以看看上一篇文章[SAS]存活分析(1) KM存活曲線

經過調整後的KM plot

如何知道這兩組有沒有顯著差異呢? 可以看到Testing Global Null Hypothesis 的likelihood ratio p-value=0.0637>0.05 ,表示這兩組經過COX調整之後並沒有顯著差異。


存活分析最常使用到的 KM plot 和 Cox model 都在這兩篇講完啦!
接下來想介紹 : 整體存活率 vs 無病存活率

2019-12-18 6 comments
2 FacebookTwitterPinterestEmail
Load More Posts

近期文章

  • [SAS] Macro Language 基礎內容
  • ccClub 讀書會推薦,免費學python
  • [閱讀心得 #21]你願意,人生就會值得
  • 理想生活,該長怎麼樣子?
  • 多益330 → 多益785 多益成績棕色到藍色證書

近期留言

  • 「peter」於〈多益330 → 多益785 多益成績棕色到藍色證書〉發佈留言
  • 「wenwu」於〈[SAS]存活分析(2) COX regression model〉發佈留言
  • 「joey53111」於〈Statistical Programmer在CRO工作一年的心得〉發佈留言
  • 「丁柏仁」於〈Statistical Programmer在CRO工作一年的心得〉發佈留言
  • 「peter」於〈Statistical Programmer在CRO工作一年的心得〉發佈留言

免費訂閱

不定期更新文章,點一下追蹤就能夠收到最新文章!

一起加入其他 19 位訂閱者的行列

Statistics

  • 10,852
  • 592,939
  • 73
R 線上課程參考

@2019 - All Right Reserved. Designed and Developed by PenciDesign

Wenwu's blog
  • 文章總列表
  • 統計分析
    • R SAS All
      R

      [R]散佈圖與相…

      2019-12-31

      R

      [R]Logis…

      2019-10-31

      R

      [SAS][R]…

      2019-09-27

      R

      [R]Chi-s…

      2019-09-19

      SAS

      [SAS] Ma…

      2026-01-21

      SAS

      [SAS]傾向分…

      2020-10-28

      SAS

      [SAS]Log…

      2020-06-10

      SAS

      [SAS]迴歸分…

      2020-02-28

      統計分析

      [SAS] Ma…

      2026-01-21

      統計分析

      什麼是meta-…

      2024-11-05

      統計分析

      Test-ret…

      2024-06-07

      統計分析

      [SAS]傾向分…

      2020-10-28

  • SAS
    • SAS

      [SAS] Ma…

      2026-01-21

      SAS

      [SAS]傾向分…

      2020-10-28

      SAS

      [SAS]Log…

      2020-06-10

      SAS

      [SAS]迴歸分…

      2020-02-28

      SAS

      [SAS]線性迴…

      2020-02-26

  • R
    • R

      [R]散佈圖與相…

      2019-12-31

      R

      [R]Logis…

      2019-10-31

      R

      [SAS][R]…

      2019-09-27

      R

      [R]Chi-s…

      2019-09-19

      R

      [SAS][R]…

      2019-07-08

  • 機器學習
    • 機器學習

      Unsuperv…

      2021-07-22

      機器學習

      Unsuperv…

      2021-07-12

      機器學習

      Unsuperv…

      2021-05-20

      機器學習

      Unsuperv…

      2021-05-12

      機器學習

      Matrix F…

      2021-04-30

  • 閱讀筆記
    • 閱讀筆記

      [閱讀心得 #2…

      2025-02-05

      閱讀筆記

      [閱讀心得#20…

      2024-10-25

      閱讀筆記

      [閱讀心得#19…

      2024-08-16

      閱讀筆記

      [閱讀心得#18…

      2024-05-10

      閱讀筆記

      [閱讀心得#17…

      2022-01-22