Tag: RLink

เรื่องปวดหัว R structure vs WinBUGS structure

พอดีเขียนโปรแกรมใช้งาน WinBUGS  ผ่าน RLink ใน Mathematica แล้วเจอการส่งและรับค่าแปลกๆของตัวแปรประเภท structure ที่มีการเขียนหรือวางตำแหน่งของอาร์เรย์ไม่เหมือนกัน คือว่า จาก .Data ที่เป็นlistของตัวเลขจะถูกแปลงเป็นอาร์เรย์สองมิติโดยที่ใน Rจะใส่ตัวเลขลงในแต่ละcolumnหรือตามแนวตั้ง แต่WinBUGS จะใส่ตัวเลขตามแถวหรือแนวนอน ระวังกันด้วยเน้อ… http://www.openbugs.net/Manuals/ModelSpecification.html#FormattingOfData  

การ fit ข้อมูลหลายชุดกับโมเดล

สมมติให้ว่าเรามีผลการทดลองอันหนึ่งที่มีการทำซ้ำอยู่ทั้งหมด 10 ครั้ง และในแต่ละครั้งเราก็จะได้ผลจากการวัดมาทั้งหมด 25 ค่า (t = 1,2,..,25) เมื่อเรานำว่าเขียนกราฟก็จะมีหน้าตาแบบนี้ และเราก็มีว่าโมเดลหรือแบบจำลองที่จะอธิบายผลการทดลองนี้คือ y(t)=C0 exp(-ke*t) ซึ่งถ้าเราทำการ fit ข้อมูลที่ได้จากการทดลองแต่ล่ะครั้งกับโมเดลนี้เราก็จะได้ค่า C0 และ ke สำหรับแต่ละการทดลอง เช่น ถ้าใช้ คำสั่ง NonlinearModelFit หรือ FindFit ก็จะได้ ลองแสดงผลจากการ fit กับข้อมูลจากแต่ละการทดลองด้วย Manipulate หรือจะใช้ WinBUGS ในการหาก็ได้ครับ เช่น ให้ค่าที่ได้จากการวัดจากการทดลอง i ที่เวลา j (y[i,j]) มีการคลาดเคลื่อนจากโมเดล (mod[i,j]) เล็กน้อย (บวก/ลบ SD = 1/sqrt(tau))แบบnormal distribution ลองดู WinBUGS code ด้านล่างนี้นะครับ โดยเรากำหนดให้ว่า ค่า C0

LOWESS ใน Mathematica

ตั้งแต่มี RLink มานี่การทำอะไรที่เกี่ยวกับทางสถิติใน Mathematica มันดูง่ายไปหมด แต่ก่อนเวลาผมทำพวก local regression ผมต้อง export ข้อมูลจาก Mathematica ไปทำใน R หรือ Stata แต่เดี่ยวนี้ไม่ต้องแล้ว ก็ทำมัน ใน Mathematica นี่แหละด้วยการใช้ RLink เรียกคำสั่ง lowess (stats) จาก R อีกที อันนี่เป็นตัวอย่างที่ผมใช้ทำ LOWESS (http://en.wikipedia.org/wiki/Local_regression)ครับ ผมมีข้อมูลที่เป็นคู่อันดับ (x,y) โดย x ของผมก็คือเวลา และ y คือข้อมูลจากการวัด วิธีการที่ทำก็คือสร้าง function ที่ชื่อ Lowess โดยให้มันอ่านค่า List ซึ่งเป็นคู่อันดับของข้อมูลแล้วแปลงเป็น Data Frame เพื่อเอาไปใช้กับคำสั่ง lowess ใน R ครับ ตัวอย่างที่ได้ครับ

ตัวอย่างการใช้งาน 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

ติดตั้ง R package เพิ่มใน RLink

ใครที่ใช้ R ผ่าน RLink ของ Mathematica 9.0 บน Windows สามารถที่จะติดตั้ง R package ตัวที่ต้องการได้โดยเพียงพิมพ์ REvaluate[“install.packages(\” ชื่อ package ที่ต้องการ “\)”] มันจะมี windows อันหนึ่ง popup ขึ้นมาให้เราเลือก mirror host สำหรับ download ไฟล์ package เวลาเรียกใช้ก็เหมือนใน R เลยครับ เช่น REvaluate[“{ library(ชื่อ library) blah blah .. }”]   🙂      

เรียกใช้งาน R ใน Mathematica

สำหรับคนที่สนใจหรือใช้งาน R ใน Mathematica (version < 9.0) ลองดูตัวอย่างที่นี่นะครับ http://mathematica.stackexchange.com/questions/844/are-there-any-rlink-like-projects-which-enable-the-interaction-between-r-and ซึ่งต้องติดตั้ง RAndFriends (http://rcom.univie.ac.at/download.html) ก่อนนะครับ (แนะนำเลยครับตัวนี้ สะดวกมากๆ) ตัวอย่าง Code Needs[“NETLink`”] myR = CreateCOMObject[“StatConnectorSrv.StatConnector”] myR@Init[“R”] myR@SetSymbol[“xxx”, 12321] result1 = myR@GetSymbol[“xxx”] myR@EvaluateNoReturn[“randmat<-matrix(rnorm(100),10)”] rmat = myR@GetSymbol[“randmat”] result2 = myR@Evaluate[“solve(matrix(1:4,2))”] เพิ่มเติม R http://mpec.sc.mahidol.ac.th/forums/index.php/topic,2817.0.html RStudio http://mpec.sc.mahidol.ac.th/forums/index.php/topic,5184.0.html สำหรับใครที่ใช้ Mathematica version 9.0 ขึ้นไปสามารถที่จะเรียกใช้งาน R ได้โดยตรงจาก package ชื่อ RLink ซึ่งมากับตัว Mathematica ได้เลยครับสะดวกมาก