Saturday, October 30, 2010

R Programing

แนะนำ R Statistical Programing

อภิชาต ศุรธณี และ กิติพร พลายมาศ


สวัสดีครับเพื่อนสมาชิกทุกท่าน เรื่องราวที่ท่านกำลังอ่านนี้ เป็นบทความในคอลัมน์ใหม่ ชื่อ R Programing ซึ่งจะไปอยู่ในส่วนของ SOFTWARE & PROGRAMING นั่นเองครับ สำหรับเรื่องราวในส่วนนี้ ผมอยากแนะนำให้เพื่อนสมาชิกได้รู้จักกับ “R-Programing” หรือที่เรียกย่อๆ กันว่า “R” โดยผมจะเริ่มจากเรื่องง่ายๆ เบาๆ ไปก่อนนะครับ แล้วก็จะค่อยๆ นำเสนอเพื่อนๆ เกี่ยวกับการใช้โปรแกรมไปจนถึงการประยุกต์ในครั้งถัดๆ ไป


ในตอนแรกนี้ ผมจะเล่าประวัติความเป็นมาของ R ให้ฟังสักเล็กน้อยนะครับ และหลังจากนั้นผมจะแนะนำให้รู้จักกับ Bioconductor ซึ่งเป็นโครงการที่พัฒนาแพ็คเกจ (package) สำหรับวิเคราะห์งานทางด้าน bioinformatics และในตอนต่อๆ ไป ผมจะแนะนำวิธีการติดตั้งโปรแกรม R ลงบนเครื่องคอมพิวเตอร์เพื่อการใช้งาน รวมทั้งแนะนำการเขียนสคริป (script) ง่ายๆ สำหรับการคำนวณทางสถิติพื้นฐานต่างๆ ไปจนถึงระดับที่ซับซ้อนยิ่งขึ้น รวมถึงการใช้งานฟังก์ชันและแพ็คเกจต่างๆ ที่เกี่ยวข้องกับงานทางด้าน bioinformatics ให้ผู้อ่านได้ศึกษาและสามารถนำไปประยุกต์ใช้งานได้จริงกับงานวิจัยของตนเองครับ


สำหรับผู้ที่คุ้นเคยกับ commercial softwares อย่างเช่น “MatLab” หรือจะซอฟแวร์จำพวก open source ต่างๆ เช่น “GNU Octave” คงจะสามารถทำความคุ้นเคยกับ R-programming ได้ไม่ยากนัก เพราะต่างก็มีลักษณะการใช้งานที่คล้ายกัน แต่หากใครเป็นมือใหม่ก็ไม่ต้องตกใจไปนะครับ เพราะเราจะมาทำความรู้จักกับ R ไปพร้อมๆ กันแบบ step-by-step แล้วเราจะพบว่า R นั้นสามารถทำอะไรได้หลายๆ อย่าง เช่นเดียวกันกับ commercial software ราคาแพงๆ เลยทีเดียว


รู้จัก R-programing


R เป็นภาษาโปรแกรม (programing language) เพื่อใช้ในการคำนวณเชิงสถิติและแสดงผลภาพกราฟฟิกที่ได้รับการพัฒนาต่อมาจากภาษา S-programing (statistical programing) โดย R นั้นจะอยู่ภายใต้ลิขสิทธิ์ของ GNU general public license ซึ่งเป็นลิขสิทธิ์ประกันความเสรีในการแบ่งปันและแก้ไขซอฟแวร์ โดยเราสามารถดาวน์โหลด R ได้ฟรีที่ http://www.r-project.org/ โดย R สามารถทำงานได้ในหลายระบบปฏิบัติการ ทั้ง Windows Linux และ Mac OS


