ใน
Memoir
ฉบับวันอังคารที่
๖ มีนาคมที่ผ่านมา (เรื่อง
"รู้ทันนักวิจัย (๙) อยากให้มีพีคก็จัดให้ได้")
ผมได้เกริ่นเอาไว้ตอนต้นว่า
"ชนิดของอัลกอริธึมทางคณิตศาสตร์ที่ใช้ในการปรับแต่งข้อมูลดิบ
ก็สามารถตกแต่งการแปลผลว่าจะให้ออกไปในทิศทางไหนก็ได้"
มาถึง
Memoir
ฉบับนี้ก็เลยอยากจะขอยกตัวอย่างบางตัวอย่างให้ดู
คือการปรับข้อมูลที่เต็มไปด้วยสัญญาณรวบกวน
(Noise)
ให้ราบเรียบขึ้น
เทคนิคที่เรียบง่ายที่สุดในการปรับข้อมูลให้เรียบขึ้นคือเทคนิคการหาค่าเฉลี่ยเคลื่อนที่
(Moving
average) ในเทคนิคนี้จะใช้จุดข้อมูลที่เป็นจำนวนเลขคี่
กล่าวคือสมมุติว่าเราใช้จุดข้อมูล
(x0,
y0), (x1, y1) และ
(x2,
y2) ค่าเฉลี่ยปรับแก้ที่จุด
x1
(หรือ
y1,ave)
จะเท่ากับ
(y0
+ y1 + y2)/3 และในทำนองเดียวกัน
ค่าเฉลี่ยปรับแก้ที่จุด
x2
(หรือ
y2,ave)
จะเท่ากับ
(y1
+ y2 + y3)/3 การปรับเรียบจะทำอย่างนี้ไปเรื่อย
ๆ จนกระทั่งถึงจุด (n-1)
โดยเราจะสูญเสียค่าที่จุด
x0
และ
xn
ไป
ถ้าเราคิดว่าใช้แค่
3
จุดข้อมูลยังไม่พอ
อยากจะใช้มากขึ้น
ลำดับถัดไปก็คือการใช้จุดข้อมูล
5
จุด
ในที่นี้จะใช้จุดข้อมูล
(x0,
y0), (x1, y1), (x2, y2),
(x3, y3) และ
(x4,
y4) เพื่อคำนวณหาค่าเฉลี่ยที่จุด
x2
(หรือ
y2,ave)
ซึ่งเท่ากับ
(y0
+ y1 + y2+ y3 + y4)/5
และในทำนองเดียวกัน
ค่าเฉลี่ยปรับแก้ที่จุด
x3
(หรือ
y3,ave)
จะเท่ากับ
(y1
+ y2 + y3 + y4 + y5)/5
การปรับเรียบจะทำอย่างนี้ไปเรื่อย
ๆ จนกระทั่งถึงจุด (n-2)
โดยเราจะสูญเสียค่าที่จุด
x0,
x1, xn-1 และ
xn
ไป
ยิ่งเราใช้จุดในการหาค่าเฉลี่ยแต่ละจุดมากขึ้น
เราก็จะยิ่งสูญเสียข้อมูลด้านหัวและท้ายมากขึ้น
ตารางที่ ๑ และรูปที่ ๑
แสดงตัวอย่างการเฉลี่ยค่าข้อมูลด้วยการใช้จุดข้อมูลต่าง
ๆ กัน
การลดขนาดของสัญญาณรบกวนหรือ
noise
นั้นทำได้
2
วิธีการด้วยกัน
วิธีการแรกที่ควรต้องทำก่อนและทำออกมาให้ดีที่สุดเท่าที่จะทำได้คือปรับแต่งการวัด
ไม่ว่าจะด้วยติดตั้งอุปกรณ์ให้เหมาะสม
การเตรียมตัวอย่าง
หรือขั้นตอนการวิเคราะห์
ทั้งนี้เพื่อให้ได้ค่าเฉลี่ยของ
noise
ออกมาให้น้อยที่สุดก่อน
จากนั้นจึงค่อยใช้วิธีการที่สองคือการใช้อัลกอริธึมทางคณิตศาสตร์เข้าไปปรับแต่งต่อ
เพราะถ้าข้อมูลดิบที่ได้จากการวัดนั้นออกมาไม่ดี
ผลการปรับแต่ง (ที่อาจออกมาดูดี)
ที่ได้จากการใช้วิธีการทางคณิตศาสตร์ก็สามารถนำไปสู่การแปลผลที่ผิดได้
ตารางที่
๑ ค่า y
คือข้อมูลที่มีสัญญาณรบกวน
และนำมาทำการปรับเรียบด้วยการใช้จำนวนจุดต่าง
ๆ กัน
x
|
y
|
3
pt
|
5
pt
|
7
pt
|
9
pt
|
0
|
0.7196841235
|
||||
0.05
|
0.7953104631
|
0.5671218253
|
|||
0.1
|
0.1863708893
|
0.5519866722
|
0.6385706628
|
||
0.15
|
0.6742786641
|
0.5592862425
|
0.6805164395
|
0.7148009915
|
|
0.2
|
0.8172091742
|
0.8069669485
|
0.6977224707
|
0.702233973
|
0.7482406044
|
0.25
|
0.929413007
|
0.8759876001
|
0.7867912918
|
0.7455958361
|
0.7332221809
|
0.3
|
0.8813406189
|
0.8141562069
|
0.8717042599
|
0.8024740394
|
0.7284413175
|
0.35
|
0.6317149946
|
0.8706330394
|
0.8251660875
|
0.8136174721
|
0.8075398805
|
0.4
|
1.0988435046
|
0.7716922706
|
0.7897400247
|
0.8251958694
|
0.8268821397
|
0.45
|
0.5845183126
|
0.8118815032
|
0.793123492
|
0.8136167251
|
0.8405333632
|
0.5
|
0.7522826926
|
0.7450196536
|
0.8364522925
|
0.8220066633
|
0.8428139483
|
0.55
|
0.8982579557
|
0.8329665484
|
0.8046976287
|
0.8674671316
|
0.8395755888
|
0.6
|
0.8483589968
|
0.8955623795
|
0.8777816208
|
0.8322316858
|
0.8527556384
|
0.65
|
0.9400701859
|
0.9127891519
|
0.897764159
|
0.8559198469
|
0.8558471708
|
0.7
|
0.9499382729
|
0.9140679475
|
0.868179656
|
0.9094033617
|
0.9187006657
|
0.75
|
0.8521953838
|
0.8508230325
|
0.9238413159
|
0.945395049
|
0.9323417236
|
0.8
|
0.7503354407
|
0.9097327069
|
0.9658672321
|
0.9492083656
|
0.9752135077
|
0.85
|
1.1266672961
|
1.0090675012
|
0.9508900201
|
0.9983560552
|
|
0.9
|
1.1501997669
|
1.0506397587
|
1.0372717459
|
||
0.95
|
0.8750522131
|
1.1031186643
|
|||
1
|
1.2841040128
|
รูปที่
๑ ข้อมูลจากตารางที่ ๑
เมื่อนำมาทำการปรับเรียบข้อมูลด้วยการใช้จำนวนจุดต่าง
ๆ กัน
ขั้นตอนต่อไปเป็นการจำลองการใส่
noise
เข้าไปค่า
signal
เพื่อสร้างแบบจำลองค่า
signal
ที่มี
noise
รบกวน
(เส้น
S
+ N)
ด้วยการใช้ฟังก์ชันสุ่มตัวเลขแล้วนำตัวเลขที่สุ่มได้นั้นบวกเข้าไปกับค่า
singal
การสร้างแบบจำลองสัญญาณที่มี
noise
รบกวนนี้ทดลองทำ
2
กรณีด้วยกัน
โดยกรณีแรกเป็นการจำลองการวัด
2
ครั้ง
โดยที่แต่ละจุด x
จะให้มี
noise
ที่เป็นบวก
1
ครั้งและ
noise
ที่เป็นลบ
1
ครั้ง
แล้วนำค่าทั้งสองมาเฉลี่ยเป็นค่า
y
(เส้น
(S
+ N) ในรูปที่
๒ (บน))
กรณีที่สองเป็นการจำลองการวัด
10
ครั้ง
โดยที่แต่ละจุด x
จะให้มี
noise
ที่เป็นบวก
5
ครั้งและ
noise
ที่เป็นลบ
5
ครั้ง
แล้วนำค่าทั้งสองมาเฉลี่ยเป็นค่า
y
(เส้น
(S
+ N) ในรูปที่
๒ (ล่าง))
ถัดไปจะเป็นการทดลองการปรับเรียบข้อมูล (S + N) ด้วยการใช้จุดข้อมูลเฉลี่ย 5, 7 และ 9 จุด (กราฟเส้น 5 pt, 7 pt และ 9 pt ตามลำดับ) ในที่นี้เพื่อให้เห็นภาพผลการปรับเรียบชัดเจนขึ้นจึงได้ทำการเลี่อนกราฟแต่ละเส้นให้สูงขึ้นทีละ 0.5 หน่วย (เพราะถ้าไม่เลื่อนก็จะเห็นมันซ้อนทับกันมั่วไปหมดจนแยกไม่ออก) จากผลการคำนวณจะเห็นว่าเมื่อใช้จำนวนจุดข้อมูลเฉลี่ยมากขึ้น กราฟที่ได้ก็จะมีความเรียบมากขึ้นด้วย
เพื่อให้เห็นภาพจะขอยกตัวอย่างโดยสมมุติว่าได้ทำการวัดค่าสัญญาณ
y
ในช่วง
x
ตั้งแต่
0
ถึง
6
สัญญาณดังกล่าวประกอบด้วยพีคที่มีการกระจายตัวแบบ
Gaussian
จำนวน
2
พีคด้วยกัน
โดยพีคแรกมีศูนย์กลางอยู่ที่ตำแหน่ง
x
= 2 และแอมพลิจูดเท่ากับ
1.0
พีคที่สองมีศูนย์กลางอยู่ที่ตำแหน่ง
x
= 4 และแอมพลิจูดเท่ากับ
1.5
กราฟทั้งสองมีค่าครึ่งหนึ่งของความกว้างที่ตำแหน่งครึ่งหนึ่งของความสูงสูงสุดเท่ากับ
1
หน่วย
(hwhm
- half width at half maximum)
กรณีแรกสุดเป็นการจำลองวัดที่กระทำโดยมีช่วงระยะห่างระหว่างจุดข้อมูล
Δx
= 0.05 กราฟนี้คือเส้น
Signal
สีน้ำเงินในรูปที่
๒ (บน)
ถัดไปจะเป็นการทดลองการปรับเรียบข้อมูล (S + N) ด้วยการใช้จุดข้อมูลเฉลี่ย 5, 7 และ 9 จุด (กราฟเส้น 5 pt, 7 pt และ 9 pt ตามลำดับ) ในที่นี้เพื่อให้เห็นภาพผลการปรับเรียบชัดเจนขึ้นจึงได้ทำการเลี่อนกราฟแต่ละเส้นให้สูงขึ้นทีละ 0.5 หน่วย (เพราะถ้าไม่เลื่อนก็จะเห็นมันซ้อนทับกันมั่วไปหมดจนแยกไม่ออก) จากผลการคำนวณจะเห็นว่าเมื่อใช้จำนวนจุดข้อมูลเฉลี่ยมากขึ้น กราฟที่ได้ก็จะมีความเรียบมากขึ้นด้วย
รูปที่
๒ เส้นกราฟสีน้ำเงินล่างสุด
(Signal)
คือค่าสัญญาณที่ไม่มีสัญญาณรบกวน
เส้นกราฟสีส้มที่อยู่ถัดไป
(S
+ N) คือสัญญาณที่มีสัญญาณรบกวน
(กราฟสีน้ำเงิน
+
noise) เส้นกราฟ
5pt,
7 pt และ
9
pt ได้จากการนำเอาค่า
(S
+ N) นั้นไปทำการปรับเรียบด้วยการใช้จุดข้อมูล
5,
7 และ
9
จุดตามลำดับ
รูปบนเป็นกรณีของการจำลองค่าการวัด
2
ครั้ง
ที่การวัดแต่ละครั้งนั้นมี
noise
รบกวน
(ให้เป็น
noise
ทางบวก
1
ครั้งและ
noise
ทางลบ
1
ครั้ง)
แล้วนำค่าที่วัดได้นั้นมาเฉลี่ย
ส่วนรูปร่างเป็นกรณีของการจำลองค่าการวัด
10
ครั้ง
ที่การวัดแต่ละครั้งนั้นมี
noise
รบกวน
(ให้เป็น
noise
ทางบวก
5
ครั้ง)
และ
noise
ทางลบ
5
ครั้ง)
แล้วนำค่าที่วัดได้นั้นมาเฉลี่ย
จะเห็นว่าเมื่อทำการวัดโดยมีจำนวนครั้งมากขึ้น
ขนาดของ noise
ที่ปรากฏให้เห็นจะลดลง
ในที่นี้แต่ละจุด x
ห่างกัน
0.05
หน่วย
กราฟแต่ละเส้นมีการขยับขึ้น
0.5
หน่วยเพื่อไม่ให้ซ้อนทับกัน
ส่วนรูปที่ ๓ เป็นการทดลองแบบเดียวกันกับรูปที่ ๒ แต่เป็นการจำลองวัดที่กระทำโดยมีช่วงระยะห่างระหว่างจุดข้อมูล Δx = 0.02 (ละเอียดกว่ารูปที่ ๒) ก็จะเห็นว่าได้ผลทำนองเดียวกัน
ส่วนรูปที่ ๓ เป็นการทดลองแบบเดียวกันกับรูปที่ ๒ แต่เป็นการจำลองวัดที่กระทำโดยมีช่วงระยะห่างระหว่างจุดข้อมูล Δx = 0.02 (ละเอียดกว่ารูปที่ ๒) ก็จะเห็นว่าได้ผลทำนองเดียวกัน
รูปที่
๓ เส้นกราฟสีน้ำเงินล่างสุด
(Signal)
คือค่าสัญญาณที่ไม่มีสัญญาณรบกวน
เส้นกราฟสีส้มที่อยู่ถัดไป
(S
+ N) คือสัญญาณที่มีสัญญาณรบกวน
(กราฟสีน้ำเงิน
+
noise) เส้นกราฟ
5pt,
7 pt และ
9
pt ได้จากการนำเอาค่า
(S
+ N) นั้นไปทำการปรับเรียบด้วยการใช้จุดข้อมูล
5,
7 และ
9
จุดตามลำดับ
รูปบนเป็นกรณีของการจำลองค่าการวัด
2
ครั้ง
ที่การวัดแต่ละครั้งนั้นมี
noise
รบกวน
(ให้เป็น
noise
ทางบวก
1
ครั้งและ
noise
ทางลบ
1
ครั้ง)
แล้วนำค่าที่วัดได้นั้นมาเฉลี่ย
ส่วนรูปร่างเป็นกรณีของการจำลองค่าการวัด
10
ครั้ง
ที่การวัดแต่ละครั้งนั้นมี
noise
รบกวน
(ให้เป็น
noise
ทางบวก
5
ครั้ง)
และ
noise
ทางลบ
5
ครั้ง)
แล้วนำค่าที่วัดได้นั้นมาเฉลี่ย
จะเห็นว่าเมื่อทำการวัดโดยมีจำนวนครั้งมากขึ้น
ขนาดของ noise
ที่ปรากฏให้เห็นจะลดลง
ในที่นี้แต่ละจุด x
ห่างกัน
0.02
หน่วย
กราฟแต่ละเส้นมีการขยับขึ้น
0.5
หน่วยเพื่อไม่ให้ซ้อนทับกัน
รูปที่
๔ เป็นการทดลองนำเอาข้อมูลที่ได้จากการปรับเรียบไปทำการแยกพีค
(peak
deconvolution) ใหม่เพื่อทดสอบว่าผลออกมาจะเป็นอย่างไร
การแยกพีคทำด้วยโปรแกรม
fityk
0.9.8 (ตัวนี้เป็นซอฟแวร์แจกฟรีครับ)
ข้อมูลที่นำไปทดลองแยกพีคประกอบด้วยข้อมูลจุด
9pt
ของรูปที่
๒ (บน)
ที่ได้จากการนำเอาสัญญาณเป็นค่าเฉลี่ยจากการวัด
2
ครั้งไปทำการปรับเรียบโดยใช้จุด
9
จุด
ผลที่ได้แสดงไว้ในรูปที่
๔ (บน)
และข้อมูลจุด
9pt
ของรูปที่
๒ (ล่าง)
ที่ได้จากการนำเอาสัญญาณเป็นค่าเฉลี่ยจากการวัด
10
ครั้งไปทำการปรับเรียบโดยใช้จุด
9
จุด
ผลที่ได้แสดงไว้ในรูปที่
๔ (ล่าง)
ในแต่ละรูปนั้น
จุดข้อมูลดิบคือจุดสีเขียว
(ดูยากหน่อย)
เส้นสีแดงคือพีคที่ได้จากการทำ
peak
deconvolution และเส้นสีเหลืองคือผลรวมของพีคย่อยแต่ละพีค
ส่วนเส้นหยักที่อยู่ในกรอบข้างล่างคือค่าความคลาดเคลื่อน
(ผลต่างระหว่างจุดข้อมูลจริงและค่าที่ประมาณได้)
ณ
แต่ละตำแหน่ง x
รูปที่ ๔ การทำ peak deconvolution ด้วยโปรแกรม fityk 0.9.7 (บน) ข้อมูลจุด 9pt ของรูปที่ ๒ (บน) และ (ล่าง) ข้อมูลจุด 9pt ของรูปที่ ๒ (ล่าง) ผลที่ได้ออกมาเป็นอย่างไรก็ขอให้ลองพิจาณากันเอาเองนะครับว่าการได้มาซึ่งข้อมูลที่ถูกต้องนั้นสำคัญอย่างไรในการแปลผล แม้ว่าจะนำเอาคณิตศาสตร์เข้ามาช่วยแล้วก็ตาม
เรื่องการแยกพีคหรือการทำ
peak
deconvolution นี้
ผลที่ได้จะออกมาอย่างไรนั้นยังมีปัจจัยเกี่ยวข้องอีกหลายอย่าง
ไม่ว่าจะเป็น จำนวน ขนาด
และตำแหน่ง
ของพีคเริ่มแรกที่เราเดาขึ้นมาก่อนให้อัลกอริธึมทำการปรับแต่งเพื่อให้ได้ค่าความคลาดเคลื่อนต่ำสุด
หรือจะกล่าวจะว่า "อยากให้มีสักกี่พีค
ที่ตำแหน่งไหนบ้าง ก็จัดให้ได้"
ก็ไม่น่าจะผิดจากความเป็นจริงไปมากนั้น
ไม่มีความคิดเห็น:
แสดงความคิดเห็น