สิวะโชติ ศรีสุทธิยากร
สาขาวิชา สถิติการศึกษา คณะครุศาสตร์
จุฬาลงกรณ์มหาวิทยาลัย
16 Aug 2018

วัตถุประสงค์เชิงพฤติกรรม


  1. อธิบายมโนทัศน์เกี่ยวกับเวกเตอร์ได้
  2. สามารถระบุและจำแนกประเภทของเวกเตอร์ในโปรแกรม R ได้
  3. สามารถสร้างเวกเตอร์เพื่อเก็บข้อมูลในโปรแกรม R ได้
  4. สามารถดำเนินการทางคณิตศาสตร์พื้นฐานระหว่างเวกเตอร์เชิงตัวเลขได้

Vectors

เวกเตอร์ (vectors)

เนื้อหาส่วนนี้จะกล่าวถึงเวกเตอร์ (vectors) ที่ใช้สำหรับเก็บข้อมูลของบุคคลหรือสิ่งที่นักสถิติสนใจจะศึกษาในหลาย ๆ มิติ เพื่อให้ผู้อ่านเข้าใจมโนทัศน์เกี่ยวกับเวกเตอร์มากยิ่งขึ้น จึงขอให้ผู้อ่านพิจารณารูปดังต่อไปนี้

รูป 2.1 ภาพบันทึกการจัดการเรียนรู้ในห้องเรียนแห่งหนึ่ง


กิจกรรม 2.5 :

หากต้องเก็บรวบรวมข้อมูลในห้องเรียนข้างต้นเพื่อบรรยายสภาพการจัดการเรียนรู้นิสิตคิดว่าควรเก็บรวบรวมข้อมูลอะไรบ้าง?



  • จากกิจกรรมข้างต้นจะเห็นว่า การบรรยายสภาพการจัดการเรียนรู้ของห้องเรียนในรูปไม่สามารถบรรยายได้อย่างสมบูรณ์ด้วยตัวแปรเพียงตัวเดียว แต่มีความจำเป็นต้องอาศัยการเก็บข้อมูลจากตัวแปรหลายตัว เช่น จำนวนนักเรียนในชั้นเรียน (\(x_1\)) หรือ ระดับการมีปฏิสัมพันธ์ของนักเรียนในชั้นเรียน (\(x_2\)) เป็นต้น

  • ในทางคณิตศาสตร์สามารถเก็บข้อมูลหลายตัวแปรดังข้างต้นไว้ในวัตถุที่เรียกว่า เวกเตอร์ (vectors) ยกตัวอย่าง เช่น เวกเตอร์ของสภาพการจัดการเรียนรู้ (x) สามารถเขียนในเชิงคณิตศาสตร์ดังนี้

\(\textbf{x}=\begin{pmatrix} x_1\\ x_2 \end{pmatrix}= \begin{pmatrix} 13\\ 5 \end{pmatrix}\)


เนื่องจากเวกเตอร์เป็นปริมาณที่มีทั้งขนาดและทิศทาง การระบุเวกเตอร์ที่ใช้แทนสภาพของสิ่งที่สนใจจึงเป็นการแปลงปรากฏการณ์ที่เกิดขึ้นในสภาพจริงให้เป็นข้อมูลตัวเลข ที่สามารถระบุตำแหน่งได้บนระนาบหรือปริภูมิของเวกเตอร์ ที่มีความหมายเป็นโลกเสมือนของปรากฏการณ์ที่สนใจ จากรูป 2.2 จะเห็นว่าตำแหน่งของเวกเตอร์ \(\textbf{x}\) ของห้องเรียนในรูปแสดงให้เห็นว่าเป็นห้องเรียนที่มีจำนวนนักเรียนค่อนข้างน้อย และนักเรียนในห้องเรียนมีปฏิสัมพันธ์ในการเรียนอยู่ในระดับที่มาก

\(\approx\)
รูป 2.2 สภาพการจัดการเรียนรู้ของชั้นเรียนในเวกเตอร์ \(\textbf{x}\) บนระนาบของจำนวนนักเรียน และระดับการมีปฏิสัมพันธ์


อีกลักษณะหนึ่งคือการเก็บข้อมูลของตัวแปรตัวเดียวจากหลายหน่วยข้อมูล เช่น พิจารณาส่วนสูงของนักเรียนในชั้นเรียนแห่งหนึ่งในรูปที่ 2.3

รูป 2.3 ส่วนสูงของนักเรียนในชั้นเรียนแห่งหนึ่ง

หากต้องการเก็บข้อมูลส่วนสูงของนักเรียน สามารถทำได้โดยเก็บไว้ในเวกเตอร์เช่นเดียวกัน สมมติว่าต้องการเก็บข้อมูลส่วนสูงดังกล่าวไว้ในเวกเตอร์ชื่อว่า \(\textbf{height}\) เวกเตอร์ดังกล่าวจะมีลักษณะดังนี้

