เริ่มต้นวิเคราะห์ข้อมูลด้วย R … กันเถอะ!

R เป็นแอพพริเคชั่นแบบปล่อยให้ใช้ฟรี สำหรับงานวิเคราะห์ข้อมูลทางสถิติชนิดหนึ่ง ซึ่งข้อมูลที่เรานำมาวิเคราะห์นั้นก็จะ ครอบคลุมในเรื่องราวต่างๆ(domain) เช่น สังคม, เศรษฐกิจระดับมหาภาค และจุลภาค, วิทยาศาสตร์การวิจัยทดลองในหลายๆสาขา หรือ วิจัยสมมติฐานจากประสบการณ์ของผู้ใช้(User Experience) ซึ่งเป็นหนึ่งในขั้นตอนเริ่มต้นที่สำคัญช่วยวิเคราะห์ตรวสอบสมมติฐาน เพื่อค้นหาคุณสมบัติของผลิตภัณฑ์หรือบริการของเรา อันเป็นที่ต้องการในตลาดจริงๆได้(Discovery Producs) เป็นต้น

เรามาเริ่มต้นกันดีกว่า ตามผมมาเลย

ติดตั้ง R

  1. download R ได้ที่ http://www.r-project.org/ เลือก CRAN ที่เป็น link ข้างซ้าย กดเข้าไป จะไปอีกหน้า
  2. มาอีกหน้า ให้เลือก site ที่ download เร็วที่สุด พอคลิกเลือกเสร็จมันจะไปอีกหน้า
  3. มาอีกหน้า ให้เลือกแพคเกจของโปรแกรมที่จะติดตั้งไปยัง OS ต่างๆที่เราใช้อยู่ บล็อคนี้ ผมเลือกติดตั้งบน windows  ดาวโหลดมาเสร็จจะได้ไฟร์ R-3.1.1-win.exe
  4. ก็ ดับเบอล์คลิกไฟร์ R-3.1.1-win.exe เพื่อติดตั้งจนเสร็จนะครับ ไม่ยากอะไร

เปิดลองเล่น R

1. เปิด R ขึ้นมา จะเจอหน้า prompt ตามภาพ

first-open

2. ที่สัญลักษณ์ > เรียกว่า “Command Prompt” หรือ พร้อมรับคำสั่ง

3. ครับ ลอง พิมพ์ คำสั่ง 1 + 2^3 ลงไป เคาะ enter ดูซิ

4. R จะรับคำสั่ง ตัวดำเนินการทางคณิศาสตร์ มาตรฐาน ได้แก่ +, -, *, / และ ^

เอาละเรามาค่อยๆ รู้จัก R กันเลย เริ่มจาก

ฟังก์ชั่น (Functions)

ฟังก์ชั่นใน R คือ ชุดของคำสั่งที่ R ได้จัดเตรียมเป็นคำสั่งมาตรฐานไว้จำนวนหนึ่งให้ใช้ประโยชน์ได้เลย เช่น ฟังกช์พื้นฐานทางคณิตศาสตร์ ได้แก่ exp, log, log10, sqrt, cos, sin, tan, acos, asin, atan, round, abs, factorial

ลองทดสอบพิมพ์ลงใน Command Prompt ดูก็ได้ แบบนี้

> round(1.1)

คู่มือการใช้ function ใช้คำสั่ง

> help(<functionname>)

R ก็จะแสดงเอกสารการใช้งาน ตามชื่อฟังกค์ชั่นที่เราใส่เข้าไป <functionname>

ก็ยังมีฟังกค์ชั่นเกี่ยวกับ จัดการข้อมูลอีก เช่น write, load, save ข้อมูลเข้ามาวิเคราะห์ใน R ผมจะค่อยๆ นำเสนอต่อไป

วัตถุ (Objects)

วัตถุ คือ ข้อมูลใดๆที่เราวัดค่าได้มา เมื่อมันถูกสร้าง หรือกำหนดขึ้นมาอยู่ใน R จะเรียกวันว่า วัตถุ ซึ่งมันจะมี ชื่อ (name) และ ที่จัดเก็บ (stored) ในหน่วยความจำ (memory) ของโปรแกรม R วัตถุต่างๆเหล่านั้นจะถูกเก็บรักษาไว้ในพื้นที่เปล่าๆของเรา ที่ R จัดเตรียมไว้ให้แล้ว เรียกพื้นที่นั้นว่า พื้นที่งาน (Workspace)

วัตถุ อาจจะเป็น อะไรก็ได้ เป็นข้อมูลชนิดเดียว หลายๆตัว ไปจนถึง ข้อมูลหลายๆชนิด หลายๆตัว เป็น ตาราง