ในโปรแกรม R นั้นจะประกอบไปด้วยแพ็คเกจและฟังก์ชันทางการคำนวณพื้นฐานมาให้แล้วครับ (หรือที่เรียกว่า R-base) จุดที่น่าสนใจของ R นั้นก็คือ เราสามารถดาวน์โหลดแพ็คเกจพิเศษที่เกี่ยวกับงานที่เราสนใจเพิ่มเติมได้ เช่น แพ็คเกจเกี่ยวกับการวิเคราะห์ microarrays, sequence data, gene ontology annotation หรือแพ็คเกจอื่นๆ ทางวิทยาการคอมพิวเตอร์และสถิติต่างๆ เช่น network analysis, decision tree, support vector machines, principle component analysis ที่ได้รับการพัฒนาและเผยแพร่ไว้แล้วมากมายครับ ในรูปด้านบน จะเป็นตัวอย่างการวาดภาพ network สวยๆ ด้วยฟังก์ชั่น plot ใน R ครับ ในปัจจุบันนั้นมีแพ็คเกจที่ถูกพัฒนาและแจกจ่ายมากถึง 2,500 กว่าแพ็คเกจด้วยกัน เรียกได้ว่าถ้าเราสนใจจะหาแพ็คเกจที่เกี่ยวข้องกับหัวข้องานที่เราสนใจอยู่ ก็มีโอกาสหาดาวน์โหลดมาทดลองใช้งานกันได้สะดวกเลยครับ นอกจากนั้นหากใครที่ได้พัฒนาโปรแกรมของตนเองด้วยภาษา R จนเชี่ยวชาญแล้ว อยากจะแจกจ่ายตัวโปรแกรมของเราให้ผู้อื่นได้ทดลองใช้งานบ้าง ก็สามารถทำเป็นแพ็คเกจของเราเองได้ โดยจะต้องทำตามเงื่อนไขและรูปแบบมาตรฐานที่กำหนดไว้ แล้วส่งไปเผยแพร่ในเว็บไซต์ของ R ได้ครับ ด้วยเหตุนี้เราในฐานะผู้ใช้อาจจะต้องระมัดระวังในการเลือกใช้แพ็คเกจอันใดอันหนึ่ง เราอาจจะต้องดูว่าผู้พัฒนาแพ็คเกจนั้นๆ ได้มีแหล่งอ้างอิงแพ็คเกจของตนเองไปยังผลงานตีพิมพ์ชิ้นใดหรือไม่ และน่าเชื่อถือเพียงใด แต่โดยส่วนใหญ่แล้วแพ็คเกจใน R ที่ได้รับการตีพิมพ์เผยแพร่ในวารสารทางวิชาการจะมีความน่าเชื่อถือมากกว่าครับ และนอกจากนี้แต่ละแพ็คเกจจะต้องมีคู่มือ (manual) หรือวิธีใช้มาให้ด้วย ซึ่งผมถือว่าเป็นข้อเด่นอีกข้อของ R ที่พยายามรักษามาตรฐานและอำนวยความสะดวกให้กับผู้ใช้อย่างดีทีเดียว เพราะนี่ถือเป็นข้อบังคับที่ผู้พัฒนาที่ต้องการแจกจ่ายแพ็คเกจของตนต้องทำ ผู้พัฒนาบางรายที่ต้องการแจกแจงความสามารถของแต่ละคำสั่งในแพ็คเกจของตนเองอย่างละเอียดนั้น ก็สามารถทำ tutorial แนบมากับแพ็คเกจนั้นๆ ได้ด้วย นับว่าเป็นประโยชน์ต่อผู้ใช้เป็นอย่างมาก เพราะจะมีทั้งตัวอย่างตั้งแต่การเริ่มวิเคราะห์ไปจนถึงการประยุกต์ใช้ทำให้ง่ายต่อการทำความเข้าใจมากขึ้น ซึ่งกลุ่มผู้พัฒนาแพ็คเกจทาง bioinformatics ที่มีชื่อเสียงและเชื่อถือได้ ได้แก่ Bioconductor นั่นเองครับ


Bioconductor


มาถึงส่วนของกลุ่มผู้พัฒนาแพ็คเกจทาง bioinformatics โดยเฉพาะครับ ในส่วนนี้ผมขอแนะนำ Bioconductor (รายละเอียดเพิ่มเติมที่ www.bioconductor.org) ซึ่งมีแพ็คเกจไว้แจกจ่ายมากกว่า 380 แพ็คเกจที่สนับสนุนการวิเคราะห์ genomic data ต่างๆ โดยเราสามารถติดตั้งแพ็คเกจของ Bioconductor บน R ได้ด้วยคำสั่งเพียงไม่กี่คำสั่ง ซึ่งง่ายและสะดวกดีครับ (รายละเอียดในการติดตั้งจะนำเสนอในโอกาสต่อๆ ไปนะครับ) นอกจากการพัฒนาแพ็คเกจแล้ว Bioconductor ยังมีการรวบรวมข้อมูลการทดลองต่างๆ ให้อยู่ในรูปของ data files ที่ใช้กับ R ได้ ซึ่งบางครั้งถูกนำไปใช้เป็น benchmark ในการทดสอบ algorithms ต่างๆ เพื่อวัดประสิทธิภาพในการวิเคราะห์และการคำนวณ ลักษณะตัวอย่างของข้อมูลนั้นได้แก่ affymetrix data, stem cells time course experiment รวมไปถึงข้อมูลการทดลองที่มีการเผยแพร่ในวารสารวิชาการบางฉบับด้วย อย่างข้อมูล acute lymphocytic leukemia (ALL) microarray dataset ของ Chiaretti et al. (2004) ก็ถูกจัดเก็บไว้ใน Bioconductor ในชื่อ dataset “ALL” ครับ และในรูปด้านบน เป็นภาพแสดงผลการวิเคราะห์ข้อมูลจาก dataset “ALL” ด้วยฟังก์ชั่น heatmap ใน R ครับ โดยส่วนใหญ่แพ็คเกจที่ถูกพัฒนานั้นจะมีข้อมูล (data) ของตนเองให้เรียกใช้ เพื่อเป็นตัวอย่างในการใช้คำสั่งที่มีอยู่ในแพ็กเก็ตนั้นๆ ครับ สำหรับผู้ที่สนใจสามารถดูข้อมูลเพิ่มเติมได้ที่ http://www.bioconductor.org/packages/release/data/experiment/ แต่เราไม่จำเป็นต้องเข้าไปดาวน์โหลดข้อมูลเหล่านี้โดยตรงจากเว็บไซต์ก็ได้นะครับ เราสามารถดาวน์โหลดโดยอาศัยฟังก์ชันของ Bioconductor ได้ครับและอีกอย่างข้อมูลเหล่านี้ส่วนใหญ่จะถูกดาวน์โหลดมาพร้อมกับการติดตั้งแพ็คเกจที่เราสนใจอยู่แล้วด้วยครับ ยกเว้นเฉพาะบางแพ็คเกจเท่านั้นที่เราจะต้องไปหาข้อมูลเหล่านี้ด้วยตนเอง อย่างไรก็ตาม ผมขอเน้นย้ำเลยครับว่า เราสามารถประยุกต์ใช้แพ็คเกจต่างๆ กับข้อมูลการทดลองของเราเองได้แน่นอนครับ อาจจะได้โดยตรงเลย หรือโดยอ้อมที่เราต้องปรับรูปแบบข้อมูลของเรานิดหน่อยเพื่อให้อยู่ในรูปแบบที่สามารถ load เข้าไปใน environment ของ R ได้โดยไม่ยุ่งยากครับ ส่วนใหญ่จะเป็นในรูปแบบ text file และ table ซึ่งก็สะดวกอยู่แล้วครับ สำหรับข้อมูลที่แพ็คเกจมีมาให้ ก็เพื่อใช้ทดลองการวิเคราะห์และเป็นตัวอย่างในการใช้งานฟังก์ชันต่างๆ ของแพ็คเกจ เพื่อความเข้าใจที่ถูกต้องตามวัตถุประสงค์ของผู้พัฒนาครับ


ก่อนจากกันในบทความตอนนี้ ผมขอฝากรูปที่ได้จากฝีมือการวาดภาพแสดงผลของ R มาให้ผู้อ่านได้ชมกันสักหน่อย (รูปด้านล่างของหน้าที่แล้วครับ) แล้วในบทความตอนหน้า เราจะมาแนะนำการติดตั้งพร้อมทั้งดูตัวอย่างการใช้งานเบื้องต้นไปพร้อมๆ กันครับ

No comments:

Post a Comment