16 กุมภาพันธ์ 2552

ใช้โปรแกรม R ช่วยคำนวณ Odds Ratio

มีหลายคนเมล์มาถามผมเกี่ยวกับการคำนวณ Odds Ratio ที่ได้จากการศึกษา วันนี้ผมขอแนะนำโปรแกรมทางสถิติตัวหนึ่งที่นักสถิติและนักระบาดวิทยาหลายคนชอบใช้ นั่นคือโปรแกรม R ครับ

หลายท่านคงเคยได้ยินโปรแกรม SPSS (ซึ่งย่อมาจาก Statistical Package for the Social Sciences) มาแล้ว แต่ท่านทราบหรือไม่ ว่าท่านอาจจะกำลังใช้โปรแกรมนี้อย่างผิดกฎหมายอยู่! นั่นเป็นสิ่งที่ไม่ดีเลยครับ เรามาใช้โปรแกรมอื่นทดแทนโปรแกรมที่ผิดลิขสิทธิ์กันดีกว่า

โปรแกรม R นี้พูดแล้วก็เปรียบเสมือนเครื่องคิดเลขหนึ่งอันครับ โปรแกรมนี้สร้างโดยนักสถิติชาวนิวซีแลนด์ชื่อ Ross Ihaka และ Robert Gentleman ทั้งสองท่านนี้เห็นว่าโปรแกรมสถิติที่เราๆ ท่านๆ ใช้กันอยู่นั้นส่วนใหญ่จะมีราคาแพงถึงแพงหูฉี่ ก็เลยลองเขียนโปรแกรมขึ้นมาใช้เองดู และยังเผยแพร่โค้ดโปรแกรมออกมาอีกด้วย

เนื่องจากเป็นโปรแกรมที่สามารถดาวน์โหลดมาใช้ได้ฟรี ก็อาจจะไม่มีการรับประกันใดๆ อย่างไรก็ตาม โปรแกรมนี้เป็นโปรแกรมที่ได้รับการยอมรับจากนักสถิติทั่วโลกเลยทีเดียวครับ (Paper หลายอันใช้โปรแกรมนี้ในการคำนวณ)

พูดมานานแล้ว มาโหลดไปใช้กันดีกว่า เข้าหน้านี้ (http://www.r-project.org/) แล้วเลือกทำตามขั้นตอนต่อไปนี้เลยครับ

R_install1

1. เลือก Download ใต้หัวข้อ CRAN
2. เลือกสถานที่ที่ใกล้เราที่สุดเพื่อจะได้โหลดเร็วๆ (เมืองไทยก็มี) แต่แนะนำ Australia เพราะเมืองไทยมักไม่อัพเดต

R_install2

3. เลือกวินโดวส์ ถ้าคุณใช้วินโดวส์
4. เลือก base
5. เลือกอันที่ลงท้ายด้วย .exe ครับ (มันจะเป็นชื่อเวอร์ชั่นอยู่เช่นขณะที่ผมเขียนอยู่นี่มัน 2.8.1)

R_install3

6. ได้มาแล้ว ลงตามปกติเลยครับ

เมื่อเปิดโปรแกรมจะพบหน้าตาโปรแกรมดูโบราณๆ นิดนึง (เห็นโบราณแบบนี้แต่มันทรงพลังทีเดียวเลยล่ะ)

R_program1

สามารถลองพิมพ์ลงไปได้เลยครับว่าอยากจะให้มันคำนวณอะไร แล้วก็กด Enter

R_program2

ถ้าพิมพ์ผิดไม่ต้องกลัวมันไม่เจ๊งครับ มันก็แค่ขึ้น Error เท่านั้นแหละ แต่ถ้าพิมพ์ๆ ไปแล้วเป็นแบบนี้

> log(log(4)+sqrt(5)
+ |

นั่นเกิดจากว่าคุณใส่สูตรไม่จบ ส่วนมากเกิดลืมใส่วงเล็บ ก็แค่พิมพ์ ) เพิ่มไปแล้วกด Enter มันก็จะคำนวณให้ครับ

ฟังก์ชันที่ใช้นั้นก็มีหลากหลาย ตั้งแต่ธรรมดาๆ เชน log, sqrt (ย่อมาจาก square root), sin, cos, tan,… จนไปถึงฟังก์ชันทางสถิติเช่นพวกหา p-value จากค่า Chi-square เลยทีเดียวครับ (จนตอนนี้ผมใช้แทนเครื่องคิดเลขไปแล้วแหละ)

หมายเหตุนิดนึงว่าฟังก์ชัน log นั้นเป็นฐาน e นะครับ ถ้าต้องการฐานสิบ ก็พิมพ์ ,10 ในวงเล็บแบบนี้

> log(1,10)
[1] 0

สำหรับเลข [1] นั้นไม่ต้องสนใจครับ เขาใช้เวลามันมีผลลัพธ์เยอะๆ ขึ้นบรรทัดใหม่มันจะบอกว่าเป็นผลลัพธ์อันที่เท่าไหร่

ข้อดีของโปรแกรม R นี้นอกจากจะฟรีแล้วยังสามารถใส่ความสามารถอื่นๆ เข้าไปได้ ในวันนี้ที่ผมจะเอามาใช้คำนวณ Odds Ratio นั่นคือโปรแกรมเสริม EpiCalc โดยอาจารย์วีระศักดิ์จากมอ. เขียนไว้สำหรับทำงานด้านระบาด โดยเฉพาะเลยครับ

วิธีลงโปรแกรม Epicalc เพิ่มให้เราเลือกจากเมนูดังนี้

Epicalc_1

1. เลือก Packages –> Install Package(s)…
2. เลือกประเทศไหนก็ได้เหมือนเดิม (แนะนำ Australia เหมือนเดิมครับ)
3. จะเจอโปรแกรมเสริม (เรียกว่า package) มากมายก่ายกอง ให้เลือก epicalc ที่เราต้องการ

Epicalc_2

4. มันจะดาวน์โหลดมาให้เอง รอนิดนึงครับ

Epicalc_3

5. ดาวน์โหลดเสร็จแล้วยังใช้ไม่ได้ ต้องเลือก Load package… เพื่อเอามาใช้ก่อน
6. แล้วเลือก epicalc เหมือนเดิม

สำหรับขั้นที่ 5-6 นั้นต้องทำทุกครั้งหลังเปิดโปรแกรมใหม่นะครับ เอาละครับ ทีนี้มาลองใส่ข้อมูลกันเลยนะครับ

สมมติว่าผมทำการศึกษาคนไข้กลุ่มหนึ่ง โดยแบ่งคนไข้หูอักเสบเป็นสองกลุ่ม กลุ่มนึงให้หยอดยา อีกกลุ่มหยอดน้ำธรรมดา แล้วลองดูซิว่าทั้งสองกลุ่มหายหรือไม่หาย

ในที่นี้ exposure คือการหยอดยา (exposure +) หรือไม่หยอดยา (exposure –) และ outcome ที่ผมสนใจคือหูยังเป็นโรคอยู่ (outcome +) หรือหูไม่เป็นโรคแล้ว (outcome –) ถ้าเขียนตารางก็ได้ดังนี้ครับ

study1

แต่แทนที่เราจะมานั่งคำนวณเอง เราก็สามารถใช้โปรแกรม R+Epicalc นี้คำนวณได้ โดยใส่ฟังก์ชันดังนี้

> csi(3,29,18,13)

          Exposure
Outcome    Non-exposed Exposed Total
  Negative 13          29      42  
  Positive 18          3       21
  Total    31          32      63


           Rne         Re      Rt  
  Risk     0.58        0.09    0.33 
                       Estimate Lower95ci Upper95ci
Risk difference (Re - Rne) -0.49    -0.72     -0.25   
Risk ratio                0.16     0.06      0.41    
Protective efficacy =(Rne-Re)/Rne*100  
                           83.9     59.14     93.73   
   or percent of risk reduced
Number needed to treat (NNT)2.05   1.39      3.97    
   or -1/(risk difference)                                          

เราก็จะได้มาหมดเลย อย่างในที่นี้ที่จะรายงานก็คือ Relative Risk (Risk Ratio) = 0.16 โดยมี 95%CI = 0.06-0.41 ครับ

ถ้าจำไม่ได้ว่าในวงเล็บอันไหนเป็นอันไหน ก็ลองพิมพ์ดู แล้วดูว่าตารางนั้นออกมาตรงหรือเปล่าก็ได้ครับ แต่ถ้าอยากรู้คำสั่งให้มากขึ้น ให้พิมพ์

> help(csi)

จะขึ้นข้อความช่วยเหลือให้ครับ

ลองใช้กันดูนะครับ ผมหวังว่าจะมีประโยชน์ ถ้าว่างวันหลังจะมาเขียนเพิ่ม

17 ความคิดเห็น:

  1. ขอบคุณคะ

    ตอบลบ
  2. ไม่ระบุชื่อ22/12/52 04:02

    ขอบคุณมากเลยครับคุณหมอ ผมกำลังเรียนปเอกอยู่เหมือนกันอะครับ
    ผมต้องใช้ program r ในการจำลองข้อมูลครับ ผมไม่มีความรู้เรื่องโปรแกรมนี้มาก่อนเลยอะ ผมควรจะเริ่มศึกษาจากหนังสือหรืออะไรดีครับสำหรับคนที่ไม่มีความรู้ และผมต้องใช้โปรแกรม WinBUGS ด้วยอะครับ คุณหมอรู้จักโปรแกรมนี้ไหมครับ ไม่ทราบว่าจะมีข้อแนะนำไรบ้างครับ
    e-mail ผม n_chanasuek@hotmai.com ครับ

    ตอบลบ
  3. สวัสดีครับ
    เรื่อง Bayesian Interference นี่ผมไม่ทราบเลยจริงๆ ครับ (ความรู้แทบไม่มี)
    ยิ่ง BUGS ยิ่งไม่ทราบใหญ่ แฮะๆ ยังไม่ได้เก่งสถิติถึงขั้นนั้นครับ
    เท่าที่ทราบคือโปรแกรมนี้โหลดได้ฟรี และเชื่อมต่อกับโปรแกรมอื่นๆ ได้ (R ก็ได้ครับ) ครับ ขออภัยด้วยนะครับ

    ตอบลบ
  4. ไม่ระบุชื่อ28/12/52 14:09

    I using R in my work, if you have interested project about R, can I help you na krub....I like R programing very much...

    (A: jamlonga@gmail.com (0867290199))

    ตอบลบ
  5. ดิฉันกำลังเรียนป.ตรี เอกสถิติ ต้องทำโปรเจคเกี่ยวกับโปรแกรมRแต่ไม่มีความรู้เรืองโปรแกรมนี้เลยอ่ะค่ะแต่รู้เกี่ยวกับโปรแกรม spss , miniteb และ instat ค่ะ พอจะมีรายละเอียดเกี่ยวกับการใช้โปรแกรมR เช่น เรื่องการทดสอบสมมติฐานต่างๆทางสถิติ วิเคราะห์ความแปรปรวน การสร้งกราฟ ตารางบ้างไหมค่ะหรืออื่นๆก็ได้ค่ะ ขอคำแนะนำด้วยนะค่ะkatae15@hotmail.com ขอบคุณสำหรับข้อมูลการดาวโหลดนะคร้า

    ตอบลบ
  6. สำหรับนักวิจัย นักศึกษาทุกระดับ ที่สนใจที่ปรึกษาโปรแกรม R ติดต่อได้ที่คุณเต้ 089-7766306 / amto15@hotmail.com ถ้าต้องการคำแนะนำเล็กๆ น้อยๆ ผมให้ได้ฟรีครับ

    ตอบลบ
  7. ขอบคุณครับ

    ตอบลบ
  8. ไม่ระบุชื่อ13/2/54 21:11

    (gift) คือดิฉันต้องการใช้ program r ในการจำลองข้อมูล และไม่มีความรู้เรื่องโปรแกรมนี้มาก่อนเลย ควรจะเริ่มศึกษาจากหนังสือหรืออะไรดีสำหรับคนที่ไม่มีความรู้ อยากทราบโค๊ดเกี่ยวกับการจำลองข้อมูลค่ะ ขอความกรุณาช่วยแนะนำด้วยนะคะ

    nu_giftsa_@hotmail.com

    ตอบลบ
  9. ต้องขอโทษจริงๆ ครับ ผมไม่ทราบด้าน Simulation เลยครับ

    ตอบลบ
  10. ดิฉันอยากใช้ โปรแกรม R ในเรื่องการคำนวณค่ะ
    สมมติเรากำหนด 1เป็นเพศชาย 2เพศหญิง มีคำสั่งไหนมั๊ยคะ พอให้ผลลัพธ์โชว์ออกมาว่า เพศชายกี่คน

    ตอบลบ
  11. คุณอรุณี
    ลองเปลี่ยนตัวแปรให้เป็นแบบที่เราเรียกว่า factor นะครับ จะสามารถกำหนด label ได้ ลองดูตัวอย่างในนี้ประกอบนะครับ https://www.stat.berkeley.edu/classes/s133/factors.html

    ตอบลบ

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