15 August 2009

คำนวณ Sample Size ใน RCT

ปัญหาอย่างหนึ่งที่ผู้ทำวิจัยเกือบทุกคนจะต้องเจอ คือการคำนวณหาขนาดของกลุ่มตัวอย่าง (Sample Size) ที่จะทำการวิจัยครับ

ทำไมเราจึงต้องคำนวณขนาดของกลุ่มตัวอย่าง? นั่นเป็นเพราะว่าเราต้องการจะเก็บข้อมูลอย่างมีประสิทธิภาพให้ได้มากที่สุดครับ นั่นหมายความว่าเก็บจำนวนคนที่ร่วมวิจัยให้ได้น้อยที่สุด ในขณะเดียวกันก็ต้องให้ข้อมูลอย่างเพียงพอที่สุดที่จะตอบคำถามงานวิจัยได้

การเก็บจำนวนคนให้ได้มากๆ นั้นไม่ใช่ข้อดีเสมอไป นอกจากที่จะเปลืองทรัพยากรที่ใช้ เปลืองแรงคนเก็บ แล้วยังถือว่าเป็นการเปลืองตัวของคนไข้อีกด้วยครับ นั่นคือ เขาไม่จำเป็นจะต้องมาร่วมงานวิจัยก็ได้นั่นเอง (ซึ่งผิดหลักจริยธรรม หรือ Ethics)

ปัญหาของหลายๆ คนคือไม่ทราบว่าจะคำนวณขนาดตรงนี้ยังไงดี ผมขออธิบายง่ายๆ ก่อน ในกรณีของการศึกษาเปรียบเทียบการให้ยา (หรือให้ intervention อื่นก็ได้) สองกลุ่มเปรียบเทียบกันตามแบบ RCT 2 กลุ่มง่ายๆ ยกตัวอย่างเช่น ผมกำลังศึกษาเรื่องการให้ยาต้านไวรัส เทียบกับ placebo ในคนไข้ที่ได้รับการวินิจฉัยว่าเป็นไข้หวัด 2009 แล้วดูว่า อัตราการตาย มันลดลงหรือไม่นะครับ

สิ่งที่เราต้องมีอยู่ในมือมีสามอย่าง และมีในหัวอีกหนึ่งอย่างครับ

  • อย่างแรก ต้องมีอัตราการเกิด outcome ในกลุ่ม control นั่นคือ ต้องรู้ว่า คนที่ได้รับ placebo นั้น มีอัตราการตายเป็นเท่าไหร่ อันนี้จะหามาได้จากที่ไหน? เราอาจจะเทียบเคียงมาจากกลุ่มโรคใกล้ๆ กัน, หามาจากการศึกษาแบบ Cross sectional/Cohort หรือหามาจากการทำ Preliminary study (ลองศึกษาในผู้ป่วยจำนวนน้อยๆ 10-20 คน) ก็ได้ครับ


  • สิ่งถัดมา คือเราจะต้องรู้ว่าเราอยากจะเทียบให้มันต่างกันสักแค่ไหน ยกตัวอย่างเช่น เรารู้แล้วว่าคนปกติที่ได้ placebo นั้นมีอัตราตาย 1% เราอยากรู้ว่า ถ้าให้ยาต้านแล้วจะช่วยเปลี่ยนอัตรานี้เป็น 0.5% หรือเปล่า ตัวเลขนี้เป็นตัวเลขที่เรากำหนดเอาเองครับ โดยอาจจะเทียบเคียงกันกับความสำคัญทางคลินิก หรือดูจากหลายๆ การศึกษาในโรคอื่นๆ ที่ผ่านๆ มา ถ้าเราตั้งน้อยไป ก็จำเป็นจะต้องใช้ตัวอย่างมาก (เปรียบเหมือน ของที่มีขนาดเล็กๆ ต้องอยู่กันมากๆ ถึงจะเห็น ในขณะที่ของใหญ่ๆ อยู่กันไม่มากก็เห็นแล้ว)


  • อย่างสุดท้าย คือการกำหนดค่าทางสถิติที่จะใช้ นั่นคือค่า Alpha และ Beta Error ครับ โดยทั่วไปแล้ว Alpha = 0.05 และ Beta = 0.20


  • ส่วนสิ่งที่ต้องมีอยู่ในหัว ก็คือต้องนึกได้ว่าเรากำลังจะวิเคราะห์ข้อมูลแบบใด ซึ่งโดยง่ายๆ แล้วส่วนมากเราจะวิเคราะห์ข้อมูลที่จุดสิ้นสุดของ Trial เป็น Outcome ว่าตาย หรือไม่ตาย ส่วน Exposure เป็นได้ หรือไม่ได้ อันนี้การวิเคราะห์ที่ใช้นั้นใช้วิธีแบบ Pearson Chi-square test (ไว้เรื่องสถิติจะมาเขียนให้ฟังในภายหลังนะครับ)


