วันเสาร์ที่ 10 มีนาคม พ.ศ. 2561

การคำนวณเชิงตัวเลข (๒๑) การปรับเรียบ (Smoothing) ข้อมูล (ตอนที่ ๒) MO Memoir : Saturday 10 March 2561

การเปลี่ยนแปลงส่วนใหญ่ในธรรมชาติเรียกได้ว่าเป็นการเปลี่ยนแปลงแบบต่อเนื่อง กล่าวคือมีค่า y ได้ทุก ๆ ค่า x และอุปกรณ์วัดก็มักจะอ่านการเปลี่ยนแปลงนั้นได้อย่างต่อเนื่อง
 
แต่เมื่อนำเอาอุปกรณ์ดิจิตอลมาใช้ในการเก็บข้อมูล สิ่งที่เกิดขึ้นก็คืออุปกรณ์ดิจิตอลจะทำการอ่านค่าที่อุปกรณ์วัดนั้นวัดได้ "อย่างเป็นจังหวะ" กล่าวคือเก็บข้อมูลเป็นจุดข้อมูล (x, y) ที่แต่ละจุดนั้นห่างกันเป็นระยะ Δx แต่เมื่อเราต้องการวิเคราะห์ผล เราก็มักจะนำเอาข้อมูลที่เป็นจุดแต่ละจุดนั้นมาสร้างเป็นเส้นกราฟที่ต่อเนื่อง และปัญหาสำคัญก็อยู่ตรงนี้ควรเลือกใช้ค่า Δx ที่มีขนาดเท่าใด ค่า Δx ที่มีขนาดที่ไม่ใหญ่เกินไปจะทำให้เมื่อนำจุดข้อมูลมาสร้างเป็นกราฟจะได้เส้นกราฟที่ผิดเพี้ยนไปจากความจริง และค่า Δx ที่มีขนาดเล็กเกินไปอาจทำให้อุปกรณ์อ่านค่านั้น (ที่ปรกติอาจต้องอ่านค่าจากอุปกรณ์วัดหลายตัว) อ่านค่าไม่ทันและสิ้นเปลืองหน่วยความจำในการเก็บข้อมูล
 
ขนาดของ Δx นั้นขึ้นอยู่กับความกว้างของการเปลี่ยนแปลง ความกว้างในที่นี้คือช่วงตั้งแต่ตรวจพบว่าสัญญาณเริ่มมีการเปลี่นแปลงไปจาก base line (เช่นพบจุดเริ่มต้นของการเกิดพีค) จนกระทั่งสัญญาณนั้นกลับมาอยู่ที่ระดับ base line ใหม่ (เช่นพบจุดสิ้นสุดของการเกิดพีค) เช่นในกรณีของสัญญาณที่เป็นพีค ระยะ Δx นั้นต้องแคบพอที่จะให้จำนวนจุดข้อมูลที่มากพอที่จะสามารถสร้างพีคดังกล่าวขึ้นมาได้อย่างถูกต้อง ไม่ว่าพีคนั้นจะเกิดที่ตำแหน่ง x ใดก็ตาม
 
เพื่อให้เห็นภาพจะขอยกตัวอย่างโดยสมมุติว่าได้ทำการวัดค่าสัญญาณ y ในช่วง x ตั้งแต่ 0 ถึง 6 สัญญาณดังกล่าวประกอบด้วยพีคที่มีการกระจายตัวแบบ Gaussian จำนวน 2 พีคด้วยกัน โดยพีคแรกมีศูนย์กลางอยู่ที่ตำแหน่ง x = 1.97 และแอมพลิจูดเท่ากับ 1.0 พีคที่สองมีศูนย์กลางอยู่ที่ตำแหน่ง x = 4 และแอมพลิจูดเท่ากับ 1 พีคทั้งสองมีค่าครึ่งหนึ่งของความกว้างที่ตำแหน่งครึ่งหนึ่งของความสูงสูงสุดเท่ากับ 0.03 หน่วย (hwhm - half width at half maximum) กรณีแรกสุดเป็นการจำลองวัดที่กระทำโดยมีช่วงระยะห่างระหว่างจุดข้อมูล Δx = 0.05 ดังนั้นตำแหน่งของการวัดจะไม่ตรงกับตำแหน่งยอดของพีคที่ x = 1.97 (ที่อยู่ที่ตำแหน่ง x = 1.97 แต่การวัดทำที่ตำแหน่ง x = ..., 1.90, 1.95, 2.00, 2.05, ...) แต่จะตรงกับตำแหน่งยอดของพีคที่ตำแหน่ง x = 4.0 (ที่อยู่ที่ตำแหน่ง x = 4.00 โดยการวัดทำที่ตำแหน่ง x = ..., 3.90, 3.95, 4.00, 4.05, ...) กราฟของสัญญาณคือเส้น Signal สีน้ำเงินในรูปที่ ๑ และ ๒ 
  