\(\textbf{height}=\begin{pmatrix} 60\\ 60\\ 50\\ 40\\ 18\\ 18\\ 1.75 \end{pmatrix}=\hspace{5mm}\)


More about Vector

การสร้างเวกเตอร์ในโปรแกรม R สามารถทำได้โดยง่ายด้วยฟังก์ชัน <- (เรียกว่า ฟังก์ชัน concatenate) หมายถึงการเชื่อมโยงค่าของข้อมูลที่กำหนดเข้าด้วยกันให้อยู่ในลักษณะของเวกเตอร์ รูปแบบการใช้ฟังก์ชัน concatenate เป็นดังนี้

\(vector.name\) <- \(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 ประเภทขึ้นอยู่กับข้อมูลหรือสมาชิกที่อยู่ภายในเวกเตอร์ ดังนี้

  • numeric vector เป็นเวกเตอร์ที่มีสมาชิกเป็นตัวเลข
  • character vector เป็นเวกเตอร์ที่มีสมาชิกเป็นตัวอักษร
  • logical vector เป็นเวกเตอร์ที่มีสมาชิกเป็นค่าความจริง


กิจกรรม 2.6:

กิจกรรมอุ่นเรื่อง:

  1. ลองสร้างเวกเตอร์ส่วนสูงของนักเรียนในชั้นเรียนแห่งหนึ่งโดยใช้ข้อมูลจากในรูปต่อไปนี้

  2. สั่งให้โปรแกรมแสดงผลลัพธ์ของเวกเตอร์่ส่วนสูงที่สร้างขึ้น



กิจกรรมเอาจริง

ตาราง 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

  1. จงสร้างเวกเตอร์ Gender เพื่อเก็บข้อมูลเพศของนักเรียน

  2. จงสร้างเวกเตอร์ Midterm และ Final เพื่อเก็บข้อมูลคะแนนสอบกลางภาคและปลายภาคของนักเรียน

  3. ลองใช้ฟังก์ชัน 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
  1. หากคุณครูต้องการรวมคะแนนสอบกลางภาค และปลายภาค โดยกำหนดให้คะแนนสอบกลางภาคมีน้ำหนักเป็น 40% และคะแนนสอบปลายภาคมีน้ำหนักเป็น 60% จงหาคะแนนรวมของนักเรียนแต่ละคนด้วยการใช้การดำเนินการระหว่างเวกเตอร์ และเก็บข้อมูลคะแนนรวมดังกล่าวไว้ในเวกเตอร์ชื่อว่า sum

  2. สมมติว่าคุณครูกำหนดเกณฑ์การประเมินไว้ว่า นักเรียนที่จะผ่านรายวิชานี้ต้องสอบได้คะแนนรวมอย่างน้อย 55 คะแนน
  • ลองเขียนคำสั่งดังนี้ result<-sum>=55
  • เวกเตอร์ result เป็นเวกเตอร์ประเภทใด
  • มีนักเรียนที่คนที่สามารถสอบผ่าน ?
  1. ในโปรแกรม R มีฟังก์ชัน mean() และ sd() สำหรับหาค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานตามลำดับ จงใช้ฟังก์ชันดังกล่าวเพื่อหาค่าเฉลี่ย และส่วนเบี่ยงเบนมาตรฐานของคะแนนสอบกลางภาค และปลายภาค ตามลำดับ

  2. หากพิจารณาจากคะแนนกลางภาค และปลายภาค นักเรียนในชั้นเรียนนี้มีพัฒนาการหรือไม่ เพราะเหตุใด จงแสดงหลักฐานประกอบคำตอบของท่าน


Matrices

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

\(\textbf{class}_A\)=\(\begin{pmatrix} student \\ interaction\end{pmatrix}\)


เพื่อเก็บสภาพการจัดการเรียนรู้ของห้องเรียน A ในด้านจำนวนนักเรียน (student) และระดับการมีปฏิสัมพันธ์ของนักเรียน (interaction)

อย่างไรก็ตามในสถานการณ์จริงของการวิจัย ผู้วิจัยมักไม่ได้ศึกษาหรือเก็บข้อมูลกับหน่วยตัวอย่างเดียว แต่มักมีการเก็บข้อมูลตัวแปรต่าง ๆ กับหน่วยตัวอย่างหลายหน่วย เช่น อาจต้องการศึกษาสภาพการจัดการเรียนรู้ของห้องเรียนจำนวน 8 ห้อง ดังรูป


ในกรณีนี้จะเห็นว่าหากนักวิจัยเก็บรวบรวมข้อมูลจำนวนนักเรียน และระดับการมีปฏิสัมพันธ์ของนักเรียน จากห้องเรียนทั้งหมดดังกล่าว นักวิจัยจะมีเวกเตอร์สภาพการจัดการเรียนรู้ของห้องเรียนถึง 7 เวกเตอร์ !!


ซึ่งจะเห็นว่าการใช้เวกเตอร์ดังกล่าวในการวิเคราะห์ข้อมูลไม่สะดวกในทางปฏิบัติ นักสถิติจึงนำ เมทริกซ์ (matrix) เข้ามาช่วยในการจัดระเบียบข้อมูลดังกล่าว

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


\(\textbf{M}= \begin{pmatrix} 0&13 &7 &6 &20 &3 &8 &15 \\ 0& 0 &3 &5 &5 &5 &4 &5 \end{pmatrix}\)


จากเมทริกซ์ M ในข้างต้นจะเห็นว่าเป็นเมทริกซ์ที่มี 2 แถว (row) และมี 7 คอลัมน์ (column) โดยที่แถวที่ 1 แทนสภาพการจัดการเรียนรู้ของห้องเรียน และแถวที่ 2 แทนระดับการมีปฏิสัมพันธ์ของนักเรียน ส่วนแต่ละคอลัมน์แทนห้องเรียนแต่ละห้อง อย่างไรก็ตามในทางปฏิบัติมักนิยมให้แถวของเมทริกซ์แทนหน่วยตัวอย่าง และคอลัมน์ของเมทริกซ์แทนตัวแปร ซึ่งสามารถทำได้ด้วยการ transpose เมทริกซ์ M ดังนี้

\(\textbf{M}= \begin{pmatrix} 0 & 0\\ 7 & 0\\ 6 & 3\\ 20 & 5\\ 3 & 5\\ 8 & 4\\ 15 & 5\\ \end{pmatrix}\)


\(\approx\) \(\hspace{5pt}\)

ในโปรแกรม R เมทริกซ์จำแนกออกเป็น 3 ประเภท ตามลักษณะของข้อมูลเช่นเดียวกับเวกเตอร์ ได้แก่

  1. เมทริกซ์ตัวเลข (numeric matrix)
  2. เมทริกซ์ตัวอักษร (character matrix)
  3. เมทริกซ์ตรรกะ (logical matrix)

กิจกรรม 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

จากข้อมูลในตารางข้างต้น

  1. จงสร้างเมทริกซ์คะแนนสอบ (Score1) เพื่อเก็บข้อมูลคะแนนสอบกลางภาค และปลายภาค โดยใช้คำสั่ง
cbind(Midterm, Final)
  1. จงสร้างเมทริกซ์ Score2 เพื่อเก็บข้อมูลเพศ คะแนนสอบกลางภาค และปลายภาค โดยใช้คำสั่ง
cbind(Gender,Midterm, Final)
  1. จงเปรียบเทียบผลลัพธ์ที่ได้จาก 1. กับ 2.


ฟังก์ชัน 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 ตัวได้แก่ ลำดับของแถว และลำดับของคอลัมน์ ของข้อมูลที่ต้องการในเมทริกซ์

กิจกรรม

  1. จงเรียกข้อมูลจำนวนนักเรียนของห้องเรียนห้องที่ 5

  2. จงเรียกข้อมูลระดับการมีปฏิสัมพันธ์ของนักเรียนในห้องเรียนที่ 3

  3. จงเรียกข้อมูลสภาพการจัดการเรียนรู้ของห้องเรียนที่ 7

  4. จงเรียกข้อมูลระดับการมีปฏิสัมพันธ์ของทุกห้องเรียน

  5. จงเรียกข้อมูลระดับการมีปฏิสัมพันธ์ของห้องเรียนที่ 1 ถึง 4 (hint: M[1:4,2])

  6. จงเรียกข้อมูลสภาพการจัดการเรียนรู้ของห้องเรียนที่ 1 ถึง 4

  7. จงสร้างเมทริกซ์ A ที่มีสมาชิกเป็นดังนี้
    \(\textbf{A}= \begin{pmatrix} 0 & 0 & 1\\ 2 & 0 & 5\\ -3 & 3 & 0\\ 10 & 5 & 2\\ \end{pmatrix}\)



การกำหนดชื่อให้กับแถว และคอลัมน์ในเมทริกซ์

ผู้ใช้โปรแกรมสามารถกำหนดชื่อให้กับแถว และคอลัมน์ของเมทริกซ์ได้ โดยใช้คำสั่ง 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

ข้อจำกัดของเมทริกซ์คือสามารถเก็บข้อมูลได้เพียงลักษณะเดียว ทำให้ไม่สะดวกสำหรับนักวิจัยที่มีข้อมูลหลากหลายประเภทอยู่ในชุดข้อมูล จึงมีการพัฒนาวัตถุชนิดพิเศษที่เรียกว่า ชุดข้อมูล (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


Share & Help

Made with Padlet