เราลองมาทำความเข้าใจกับคำว่า Alpha, Beta Error กันนะครับ

เราจะสังเกตได้ว่า มีโอกาสที่ในความเป็นจริง (the truth) -- ในที่นี้คือความเป็นจริงแท้ของตัวโรค -- นั้นการให้ยาสองอย่างมันแตกต่างหรือไม่แตกต่าง และในการศึกษาเรา มันอาจจะแตกต่างหรือไม่แตกต่างกันก็ได้ นั่นหมายความว่า เราทำการศึกษาไปนั้น มีโอกาสที่จะเกิดเหตุการณ์ได้ 4 กรณี


  • ในกรณีที่ความเป็นจริงมันแตกต่างกันจริงๆ ส่วนเราศึกษาแล้วก็พบว่าแตกต่างจริงๆ ก็ไม่มีปัญหาอะไร แสดงว่าเราพบถูก (True positive)

  • ในกรณีที่ความเป็นจริงมันไม่แตกต่าง และเราศึกษาก็ไม่พบว่ามันแตกต่าง ก้ไม่มีปัญหาเช่นกัน (True negative)

  • ในกรณีที่ความเป็นจริงมันไม่แตกต่าง แต่เราดันศึกษาได้ว่ามันแตกต่าง (False Positive)

  • สุดท้าย ในกรณีที่ความเป็นจริงมันแตกต่าง แต่เราดันศึกษาแล้วพบไม่แตกต่าง (False Negative)



ปัญหามันอยู่ตรงที่ ถ้าเราสรุปจากการวิจัยได้ไม่ตรงกันกับความเป็นจริงแท้ของตัวโรค มันจะเป็นอย่างไร


  • ถ้าความเป็นจริง มันก็ไม่ได้แตกต่างอะไร แต่เราดันไปเจอว่ามันแตกต่างกัน (False Positive) อันนี้เราเรียกว่า Alpha error หรือตำราหลายๆ ที่จะเรียกว่า Type I error ครับ หมายความว่าจริงๆ การให้ยามันไม่ต่างหรอก แต่เราดันไปเจอด้วยโอกาสหรือความผิดพลาดอะไรก็แล้วแต่ แล้วดันสรุปว่าการให้ยามันดีกว่า

    ปกติแล้วโอกาสที่จะเกิด Alpha error นี้มักจะำกำหนดให้เป็น 0.05 หรือน้อยกว่า อันนี้ก็คือ Significant level ของเราหรือก็คือที่หลายๆ คนชอบบอกว่า p Value < 0.05 ถือว่า Significant นั่นเองครับ เช่น ผมศึกษาแล้วพบว่าการให้ยานั้นอัตราตายในกลุ่มได้ยา = 0.5% กลุ่มไม่ได้ยา = 1% แล้วพบว่า p Value = 0.05 พอดี นั่นหมายความว่า สิ่งที่ผมพบว่ามันแตกต่างนี้ มีโอกาสที่มันจะเกิดจากความฟลุ๊ค (โดยบังเอิญ) = 0.05 (หรือภาษาชาวบ้านก็คือ 5%)

    ทำไมต้องเป็น 0.05 (หรือ 5%) อันนี้ไม่มีใครตอบได้ครับ เพราะจริงๆ แล้วเราจะกำหนดที่เท่าไหร่ก็ได้ จะเอาโหดหน่อย 0.025 ก็ได้ แต่แน่นอนว่าถ้ายิ่งน้อยก็ยิ่งต้องการ Sample size เยอะขึ้นเรื่อยๆ ด้วยครับ


  • อันต่อมา ถ้าความเป็นจริงมันแตกต่างกัน แต่เราดันไม่พบความแตกต่างในการทำ Study (False Negative) อันนี้เราเรียกว่า Beta error หรือ Type II error ครับ เช่นยกตัวอย่างเดียวกัน ถ้าผมไม่พบว่ายาต้านไวรัสมันทำให้อัตราตายลดลง แต่ในความจริงแล้วมันดันทำให้ลดลงนั่นเอง

    ค่าโอกาสด้านกลับของ Beta (1 - beta) เราจะเรียกว่า Power ของการศึกษานี้ครับ (เหมือนว่าการศึกษาเรามี "พลัง" ในการ detect ความแตกต่างในธรรมชาตินี้ได้ซักเท่าไหร่) โดยทั่วไปเรากำหนด Beta = 0.2 เพราะฉะนั้นแล้วก็มักจะได้ Power = 1-0.2 = 0.8 นั่นเองครับ


เมื่อเรารู้ค่าต่างๆ เหล่านี้แล้วเราสามารถนำมาคำนวณขนาดของตัวอย่างได้ตามสมการสำหรับการคำนวณ n ใน trial ที่ใช้การวิเคราะห์เป็น Chi-square คือ



โดย

P0 = อัตราของ outcome ในกลุ่ม control
P1 = อัตราของ outcome ในกลุ่มที่ให้ intervention นั่นก็คือ อัตรา outcome ของ control - ความแตกต่างที่เราต้องการ detect
P bar = ค่าเฉลี่ยของ P0 และ P1 ก็คือ (P0+P1)/2
Z a/2 = ค่า Z ของ alpha error ในที่นี้ค่า Z a/2 ที่ alpha = 0.05 จะได้ 1.96 (แนะนำว่าของ study ทั่วไปก็เท่านี้ละครับ)
Z b = ค่า Z ของ beta error ในที่นี้ค่า Z b ที่ beta = 0.2 จะได้ 0.84 (แนะนำแบบเดียวกัน)
และ n ที่ได้ออกมานี้ เป็น n ของแต่ละกลุ่ม นะครับ นั่นหมายความว่าเรามีสองกลุ่ม (control/intervention) ก็ต้องคูณ 2 เข้าไปด้วยนะ

ถ้าค่า Z มันเหมือนกันทุกการศึกษา เราก็จะแทนสูตรได้แบบนี้ครับ:



เรามาลองคำนวณดูนะครับ

สมมติว่าผมทำการศึกษาด้วยการให้ยาต้านไวรัสในกลุ่มคนไข้ที่เป็นไข้หวัด 2009 โดยดู outcome คืออัตราการนอนโรงพยาบาล การศึกษาก่อนหน้านี้พบว่าอัตราการนอนโรงพยาบาลในกลุ่มที่ไม่ได้รับยานั้น = 15% และผมอยากรู้ว่าถ้าอัตรามันต่างกัน +- 5% (เป็นเลขสมมติของผมที่ผมคิดว่ามันน่าจะมีความสำคัญนะ ระหว่าง 15 กับ 10%) ที่ Type I error = 5% และ Type II error = 20% นี้ผมต้องใช้ Sample Size เท่าไหร่

เราก็เข้าสูตรมาเลยนะครับ ลองคิดดูกันก่อนนะครับ (ลองแทนก่อนแล้วค่อยดูเฉลยนะครับ)

.
.
.

จากโจทย์ เราจะได้ค่าต่างๆ คือ
P0 = 0.15
P1 = 0.15 - 0.05 = 0.10
Pbar = (P0+P1) /2 = (0.15+0.10) /2 = 0.125
Alpha = 0.05
Beta = 0.20

ดังนั้น เราจะสามารถแทนค่าในสูตรได้ดังนี้



นั่นคือ คำตอบ = 685 คนโดยประมาณในแต่ละกลุ่ม ซึ่งก็คือ คนทั้งหมด = 2*685 = 1370 คนนั่นเอง คิดได้เหมือนกันบ้างไหมครับ?

จริงๆ แล้วเราไม่ต้องมานั่งแทนค่าในสูตรเอาก็ได้ เดี๋ยววันหลังผมจะมาแนะนำวิธีการใช้โปรแกรมช่วยในการคำนวณนะครับ :D

10 comments:

DoRaePEET said...

2*685=1370 ? ^^

Pawin Numthavaj, M.D. said...

@DoRaePEET อ่าฮะ ขออภัยครับ :D

DoRaePEET said...

@pawinpawin มิเป็นไรครับ คุณหมอปวิน แต่ถ้าเป็นข้อสอบเติมคำแบบไม่แสดงวิธีทำนี่ ถึงกับร้องไห้เลยทีเดียว 555

นพฤทธิ์ said...

ขอบคุณครับ ช่วยได้เยอะเลย หุหุ

อยากถามอีกนิดนึงว่า สมมติเป็นการทดสอบวิธี 2 วิธีในการ detect ADR ก็ใช้วิธีคิดแบบเดียวกันใช่มั้ยครับ แล้วค่า Po ก็มาจากการ review paper ที่เค้าทำมาแล้ว แล้ว P1 นี่จะสมมติเท่าไหร่ดีครับเพราะทั้งสองวิธีก็ไม่สามารถ detect ได้ 100%

ขอบคุณล่วงหน้าครับ

Anonymous said...

อยากทราบ วิธีว่า Acceptable error (d) มาได้อย่างไร???

ขอบคุณค่ะ

Pawin Numthavaj, M.D. said...

คุณนพฤทธิ์
น่าจะเป็นวิธีเดียวกันครับ อย่างไรก็ดีลองปรึกษานักสถิติดูก่อนนะครับ ผมไม่แน่ใจว่ามันจะเป็นอารมณ์ non-inferiority trial หรือเปล่า ซึ่งจะใช้อีกวิธี (ไว้ว่างๆ จะรีวิว non-inferiority trial ให้อ่านครับ) P1 นี่สมมติเองเลยครับว่าเราจะยอมรับความแตกต่างซักเท่าไหร่

คุณ Anonymous
ส่วนค่า Acceptable Error (d) ไม่แน่ใจว่าหมายถึงสูตรไหนครับ สูตรการคำนวณ sample size มีหลายสูตร แต่ละสูตรมีนิยามตัวแปรแตกต่างกัน สำหรับที่ผมยกมาเป็นการดูความแตกต่างในคนสองกลุ่มอย่างง่ายครับ

นพฤทธิ์ said...

ขอบคุณครับ

แล้วจะติดตามอ่านต่อไปครับ

Anonymous said...

ถ้าการศึกษาบอกว่าไม่ต่าง แต่ความเป็นจริงแล้วมันต่าง แสดงว่า beta error ก็สำคัญมากเลยใช่มั๊ยคะ

Anonymous said...

รบกวนด้วยคะ
สงสัยว่าถ้าเรามีประชากร 100 คน แลัวใช้ทั้ง 100 คน มาศึกษา
แบบนี้เรายังต้องหาขนาด sample size รึเปล่าคะ

แล้วยังต้องใส่สูตรการหา sample size ในการขอจริยธรรมวิจัยในคน
รีเปล่าคะ

Pawin Numthavaj, M.D. said...

มีประชากร 100 คน อันนี้จริงหรือครับ?
เพราะส่วนใหญ่การทำ Research นั้นมักจะเอาไปแปลผลเพื่อคาดถึงผลในคนที่ไม่ได้ศึกษา (เช่น คนในอนาคตที่ไม่ได้เป็นโรค คนในจังหวัดหรือประเทศอื่นที่ไม่ได้ศึกษาเป็นต้น) ถ้าคิดว่าจำกัดของเรา 100 คนนี้เราจะไม่เอาผลไปใช้กับคนอื่นอีก ก็ไม่ต้องคำนวณครับ

การขอ Ethics ที่ดีควรใส่ครับ ถ้าไม่ใส่บางที่ก็อาจจะให้ผ่าน แต่ถ้าจะเอาจริงๆ แล้วก็เหมือนกับที่ผมเกริ่นไปข้างต้นของบทความน่ะครับ

Post a Comment

ช่วยแสดงความคิดเห็นเกี่ยวกับบทความนี้ด้วยนะครับ
Please leave your comments about this topic.