ขั้นตอนต่อไปเป็นการจำลองการใส่ 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 ตามลำดับ) ในที่นี้เพื่อให้เห็นภาพผลการปรับเรียบชัดเจนขึ้นจึงได้ทำการเลี่อนกราฟแต่ละเส้นให้สูงขึ้นไม่ให้ซ้อนทับกับ วิธีการปรับเรียบข้อมูลใช้เทคนิค "ค่าเฉลี่ยเคลื่อนที่ (moving average)" ที่ได้กล่าวไว้เมื่อวันพฤหัสบดีที่ผ่านมา (เรื่อง "การคำนวณเชิงตัวเลข (๒๐) การปรับเรียบ (Smoothing) ข้อมูล (ตอนที่ ๑)")

ลองพิจารณารูปกราฟดูก่อนนะครับว่าเกิดอะไรขึ้น โดยเฉพาะกับ "พีคแรก" ที่ตำแหน่ง x = 1.97

รูปที่ ๑ เส้นกราฟสีน้ำเงินล่างสุด (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 หน่วย
 
ในรูปที่ ๑ จะเห็นว่าแม้ว่าจะเป็นการคำนวณค่าโดยตรงจากสมการ (Signal เส้นสีน้ำเงิน) แต่ถ้าจุดการคำนวณนั้นไม่ได้ตรงกับตำแหน่งยอดพีค พอลากเส้นเชื่อมต่อจุด (ลากแบบเส้นตรง) ก็จะเห็นว่าพีคแรกที่ x = 1.97 นั้นมีความสูงที่ลดลง และเมื่อนำข้อมูลไปทำการปรับเรียน พีคที่ x = 1.97 นั้นจะหายไปอย่างรวดเร็ว โดยเฉพาะอย่างยิ่งกรณีของรูปบน (ที่เป็นแบบจำลองการวัดค่าซ้ำ 2 ครั้ง) ที่พีคที่ x = 4.0 ก็หายไปอย่างรวดเร็วด้วย
 
และแม้ว่าจะใช้แบบจำลองข้อมูลที่จำลองค่าที่ได้จากการวัดเฉลี่ย 10 ครั้ง (รูปที่ 1 (ล่าง)) พบว่ายิ่งใช้จุดในการเฉลี่ยค่ามากเท่าใด พีคทั้งสองพีคก็หายไปอย่างรวดเร็ว ทั้งนี้เป็นเพราะจำนวนจุดที่เป็นตัวแทนของสัญญาณนั้นมีน้อยกว่าจำนวนจุดที่เป็นตัวแทนของ base line

รูปที่ ๒ เป็นการคำนวณแบบเดียวกันกับรูปที่ ๑ ต่างกันตรงที่ในกรณีของรูปที่ ๒ นี้ใช้ Δx = 0.02 ซึ่งตำแหน่งพิกัด x ที่ทำการคำนวณก็ยังไม่ตรงกับตำแหน่งยอดพีคของพีคที่ 1 (ที่ x = 1.97) แต่สิ่งที่ได้ก็คือแม้ว่าจะใช้จำนวนจุดที่เฉลี่ยค่าถึง 9 จุด ก็ยังบอกได้ว่าข้อมูลนั้นมี 2 พีคหลัก แต่สิ่งที่ต้องระวังก็คือการเห็นพีคที่เตี้ยลง แต่กว้างขึ้น โดยความกว้างของพีคนั้นจะเพิ่มตามจำนวนจุดข้อมูลที่ใช้เฉลี่ยค่า และถ้านำเอาพีคที่กว้างขึ้นนี้ไปทำ peak deconvolution ก็อาจจะหลงไปได้ว่ามันประกอบด้วยพีคมากกว่า ๑ พีคเหลื่อมซ้อนกันอยู่ ทั้ง ๆ ที่ในความเป็นจริงมันมีอยู่พีคเดียว
  

รูปที่ ๒ เส้นกราฟสีน้ำเงินล่างสุด (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 หน่วย

นั่นแหละครับ ใน Memoir ฉบับวันอังคารที่ผ่านมา (เรื่อง "รู้ทันนักวิจัย (๙) อยากให้มีพีคก็จัดให้ได้รู้ทันนักวิจัย (๙) อยากให้มีพีคก็จัดให้ได้") ผมถึงได้กล่าวว่าเวลาที่นิสิตในที่ปรึกษาผมเอาผลการวิเคราะห์ตัวอย่างมาให้ดู ผมจึงต้องขอดูข้อมูลดิบที่ได้จากการวัดจริง ไม่ใช่เอาข้อมูลที่ผ่านการปรับแต่งมาเรียบร้อยแล้วมาให้ดู ทั้งนี้เพื่อเป็นการฝึกให้รู้จักการอ่านสัญญาณ ซึ่งเป็นสิ่งจำเป็นก่อนที่จะอ่านค่าตัวเลขต่าง ๆ (ไม่ว่าจะเป็นตำแหน่งพีค พื้นที่พีค จำนวนพีค ฯลฯ)

ประเด็นเรื่องความกว้างของพีคตรงนี้สำหรับบางคนที่ต้องการพีคกว้าง ๆ เช่นพวกที่ต้องการความกว้างของพีค XRD (X-ray diffraction) เอาไปคำนวณขนาดผลึกด้วย Scherrer's equation ที่ใช้ค่าความกว้างของพีคเป็นตัวหารในสมการคำนวณหาขนาดผลึก ก็อาจชอบก็ได้ เพราะมันทำให้ได้ขนาดผลึกเล็กลง สามารถคุยได้ว่าเป็นผลึกขนาดนาโน
 
การวิเคราะห์ FT-IR (Fourier Transform Infrared spectroscopy) ก็เป็นอุปกรณ์หนึ่งที่มักจะพบปัญหาเรื่องความละเอียดของการสแกนที่ไม่ละเอียดมากพอ ทำให้ตำแหน่งพีคที่วัดได้นั้นมีการเคลื่อนตัว แต่ผลการเคลื่อนตัวนั้นไม่ได้เกิดจากการเปลี่ยนแปลงโครงสร้างของตัวอย่าง แต่เกิดจากการสแกนที่หยาบเกินไป
 
ลักษณะของสัญญาณที่มีการกระโดดขึ้นสูงอย่างรวดเร็วก่อนตกลงกลับมายังตำแหน่งเดิมอย่างรวดเร็วนั้นอาจถูกมองว่าเป็น "Spike" ในกรณีของการเก็บข้อมูลที่ใช้ Δx ที่แคบมากพอก็จะระบุได้เลยว่าสิ่งที่เห็นนั้นเป็น spike แต่ในกรณีของการเก็บข้อมูลที่ใช้ Δx กว้างเกินไป (แบบมีจุดข้อมูลเพียงไม่กี่จุดในช่วงตั้งแต่เริ่มต้นเกิดพีคจนพีคสิ้นสุด) จะทำให้เห็นพีคนั้นกลายเป็น spike ได้ และเมื่อนำไปทำการปรับเรียบข้อมูลก็จะทำให้พีคนั้นหายไป

เรื่องนี้ยังไม่จบ ยังมีต่ออีกครับ :) :) :)

ไม่มีความคิดเห็น: