โปรแกรม R เป็น Freeware/Open source ที่พัฒนาโดยนักสถิติและผู้ใช้งานโดยตรง
สามารถ downlaod ได้ที่ http://mirrors.psu.ac.th/pub/cran/
ผมขออนุญาตข้ามขั้นตอนการติดตั้งนะครับ
หลังจากติดตั้งและเปิดโปรแกรมมาแล้วหน้าจอก็จะประมาณนี้ครับ
ก่อนที่จะสร้างเมตริกซ์ จะต้องเข้าใจตัวแปรและสัญลักษณ์เหล่านี้ก่อนครับ
ตัวแปรจะต้องเป็นภาษาอังกฤษหรือตัวเลข โดยจะต้องขึ้นต้นด้วยตัวอักษร ไม่มีเว้นวรรค
เช่น Data1, X, x, AX, Ax9 ... โดยที่ควรจะตั้งชื่อตัวแปรให้สื่อความหมายกับข้อมูล
และต้องระมัดระวังเกี่ยวกับชื่อตัวแปรที่คล้ายกัน เนื่องจากตัวเล็กและตัวใหญ่ถือว่าเป็นตัวแปรที่ต่างกัน
เช่น Data1, DATA1, data1, ....
ส่วนของสัญลักษณ์ในเบื้องต้นมีดังนี้
สัญลักษณ์
|
ความหมาย
|
ตัวอย่าง
|
<- หรือ =
|
นำค่าการทำงานของฟังก์ชั่นที่อยู่ทางด้านขวาไปเก็บไว้ในตัวแปรที่ตั้งชื่อไว้ทางด้านซ้าย
|
k <- 10 หรือ k = 10 คือเก็บค่า 10 ไว้ใน k
|
c()
|
นำข้อมูลมาต่อกันเป็นเวคเตอร์ (Concatination operator)
|
y = (1,2,5,6) คือการเก็บค่า (1,2,5,6) ใน y
|
:
|
Sequence operator
|
m = 0:99 คือสร้าง 0 ถึง 99 เก็บค่าไว้ใน m
|
seq(from a,to b,by c)
|
Sequence operator from a to b by c
|
p = seq(0,3,0.1) คือ สร้าง 0 ถึง 3 โดยเพิ่มค่าครั้งละ 0.1
|
rep(a,times)
|
การอ่านข้อมูลซ้ำ
|
h = rep(“VT”,3) คือสร้าง “VT” ซ้ำกัน 3 ครั้ง
|
sort(a)
|
การเรียงลำดับจากน้อยไปหามากของ a
|
a = c(0,3,2,1)
b = sort(a)
result = 0,1,2,3
|
rev(sort(a))
|
การเรียงลำดับจากมากไปหาน้อยของ a
|
t = rev(sort(a))
result = 3,2,1,0
|
a[i]
|
การอ้างอิงสมาชิกตำแหน่งที่ i ของ a
|
a[1] = 0, a[2] = 3
|
a[i:j]
|
การอ้างอิงสมาชิกตำแหน่งที่ i ถึง j ของ a
|
a[2:4] = 3,2,1
a[3:4] = 2,1
|
a[-i]
|
การอ้างอิงค่าที่ไม่ใช่ตำแหน่งที่ i ของ a
|
a[-3] = 0,3,1
|
a[-length(a)]
|
การอ้างอิงค่าที่ไม่ใช่ตำแหน่งสุดท้ายของ a
|
a[-length(a)] = 0,3,2
|
ต่อไปก็เป็นฟังก์ชั่นต่าง ๆ ที่ใช้ในการคำนวณเมตริกซ์
สัญลักษณ์
|
ความหมาย
|
ตัวอย่าง
|
+
|
การบวก
|
g = 1+9 (g=10)
|
-
|
การลบ
|
p = 5-2 (p=3)
|
*
|
การคูณ
|
s = 4*12 (s=48)
|
/
|
การหาร
|
d = 1/9 (d=0.1111111)
|
^
|
การยกกำลัง
|
z = 2^10 (z=1024)
|
sqrt()
|
การหารากที่สอง
|
n = sqrt(64) (n = 8)
|
abs()
|
การหาค่าสัมบูรณ์
|
e = abs(-21) (e = 21)
|
log()
|
การหา Natural log
|
v = log(2) (v = 0.6931472)
|
log10()
|
การหา Common log
|
f = log10(100) (f =2)
|
exp()
|
การหาค่า e^x
|
u = exp(2) (u = 7.389056)
|
%/%
|
การหาจำนวนเต็มที่ได้จากการหาร
|
r1 = 6%/%4 (r1 = 1)
r2 = 19%/%3 (r2 = 6)
|
%%
|
การหาเศษที่เหลือจากการหาร
|
j1 = 109%%2 (j1=1)
j2 = 10%%7 (j2 = 3)
|
sum(x)
|
คำนวณผลรวมของ x
|
x = (1,2,3)
sum(x) = 6
|
mean(x)
|
คำนวณค่าเฉลี่ยเลขคณิตของ x
|
mean(x) = 2
|
median(x)
|
คำนวณค่ามัธยฐานของ x
|
median(x) = 2
|
sd(x)
|
คำนวณค่าเบี่ยงเบนมาตรฐานของ x
|
sd(x) = 1
|
var(x)
|
คำนวณค่าความแปรปรวนของ x
|
var(x) = 1
|
เราลองมาคำนวณเวคเตอร์กันก่อนนะครับ ก่อนที่จะไปคำนวณเมตริกซ์
สร้างตัวแปรขึ้นมา 3 ตัว
a1 = (1,2,3)
a2 = (4,5,6)
a3 = (7,8,9)
ให้หาคำตอบ
(1) 5*a1 (2) a1+a2 (3) a2-a3 (4) a3*a1
สังเกตว่าการคูณ ก็คือ การเอาสมาชิกในตำแหน่งเดียวกัน มาคูณกันเลย
ยังไม่ใช่การคูณตามหลักของเมตริกซ์นะครับ
ให้หาคำตอบ
(1) ผลรวมของ 1,2,3,...,32,33
(2) ค่าเฉลี่ย 2,4,6,...,198,200
หลังจากที่เราสร้างเวคเตอร์ขึ้นมาแล้ว เราก็จะเอาเวคเตอร์เหล่านั้นมารวมกัน เพื่อสร้างเป็นเมตริกซ์
โดยมีสัญลักษณ์ที่ใช้คือ
cbind(x1,x2,x3,...,xn) = การรวมเวคเตอร์ x1,x2,x3,...,xn ทางด้านคอลัมน์
rbind(x1,x2,x3,...,xn) = การรวมเวคเตอร์ x1,x2,x3,...,xn ทางด้านแถว
ตัวอย่างเช่น
p=(1,2,3)
q=(2,4,7)
r=(9,4,0)
นอกจากนี้ยังมีอีกสัญลักษณ์คือ
matrix(data =, nrow =, ncol =, byrow = TRUE/FALSE)
เช่น s1=(1,2,3,4,5,6,7,8,9) สร้างเป็นเมตริกซ์ 3*3
สังเกตว่าถ้าเราไม่ใส่ byrow จะมีค่าเท่ากับ FALSE
สัญลักษณ์ที่เกี่ยวข้องอีกเล็กน้อยครับ
K[i,j] เป็นการอ้างอิงสมาชิกแถวที่ i คอลัมน์ที่ j ของเมตริกซ์ K
dim(K) เป็นการตรวจสอบมิติของเมตริกซ์ K
สังเกตว่า P[5,2] = Error เพราะว่าเมตริกซ์มีมิติ 2*5 แต่เราถามถึงสมาชิกแถวที่ 5 คอลัมน์ที่ 2 ซึ่งไม่มีจริง
สัญลักษณ์ที่ใช้เกี่ยวกับการคำนวณ
สัญลักษณ์
|
ความหมาย
|
t()
|
Transpose
|
det()
|
Determinant
|
solve()
|
Inverse matrix
|
A*B
|
การคูณของสมาชิกในเมตริกซ์
|
A%*%B
|
การคูณเมตริกซ์
|
colMeans()
|
การหาค่าเฉลี่ยเมตริกซ์ของแต่ละคอลัมน์
|
rowMeans()
|
การหาค่าเฉลี่ยเมตริกซ์ของแต่ละแถว
|
colSums()
|
การหาค่าผลรวมเมตริกซ์ของแต่ละคอลัมน์
|
rowSums()
|
การหาค่าผลรวมเมตริกซ์ของแต่ละแถว
|
ตัวอย่าง
สังเกตว่า A*A ไม่เท่ากับ A%*%A นะครับ ระวังอย่าใช้สัญลักษณ์ผิด
โจทย์กำหนด
(1) x+2y-z = 1
(2) 2x-y+z = 3
(3) -x+2y+3z = 7
หากจะแก้สมการเพื่อหาค่า x,y,z ก็มีได้หลายวิธี โดยวิธีพื้นฐานก็คือนำสมการเหล่านี้มาบวกลบกัน
เพื่อกำจัดตัวแปรออกไปทีละตัว จนได้คำตอบตัวแปรใดตัวแปรหนึ่งแล้วค่อยเอาไปแทนค่าหาตัวแปรที่เหลือ
ในที่นี้เราจะใช้โปรแกรม R คำนวณหาคำตอบให้ โดยคำนวณแบบเมตริกซ์
ก่อนอื่นต้องเปลี่ยนรูปร่างของสมการเหล่านี้ให้เป็นเมตริกซ์ Ax = B ก่อน
โดยดึงสัมประสิทธ์ของแต่ละตัวแปรออกมาเป็นเมตริกซ์ A ส่วนเมตริกซ์ x คือตัวแปร x,y,z
และเมตริกซ์ B คือคำตอบ
หาค่า x โดยคูณ Inverse A ด้านหน้าทั้ง 2 ข้าง
x = (Inverse A)B
จากนั้นแก้สมการโดยใชัสัญลักษณ์คือ
solve(A,B) ก็จะได้ x
หากคิดทีละขั้นตอน กำหนดเมตริกซ์ H คือ Inverse A
x = Inverse(A)%*%B นั่นคือ x = H%*%B
ถ้าใช้ solve(A,B) ก็จะได้ค่า x เท่ากัน
เพราะฉนั้นคำตอบคือ x=1, y=1, z=2
กำหนดเมตริกซ์ A และ B จงหา (A
2 - B
2)
t จงหา det(C)
จงหา Inverse K
กำหนดให้
(1) a-b+c+d = 8
(2) a+b-c+d = 6
(3) a+b-c-d = 0
(4) a-b-c+d = 4
จงหาค่า c
เพราะฉนั้น c=2