วัตถุเชิงเดียว (Simple Objects)

เราสร้าง วัตถุเชิงเดียว เพื่อนแสดงข้อมูล หนึ่งตัว R ใช้ สัญลักษณ์ <- คือการกำหนดค่าให้ ดูตัวอย่าง

> effort<-3

วัตถุเชิงเดียวชื่อ age ถูกกำหนดค่าให้ เท่ากับ 18

เราสามารถ อ้างชื่อ วัตถุเชิงเดียว ได้เลยใน function หรือ ที่ใดๆ ก็ได้หลังจาก สร้างมันขึ้นมาแล้ว เช่น

> exp(effort)

เวกเตอร์ (Vectors)

คือ วัตถุ ที่บรรจุ วัตถุเชิงเดียว หลายๆตัว ที่เป็นชนิดเดียวกัน ไว้ในตัวมันตามลำดับ ใช้คำสั่ง แบบนี้

> efforts <- c(3, 5, 3, 40, 100)

ความยาวของเวกเตอร์ ใช้คำสั่ง length

> length(efforts)

เมื่อต้องการ สมาชิก ในอันดับที่เท่าใด ในเวกเตอร์ ได้ด้วย แบบนี้

> efforts[3]

บางฟังค์ชั่นใส่เวกเตอร์เข้าไป แล้วให้ผลลัพย์เป็นเวกเตอร์ออกมาเท่าเดิม (map) เช่น

> log10(efforts)

บางฟังกค์ชั่้น ก็ให้ผลลัพย์แค่ ผลลัพย์เดียว (reduce) เช่น

> mean(efforts)

เฟรมข้อมูล (Data Frames)

คือ วัตถุที่ใช้บรรจุเซตข้อมูลทั้งหมด เฟรมข้อมูลจะ บรรจุข้อมูลเวกเตอร์หลากหลายชนิดที่มีความยาวเท่ากันไว้ด้วยกันได้ ซึ่งมันจะ แสดงแต่ละเวกเตอร์เป็นแนวตั้งที่มี โดยแสดงแนวนอนของแต่ล่ะเวกเตอร์ มีมีความสัมพันธ์กัน เช่น

> prices <- c(100, 80, 120, 50, 20)

> demand <- c(200, 250, 150, 400, 450)

> supply <- c(200, 220, 160, 350, 400)

> customer_frame <- data.frame(prices, demand, supply)

เรามามารถแสดง เฟรมข้อมูล ในแบบ ตารางได้ด้วย แบบนี้

> fix(customer_frame)

เมื่อต้องการบางเวกเตอร์ ในเฟรม ให้อ้างชื่อเฟรม แล้วใช้คำสั่ง $ (ดอลล่า) ขั้นไว้ แล้วตามด้วยชื่อเวกเตอร์ที่ต้องการ ตัวอย่าง

> customer_frame$prices

เมื่อต้องการ ตัวแปลเชิงเดียว ใดๆในเฟรม ก็สามารถเรียกค้นได้ แบบนี้

> customer_frame[1, 2]

โดยที่ 1 คือ แถวที่ 1 และ 2 คือ คอลัมน์ที่ 2 หรือสดมภ์ชื่อ demands

เมื่อต้องการ ทุก ๆสดมภ์ ในแถวหนึ่งที่ต้องการ

> customer_frame[3,]

เมื่อต้องการ ในทุกแถว ของสดมภ์หนึ่งที่ต้องการ (ก็คือเวกเตอร์นั่นเอง)

> customer_frame[,1]

ในกรณีที่ต้องการเป็นเฟรม แต่เอาเฉพาะ สดมภ์เดียวที่ต้องการ ให้ใช้คำสั่ง

> customer_frame[1]

ถ้าต้องการเป็นเฟรม และไม่ต้องการ สดมภ์ใด ให้ใส่ค่าติดลบแทนสดมภ์ที่ไม่ต้องการในเฟรมได้เลย แบบนี้

> customer_frame[-2]

ถ้าต้องการเป็นเฟรม และมากกว่าหนึ่งสดมภ์ ใช้คำสั่ง

> customer_frame[c(1, 3)]

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

> customer_frame[c(2, 4), c(1, 3)]

พื้นที่งาน (Workspace)

พื้นที่งาน คือ พื้นที่เสมือนที่บรรจุวัตถุ ทั้งหลายที่เราสร้างขึ้น หรือประกาศขึ้นมาทั้งหมดในงานวิเคราะห์ข้อมูลของเรา โดยวัตถุต่างๆจะประกอบด้วย ชื่อ และ ชนิดของมัน (วัตถุเชิงเดียว, เวกเตอร์, และ เฟรมข้อมูล)  ที่เกี่ยวข้องในงานที่เปิดอยู่ ณ. ขณะนั้น หรือ เซชชั่นนั้น (session)

เราสามารถแสดงวัตถุทั้งหมด ใน พื้นที่งาน ขณะนั้น ด้วยคำสั่ง

> objects()

เมื่อต้องการ ลบวัตถุทั้งหมด ในพื้นที่งาน ใช้คำสั่ง rm แบบนี้

> rm(list=objects())

เราสามารถ บันทึก(save) หรือ โหลด(load) พื้นที่งาน ของเราเป็น file ชนิด .RData ได้ โดยใช้คำสั่ง save.image และ load หรือ กดที่ menu ของ R ที่ลงบน Windows ได้เลยโดยตรง

สคริป R (R Script)

สคริป R เป็นไฟร์ข้อความคำสั่ง ธรรมดาๆ คือแทนที่เราจะพิมพ์ลงไปที่ command prompt ที่โปรแกรม R โดยตรง เราก็แค่พิมพ์คำสั่ง ลงไปที่ ไฟร์สคริป R แทน ซึ่งจะสามารถ แก้ไข, ลบ, เปลี่ยนแปลง คำสั่ง R ต่างๆ ได้โดยง่าย สะดวกกว่า พิมพ์ที่ command prompt

ลองใช้ งานดู ที่เมนู Windows ให้เลือก File -> New script จะป๊อปหน้าจอเป็น text editor ขึ้มมา

R-script-1

ให้ พิมพ์ คำสั่งลงไปตามภาพ

R-script-2

แล้วไฮไลท์สคริป เหมือนผมตามภาพคลิกขวา แล้ว เลือก เมนูคำสั่ง Run line  or selection

R-script-3

โปรแกรม มันก็จะนำ คำสั่งที่เราไฮไลท์ จาก Text Editor ไป run ทั้งหมดให้ ในพื้นที่งาน ของเรา โดยอัตโนมัติก็ง่ายขึ้นเยอะเลย เมื่อบันทึกไฟร์ สคริป R จะมีนามสกุลเป็น .R ซึ่งเราสามารถโหลดมันขึ้นมาทำต่อเมื่อไหร่ก็ได้ ตามต้องการ

ผมก็ขอจบเรื่อง เริ่มต้นวิเคราะห์ข้อมูลด้วย R … กันเถอะ!  ก่อนไป ก็ขอทิ้งตัวอย่าง คำสั่งวิเคราะห์ข้อมูล กันสักนิดดีกว่า

ต่อไปนี้ผมจะคำนวนค่าสถิติที่สำคัญตัวหนึ่ง มันเป็นค่าที่ใช้วัด(measure)ความสัมพันธ์ของวัตถุในเฟรมเดียวกัน 2 เวกเตอร์ ได้ว่ามัน มีความสัมพันธ์กันหรือไม่ ด้วย ตัวสถิติที่ชื่อว่า สหสัมพันธ์ของ Person

จากตัวอย่างข้อมูลที่ แสดงๆมา ผมจึงนำเอา ราคา (prices) กับ ความต้องการ (demand) ในเฟรม customer_frame มาหาค่าสหสัมพันธ์ได้ ด้วยคำสั่ง นี้

> cor(customer_frame$prices, customer_frame$demand)

ครับค่าที่ออกมา จะมีค่าอยู่ระหว่าง -1 ถึง 1 ก็ลองเคาะเอนเตอร์ดูที่โปแกiม R นะครับ

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

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

  • เริ่มต้นวิเคราะห์ข้อมูลด้วย R … กันเถอะ! (บล็อคนี้เอง)
  • R ทำงานกับไฟร์ข้อมูล CSV, Text, Excel และ อื่นๆอีก
  • R การเตรียมข้อมูลและการจัดการข้อมูล
  • R การรวมและเปลี่ยนแปลงโครงสร้างข้อมูล
  • R การสรุปผลทางสถิติของข้อมูลที่เป็นตัวแปรแบบต่อเนื่อง
  • R ข้อมูลแบบตารางวิเคราะห์ 2 มิติ และการทดสอบความสัมพันธ์
  • R การวิเคราะห์ความถี่ที่เกิดขึ้น หรือการแจกแจงความน่าจะเป็นของข้อมูล
  • R การสร้างกราฟแสดงผลการวิเคราะห์ข้อมูล
  • R การทดสอบสมติฐาน
  • R วิเคราะห์สมการถดถอย และแบบจำลองเชิงเส้นตรง

ก็คอยติดตามอ่านบล็อกซีรี่ R ของผมกันนะ

หนังสืออ้างอิง:

ขอบคุณครับ

#:P

Advertisements

#data-analysis, #r, #statistics