สิวะโชติ ศรีสุทธิยากร สาขาวิชา สถิติการศึกษา คณะครุศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย 16 Aug 2018
วัตถุประสงค์เชิงพฤติกรรม
เนื้อหาส่วนนี้จะกล่าวถึงเวกเตอร์ (vectors) ที่ใช้สำหรับเก็บข้อมูลของบุคคลหรือสิ่งที่นักสถิติสนใจจะศึกษาในหลาย ๆ มิติ เพื่อให้ผู้อ่านเข้าใจมโนทัศน์เกี่ยวกับเวกเตอร์มากยิ่งขึ้น จึงขอให้ผู้อ่านพิจารณารูปดังต่อไปนี้
กิจกรรม 2.5 :
หากต้องเก็บรวบรวมข้อมูลในห้องเรียนข้างต้นเพื่อบรรยายสภาพการจัดการเรียนรู้นิสิตคิดว่าควรเก็บรวบรวมข้อมูลอะไรบ้าง?
จากกิจกรรมข้างต้นจะเห็นว่า การบรรยายสภาพการจัดการเรียนรู้ของห้องเรียนในรูปไม่สามารถบรรยายได้อย่างสมบูรณ์ด้วยตัวแปรเพียงตัวเดียว แต่มีความจำเป็นต้องอาศัยการเก็บข้อมูลจากตัวแปรหลายตัว เช่น จำนวนนักเรียนในชั้นเรียน (\(x_1\)) หรือ ระดับการมีปฏิสัมพันธ์ของนักเรียนในชั้นเรียน (\(x_2\)) เป็นต้น
ในทางคณิตศาสตร์สามารถเก็บข้อมูลหลายตัวแปรดังข้างต้นไว้ในวัตถุที่เรียกว่า เวกเตอร์ (vectors) ยกตัวอย่าง เช่น เวกเตอร์ของสภาพการจัดการเรียนรู้ (x) สามารถเขียนในเชิงคณิตศาสตร์ดังนี้
เนื่องจากเวกเตอร์เป็นปริมาณที่มีทั้งขนาดและทิศทาง การระบุเวกเตอร์ที่ใช้แทนสภาพของสิ่งที่สนใจจึงเป็นการแปลงปรากฏการณ์ที่เกิดขึ้นในสภาพจริงให้เป็นข้อมูลตัวเลข ที่สามารถระบุตำแหน่งได้บนระนาบหรือปริภูมิของเวกเตอร์ ที่มีความหมายเป็นโลกเสมือนของปรากฏการณ์ที่สนใจ จากรูป 2.2 จะเห็นว่าตำแหน่งของเวกเตอร์ \(\textbf{x}\) ของห้องเรียนในรูปแสดงให้เห็นว่าเป็นห้องเรียนที่มีจำนวนนักเรียนค่อนข้างน้อย และนักเรียนในห้องเรียนมีปฏิสัมพันธ์ในการเรียนอยู่ในระดับที่มาก
อีกลักษณะหนึ่งคือการเก็บข้อมูลของตัวแปรตัวเดียวจากหลายหน่วยข้อมูล เช่น พิจารณาส่วนสูงของนักเรียนในชั้นเรียนแห่งหนึ่งในรูปที่ 2.3
หากต้องการเก็บข้อมูลส่วนสูงของนักเรียน สามารถทำได้โดยเก็บไว้ในเวกเตอร์เช่นเดียวกัน สมมติว่าต้องการเก็บข้อมูลส่วนสูงดังกล่าวไว้ในเวกเตอร์ชื่อว่า \(\textbf{height}\) เวกเตอร์ดังกล่าวจะมีลักษณะดังนี้
การสร้างเวกเตอร์ในโปรแกรม R สามารถทำได้โดยง่ายด้วยฟังก์ชัน <-
(เรียกว่า ฟังก์ชัน concatenate) หมายถึงการเชื่อมโยงค่าของข้อมูลที่กำหนดเข้าด้วยกันให้อยู่ในลักษณะของเวกเตอร์ รูปแบบการใช้ฟังก์ชัน concatenate เป็นดังนี้
<-
\(c(x_1,x_2,x_3,...,x_n)\)
ตัวอย่าง การสร้างเวกเตอร์สภาพการจัดการเรียนรู้ \(\textbf{x}\) ของชั้นเรียนแห่งหนึ่ง
x<-c(13,5) #create x vector
x #print x
## [1] 13 5
เวกเตอร์ยังจำแนกได้เป็น 3 ประเภทขึ้นอยู่กับข้อมูลหรือสมาชิกที่อยู่ภายในเวกเตอร์ ดังนี้
กิจกรรม 2.6:
กิจกรรมอุ่นเรื่อง:
ลองสร้างเวกเตอร์ส่วนสูงของนักเรียนในชั้นเรียนแห่งหนึ่งโดยใช้ข้อมูลจากในรูปต่อไปนี้
สั่งให้โปรแกรมแสดงผลลัพธ์ของเวกเตอร์่ส่วนสูงที่สร้างขึ้น
กิจกรรมเอาจริง
ตาราง 2.1 แสดงข้อมูลคะแนนสอบกลางภาค และปลายภาคในรายวิชาสถิติของนิสิตคณะครุศาสตร์ จำนวน 10 คน
## 1 2 3 4 5 6 7 8 9 10
## Gender M M F M F F F M F M
## Midterm 70 62 56 64 56 68 58 59 55 57
## Final 70 64 47 60 62 59 61 64 55 56
จากข้อมูลในตาราง 2.1
จงสร้างเวกเตอร์ Gender เพื่อเก็บข้อมูลเพศของนักเรียน
จงสร้างเวกเตอร์ Midterm และ Final เพื่อเก็บข้อมูลคะแนนสอบกลางภาคและปลายภาคของนักเรียน
ลองใช้ฟังก์ชัน class()
เพื่อตรวจสอบสถานะของเวกเตอร์ทั้งสาม
numeric vector มีจุดเด่นคือสามารถดำเนินการทางคณิตศาสตร์พื้นฐานด้วยการ บวก ลบ คูณ และหารได้เหมือนการดำเนินการทางคณิตศาสตร์ปกติ แต่มีเงื่อนไขคือเวกเตอร์ที่นำมาดำเนินการกันจะต้องมีจำนวนสมาชิกเท่ากัน โดยโปรแกรม R จะนำสมาชิกที่อยู่ในตำแหน่งเดียวกันในแต่ละเวกเตอร์มาบวก ลบ คูณ หรือ หาร กันโดยตรง เพื่อให้เกิดเป็นเวกเตอร์ลัพธ์ตัวใหม่ เช่น
x<-c(1,2,3)
y<-c(4,5,6)
x+y
## [1] 5 7 9
x-y
## [1] -3 -3 -3
x*y
## [1] 4 10 18
x/y
## [1] 0.25 0.40 0.50
หากคุณครูต้องการรวมคะแนนสอบกลางภาค และปลายภาค โดยกำหนดให้คะแนนสอบกลางภาคมีน้ำหนักเป็น 40% และคะแนนสอบปลายภาคมีน้ำหนักเป็น 60% จงหาคะแนนรวมของนักเรียนแต่ละคนด้วยการใช้การดำเนินการระหว่างเวกเตอร์ และเก็บข้อมูลคะแนนรวมดังกล่าวไว้ในเวกเตอร์ชื่อว่า sum
result<-sum>=55
result
เป็นเวกเตอร์ประเภทใดในโปรแกรม R มีฟังก์ชัน mean()
และ sd()
สำหรับหาค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานตามลำดับ จงใช้ฟังก์ชันดังกล่าวเพื่อหาค่าเฉลี่ย และส่วนเบี่ยงเบนมาตรฐานของคะแนนสอบกลางภาค และปลายภาค ตามลำดับ
หากพิจารณาจากคะแนนกลางภาค และปลายภาค นักเรียนในชั้นเรียนนี้มีพัฒนาการหรือไม่ เพราะเหตุใด จงแสดงหลักฐานประกอบคำตอบของท่าน
ในบทเรียนเรื่องเวกเตอร์ผู้เรียนได้เห็นแล้วว่า เราสามารถใช้เวกเตอร์เพื่อเก็บข้อมูลของหน่วยตัวอย่าง หรือสิ่งที่เราสนใจจะศึกษาในหลาย ๆ มิติได้ เช่น อาจใช้เวกเตอร์
เพื่อเก็บสภาพการจัดการเรียนรู้ของห้องเรียน A ในด้านจำนวนนักเรียน (student) และระดับการมีปฏิสัมพันธ์ของนักเรียน (interaction)
อย่างไรก็ตามในสถานการณ์จริงของการวิจัย ผู้วิจัยมักไม่ได้ศึกษาหรือเก็บข้อมูลกับหน่วยตัวอย่างเดียว แต่มักมีการเก็บข้อมูลตัวแปรต่าง ๆ กับหน่วยตัวอย่างหลายหน่วย เช่น อาจต้องการศึกษาสภาพการจัดการเรียนรู้ของห้องเรียนจำนวน 8 ห้อง ดังรูป
ในกรณีนี้จะเห็นว่าหากนักวิจัยเก็บรวบรวมข้อมูลจำนวนนักเรียน และระดับการมีปฏิสัมพันธ์ของนักเรียน จากห้องเรียนทั้งหมดดังกล่าว นักวิจัยจะมีเวกเตอร์สภาพการจัดการเรียนรู้ของห้องเรียนถึง 7 เวกเตอร์ !!
หากจะอธิบายง่าย ๆ เมทริกซ์คือชุดของเวกเตอร์ที่นำมาต่อหรือเชื่อมกันเพื่อเพิ่มมิติหรือพื้นที่สำหรับเก็บข้อมูล เช่น จากเวกเตอร์ทั้ง 7 ในข้างต้น สามารถนำมาสร้างเป็นเมทริกซ์ได้ดังนี้
จากเมทริกซ์ M ในข้างต้นจะเห็นว่าเป็นเมทริกซ์ที่มี 2 แถว (row) และมี 7 คอลัมน์ (column) โดยที่แถวที่ 1 แทนสภาพการจัดการเรียนรู้ของห้องเรียน และแถวที่ 2 แทนระดับการมีปฏิสัมพันธ์ของนักเรียน ส่วนแต่ละคอลัมน์แทนห้องเรียนแต่ละห้อง อย่างไรก็ตามในทางปฏิบัติมักนิยมให้แถวของเมทริกซ์แทนหน่วยตัวอย่าง และคอลัมน์ของเมทริกซ์แทนตัวแปร ซึ่งสามารถทำได้ด้วยการ transpose เมทริกซ์ M ดังนี้
\(\approx\) \(\hspace{5pt}\)
ในโปรแกรม R เมทริกซ์จำแนกออกเป็น 3 ประเภท ตามลักษณะของข้อมูลเช่นเดียวกับเวกเตอร์ ได้แก่
กิจกรรม 2.7:
## 1 2 3 4 5 6 7 8 9 10
## Gender M M F M F F F M F M
## Midterm 70 62 56 64 56 68 58 59 55 57
## Final 70 64 47 60 62 59 61 64 55 56
จากข้อมูลในตารางข้างต้น
cbind(Midterm, Final)
cbind(Gender,Midterm, Final)
matrix()
ในทางปฏิบัติเราสามารถสร้างเมทริกซ์ได้หลายวิธีการ อีกวิธีการหนึ่งที่สามารถทำได้คือ คือการใช้ฟังก์ชัน matrix(x,nrow,ncol,byrow=FALSE)
เช่น
M<-matrix(nrow=7,ncol=2)
M[,1]<-c(0,7,6,20,3,8,15)
M[,2]<-c(0,0,3,5,5,4,5)
M
## [,1] [,2]
## [1,] 0 0
## [2,] 7 0
## [3,] 6 3
## [4,] 20 5
## [5,] 3 5
## [6,] 8 4
## [7,] 15 5
หรือ
M<-matrix(c(0,0,
7,0,
6,3,
20,5,
3,5,
8,4,
15,5),nrow=7,ncol=2)
M
## [,1] [,2]
## [1,] 0 5
## [2,] 0 3
## [3,] 7 5
## [4,] 0 8
## [5,] 6 4
## [6,] 3 15
## [7,] 20 5
หรือ
M<-matrix(c(0,0,
7,0,
6,3,
20,5,
3,5,
8,4,
15,5),nrow=7,byrow=T)
M
## [,1] [,2]
## [1,] 0 0
## [2,] 7 0
## [3,] 6 3
## [4,] 20 5
## [5,] 3 5
## [6,] 8 4
## [7,] 15 5
เนื่องจากเมทริกซ์มีโครงสร้างการเก็บข้อมูลในลักษณะเหมือนกับตารางสองทาง ดังนั้นการอ้างอิงเพื่อเรียกดูผลลัพธ์ หรือเรียกใช้ข้อมูลในเมทริกซ์ สามารถทำได้โดยอาศัยตัวเลขแสดงตำแหน่ง 2 ตัวได้แก่ ลำดับของแถว และลำดับของคอลัมน์ ของข้อมูลที่ต้องการในเมทริกซ์
กิจกรรม
จงเรียกข้อมูลจำนวนนักเรียนของห้องเรียนห้องที่ 5
จงเรียกข้อมูลระดับการมีปฏิสัมพันธ์ของนักเรียนในห้องเรียนที่ 3
จงเรียกข้อมูลสภาพการจัดการเรียนรู้ของห้องเรียนที่ 7
จงเรียกข้อมูลระดับการมีปฏิสัมพันธ์ของทุกห้องเรียน
จงเรียกข้อมูลระดับการมีปฏิสัมพันธ์ของห้องเรียนที่ 1 ถึง 4 (hint: M[1:4,2])
จงเรียกข้อมูลสภาพการจัดการเรียนรู้ของห้องเรียนที่ 1 ถึง 4
การกำหนดชื่อให้กับแถว และคอลัมน์ในเมทริกซ์
ผู้ใช้โปรแกรมสามารถกำหนดชื่อให้กับแถว และคอลัมน์ของเมทริกซ์ได้ โดยใช้คำสั่ง rownames()
สำหรับการกำหนดชื่อให้กับแถว และคำสั่ง colnames()
ดังนี้
M<-matrix(c(0,0,
7,0,
6,3,
20,5,
3,5,
8,4,
15,5),nrow=7,byrow=T)
colnames(M)<-c("student","interactive")
rownames(M)<-c("A","B","C","D","E","F","G")
M
## student interactive
## A 0 0
## B 7 0
## C 6 3
## D 20 5
## E 3 5
## F 8 4
## G 15 5
ข้อจำกัดของเมทริกซ์คือสามารถเก็บข้อมูลได้เพียงลักษณะเดียว ทำให้ไม่สะดวกสำหรับนักวิจัยที่มีข้อมูลหลากหลายประเภทอยู่ในชุดข้อมูล จึงมีการพัฒนาวัตถุชนิดพิเศษที่เรียกว่า ชุดข้อมูล (data frame) ขึ้นเพื่อใช้สำหรับเก็บข้อมูลหลากหลายประเภทให้อยู่ภายใต้เมทริกซ์เดียวกันได้
Student<-seq(1,10)
Gender<-c("M","M","F","M","F","F","F","M","F","M")
Midterm<-c(70,62,56,64,56,68,58,59,55,57)
Final<-c(70,64,47,60,62,59,61,64,55,56)
dat<-cbind(Student,Gender,Midterm,Final)
dat
## Student Gender Midterm Final
## [1,] "1" "M" "70" "70"
## [2,] "2" "M" "62" "64"
## [3,] "3" "F" "56" "47"
## [4,] "4" "M" "64" "60"
## [5,] "5" "F" "56" "62"
## [6,] "6" "F" "68" "59"
## [7,] "7" "F" "58" "61"
## [8,] "8" "M" "59" "64"
## [9,] "9" "F" "55" "55"
## [10,] "10" "M" "57" "56"
class(dat)
## [1] "matrix"
การสร้างชุดข้อมูลสามารถทำได้โดยใช้คำสั่ง
data.frame(matrix)
เช่น
Student<-seq(1,10)
Gender<-c("M","M","F","M","F","F","F","M","F","M")
Midterm<-c(70,62,56,64,56,68,58,59,55,57)
Final<-c(70,64,47,60,62,59,61,64,55,56)
dat2<-data.frame(Gender,Midterm,Final)
dat2
## Gender Midterm Final
## 1 M 70 70
## 2 M 62 64
## 3 F 56 47
## 4 M 64 60
## 5 F 56 62
## 6 F 68 59
## 7 F 58 61
## 8 M 59 64
## 9 F 55 55
## 10 M 57 56
class(dat2)
## [1] "data.frame"
กิจกรรม
การอ้างอิงสมาชิกในชุดข้อมูลสามารถทำได้สะดวกมากยิ่งขึ้นกว่าเมทริกซ์ กล่าวคือนอกจากจะสามารถอ้่างอิงหรือเรียกใช้ข้อมูลในเมทริกซ์ได้เหมือนกับเมทริกซ์แล้วยังสามารถอ้างอิงได้ด้วยการเรียกชื่อของตัวแปรในชุดข้อมูล เช่น
Student<-seq(1,10)
Gender<-c("M","M","F","M","F","F","F","M","F","M")
Midterm<-c(70,62,56,64,56,68,58,59,55,57)
Final<-c(70,64,47,60,62,59,61,64,55,56)
dat2<-data.frame(Student,Gender,Midterm,Final)
โครงสร้างเบื้องหลังของ dataframe
str(dat2)
## 'data.frame': 10 obs. of 4 variables:
## $ Student: int 1 2 3 4 5 6 7 8 9 10
## $ Gender : Factor w/ 2 levels "F","M": 2 2 1 2 1 1 1 2 1 2
## $ Midterm: num 70 62 56 64 56 68 58 59 55 57
## $ Final : num 70 64 47 60 62 59 61 64 55 56
ตัวอย่างการอ้างอิงและเรียกใช้ข้อมูลใน dataframe
dat2$Gender
## [1] M M F M F F F M F M
## Levels: F M
dat2$Gender[5]
## [1] F
## Levels: F M
dat2$Midterm[1:4]
## [1] 70 62 56 64
mean(dat2$Midterm)
## [1] 60.5
dat2$Midterm+dat2$Final
## [1] 140 126 103 124 118 127 119 123 110 113