ตัวอย่างการใช้งาน RLink ใน Mathematica

ตัวอย่างการใช้โปรแกรมทางสถิติ R ใน Mathematica ผ่าน RLink ครับ

**รายละเอียดต่าง ๆ ของการใช้งานของ RLink สามารถดูเพิ่มเติมได้จาก Document center ของ Mathematica ครับ

RLink เป็นแพ็คเกจอันหนึ่งของ Mathematica (สำหรับ version 9 ขึ้นไปครับ) ที่ช่วยให้เราสามารถที่จะ Run คำสั่งของ R หรือโปรแกมที่เราเขียนขึ้นด้วย R  ได้โดยตรงจากในตัวของ Mathematica ครับ อีกทั้งเรายังสามารถที่จะส่งผ่านหรือรับข้อมูล/ผลลัพท์ระหว่าง Mathematica กับ R ได้โดยตรง

R เป็นโปรแกรมทางสถิติที่ได้รับความนิยมสูงมากทั้งในการเรียนการสอนและการวิจัย มีคำสั่งหรือชุดคำสั่ง (library/package) สำหรับทำงานเฉพาะด้านที่เราสามารถนำมาประยุกต์ใช้ในงานของเราได้ (http://cran.r-project.org/web/packages/available_packages_by_name.html)

การใช้งาน R ผ่าน RLink ใน Mathematica นี้จะเป็นการเพิ่มขีดความสามารถของ Mathematica ในด้านสถิติให้มากขึ้นครับ

ตัวอย่างการใช้งาน RLink ครับ

ก่อนอื่นเลยเราต้องทำการโหลด RLink เข้ามาใน Mathematica ก่อนครับ

<<RLink`

จากนั้นก็ติดตั้งตัวโปรแกรม R ที่ทาง Wolfram เตรียมไว้ให้แล้วด้วยคำสั่ง

RLinkResourcesInstall[]

การติดตั้งตัวโปรแกรม R ด้วย RLinkResourcesInstall นี้ทำครั้งแรกครั้งเดียวพอครับ การใช้งานครั้งต่อๆไปไม่ต้องครับ

เวลาเรียกใช้งาน R ก็พิมพ์

InstallR[]

แต่ถ้าใครอยากใช้กับ R ที่ติดตั้งเรียบร้อยแล้วในเครื่องของตัวเอง (เช่นที่ C:\\Program Files\\R\\R-2.15.1) ก็เพียงพิมพ์

InstallR[“RHomeLocation” -> “C:\\Program Files\\R\\R-2.15.1”]

คำสั่งหลัก ๆ ใน RLink จะพูดถึงนี้ก็มี REvaulate, RSet และ RFunction

REvaluate ดูเหมือนจะเป็นพระเอกของ RLink ครับ มันใช้สำหรับการรันคำสั่งต่าง ๆ ของ R พร้อมกับรับค่าที่ได้ส่งกลับมาที่ Mathematica ครับ (กรณีที่คำสั่ง R นั้นไม่มี ; ปิดท้าย) เช่น

Revaluate[“{

a <- 2;

b <- 1.334;

(a*a)-b

}”]

RSet เป็นคำสั่งที่ช่วยให้เราส่งค่าพวกตัวเลขหรือลิสต์ จาก Mathematica ให้กับตัวแปรใน R

เช่นต้องการให้ตัวแปร x ที่เราใช้ใน R มีค่าเท่ากับลิสต์ของเลขสุ่มระหว่าง 0 ถึง 1 ที่เรียงจากมากไปน้อย

RSet[“x”, Sort[#, Greater] &@RandomReal[1,10]]

 

RFunction  เป็นคำสั่งที่ช่วยให้เราเรียกใช้ function ที่เราเขียนใน R มาใช้ใน Mathematica ซึ่งวิธีการเรียกก็เหมือนกับ function หรือคำสั่งของ Mathematica เลยครับ เช่น  ถ้าผมต้องการ function ชื่อ stats ที่คำนวณค่า mean,median,sd และ variance ของlist ของตัวเลข ผมก็สามารถเขียนได้ตามนี้เลยครับ

stats = RFunction[“function(x){ c(mean(x),median(x),sd(x),var(x)) } “]

stats[RandomReal[1,100]]

 

ตัวอย่างที่ผมลองเอาไปใช้งานครับ ผมมีข้อมูลที่เป็นคู่อันดับอยู่หลายชุด และแต่ล่ะชุดจะมีคู่อันดับหรือจุดไม่เกิน 7 จุดและผมได้ทดลอง fit (ทำ linear regression) กับ เส้นตรง y = ax+c ไปแล้ว แต่พอดูด้วยตาแล้วสมการกำลังสอง y = ax^2+bx+c น่าจะ fit ได้ดีกว่าเส้นตรงในบางชุดของข้อมูล ก็เลยคิดว่าน่าเปรียบเทียบทั้งสองสมการนี้ด้วย Likelihood ratio test โดยใช้ p-value เป็นตัวตัดสินใจครับ ผมเลือกเอาว่าถ้า p-value มันน้อยกว่า 0.05 แสดงว่าสมการกำลังสองมัน fit ได้ดีกว่าเส้นตรง และถ้ามันมากกว่าหรือเท่ากับ 0.05 แสดงว่าสมการเส้นตรงมัน fit ได้ดีกว่า  ผมใช้คำสั่ง lrtest ของpackageชื่อ lmtest ในการทำ likelihood ratio test ครับ

แต่จาก R ที่ติดตั้ง ด้วยคำสั่ง RLinkResourcesInstall[] จะไม่มีแพ็คเกจ lmtest มาด้วย ดังนั้นต้องติดตั้งก่อนครับ

เราสามารถที่จะติดตั้ง R package ตัวที่ต้องการเพิ่มได้โดยเพียงพิมพ์คำสั่งนี้ใน Mathematica ได้เลย

REvaluate[“install.packages(\” ชื่อ package ที่ต้องการ “\)”]

มันจะมี windows อันหนึ่ง popup ขึ้นมาให้เราเลือก mirror host สำหรับ download ไฟล์ package ครับ

ดังนั้นในกรณีของผมนี้ก็เพียงพิมพ์

REvaluate[“install.packages(\”lmtest”\)”]

ตัวอย่าง code ครับ

rlinkcode1

rlinkgraphs