สวัสดีครับเพื่อน ๆ ชาวหว้ากอทุกท่าน การหาสัมประสิทธิ์ของสมการพหุนามเป็นหนึ่งในหัวข้อการถดถอย เชิงเส้นตรง (linear regression) ซึ่งเป็นรากฐานของการถดถอยแบบไม่เป็นเส้นตรง (nonlinear regression) ครับ มีความสำคัญมากในการสร้างสมการคณิตศาสตร์เพื่อใช้ในงานทางด้านโมเดลลิ่งและซิมมิวเลชั่น (Modelling & Simulation) สำหรับผู้ที่ทำงานวิจัยและต้องการวิเคราะห์ข้อมูลผลการทดลองอย่างละเอียด ครับ ในปัจจุบันมีโปรแกรมช่วยเหลือในการหาค่าเหล่านี้มากมาย แต่จากการที่เป็นโปรแกรมสำเร็จรูป ทำให้ บางครั้งก็ไม่ได้อย่างใจ บางทีก็ต้องซื้อหาโปรแกรมมาในราคาแพง หรือถ้าก๊อปเขามาอย่างไม่ถูกต้องก็ละเมิดลิขสิทธิ์ การทำความเข้าใจกับเนื้อหานอกจากจะทำให้เรารู้ว่าโปรแกรมทำงานอย่างไรแล้ว ยังจะทำให้โปรแกรมแสดงผลอย่างที่เราต้องการครับ
สมมติว่าเรามีเวกเตอร์พารามีเตอร์ B = (B1, B2, ..., Bp) สำหรับสมการ
Yn = B1Xn1 + B2Xn2 + ... + BpXnp + Zn = (Xn1, Xn2, ..., Xnp)B + Zn
เมื่อ Yn คือ response หรือข้อมูลผลการทดลอง n ข้อมูล,
Xn คือ ตัวแปรที่เราศึกษาซึ่งอาจจะเป็น เวลา, ความเข้มข้นของสารเคมี, ฯลฯ n ข้อมูล,
Yn นั้นแบ่งออกได้เป็น 2 ส่วนคือ Deterministic part และ Stochastic part
Deterministic part คือ (Xn1, Xn2, ..., Xnp)B หรือ ส่วนที่โมเดลอธิบายได้ และ
Stochastic part คือ Zn หรือ ส่วนที่เป็น noise หรือ disturbance ของผลการทดลอง
เราเรียก (Xn1, Xn2, ..., Xnp) ว่า predictor หรือ regressor variables ครับ
ซึ่งอยู่ในรูป
ของเมตริกซ์ดังจะสังเกตเห็นได้จากตัวอย่างที่ผมจะได้นำเสนอข้างล่าง
จากการใช้ทฤษฎีของ Least Square Estimates เราสามารถเขียนความสัมพันธ์ระหว่าง
เวกเตอร์พารามีเตอร์ B, เมตริกซ์ X และ เวกเตอร์ผลการทดลอง Y ได้ว่า
B = [(Xt X)^(-1)][Xt]Yn
เมื่อ Xt คือ transposition ของเมตริกซ์ X
ตัวอย่าง จากข้อมูลผลการทดลองข้างล่างจงใช้วิธีการถดถอยเชิงเส้นตรง หาสัมประสิทธิ์
สำหรับสมการพหุนามดีกรี 5
(y = ax^5 + bx^4 + cx^3 + dx^2 + ex + f)
x (day) | y (g/l) |
0 | 1.649 |
1 | 9.501 |
2 | 9.882 |
3 | 10.057 |
4 | 10.392 |
5 | 6.846 |
6 | 5.279 |
สร้างเมตริกซ์ X ในรูปแบบ (1 x x^2 x^3 x^4 x^5)
และคำนวณตามขั้นตอนจนกระทั่งได้เวกเตอร์พารามีเตอร์ B ออกมา
ในโปรแกรม EXCEL เองแม้จะมีการสร้าง Trendline ให้ถึงดีกรี 6 แต่ก็มีข้อบกพร่องหลายอย่างเช่น
1. ความยุ่งยากในการ display สมการซึ่งอยู่ในรูป textbox ทำให้นำเอาค่าสัมประสิทธิ์ไปใช้ยาก (ยุ่งยากในการทำให้เป็นอัตโนมัติ)
2. จำกัดดีกรีของสมการพหุนามไว้ที่ดีกรี 6 เท่านั้น
3. ไม่มีการคำนวณค่า Residual Sum of Square (RSS) ให้ ซึ่งค่านี้มีความสำคัญในการคำนวณ parameter error
และช่วงความเชื่อมั่น (confidential interval) ของพารามีเตอร์ที่ประมาณค่าได้
4. ผู้ใช้ต้องนำสมการพหุนามนั้น ๆ มาวิเคราะห์สมการอนุพันธ์เอง (ถ้าต้องการใช้)
5. ถ้าผู้ใช้ไม่ทราบแน่ชัดว่าข้อมูลที่มีอยู่จะ fit กับสมการพหุนามดีกรีใดได้ดีที่สุด ต้องเสียเวลาพิจารณาปรับค่า
trendline ไปทีละตัว ๆ ทำให้ไม่สะดวก
เพื่อแก้ปัญหานี้ ผมจึงพัฒนาโปรแกรมถดถอยสมการพหุนามขึ้นใหม่ดังภาพข้างล่างครับ
โดยผู้ใช้โปรแกรมสามารถเปลี่ยนค่าของแกน x หรือแกน y ให้เป็นค่า log ได้ง่ายเพียงกดปุ่ม หรือจะต้องการ reset พื้นที่ป้อนข้อมูลก็สามารถทำได้โดยการ reset worksheet สมการพหุนามที่เราสามารถเลือกใช้ได้ก็มี ตั้งแต่ สมการเส้นตรง ไปจนถึงสมการพหุนามดีกรี 20 ซึ่งเพื่อน ๆ สามารถเลือกใช้มี y-intercept ที่ศูนย์ หรือ ปล่อยให้โปรแกรมหา y-intercept เอง (เลือก y-intercept at... แต่ไม่ใส่ค่าใด ๆ) หรือบังคับ y-intercept ก็ได้ อย่างที่มี option นี้ใน EXCEL ครับ เพื่อน ๆ ยังสามารถให้ตัวโปรแกรมสร้าง workbook สรุปผลการถดถอย แยกออกมาต่างหากได้ด้วยครับ (Create Summary, Yes or No) ตามภาพข้างล่าง
ความสามารถอีกอย่างหนึ่งที่โปรแกรมนี้ทำได้ และคิดว่าน่าจะเป็นประโยชน์สำหรับเพื่อน ๆ ก็คือ การเลือก option "All Poly 1 - 10" ใน Step 2 ครับ เพราะตัวโปรแกรมจะทำการ fit ข้อมูลด้วยสมการพหุนามตั้งแต่ ดีกรี 1 ไปจนถึง ดีกรี 10 โดยอัตโนมัติและแสดงผลการ fitting ออกมาให้ใน Workbook ที่แยกออกจาก ตัวโปรแกรมต่างหาก ซึ่งถ้าต้องการ fit ข้อมูลใหม่ เพียงกด reset worksheet ตัวโปรแกรมก็จะทำการปิด Workbook ที่สร้างมาให้ดูเป็นการชั่วคราวนี้โดยอัตโนมัติพร้อมด้วยลบ file ชั่วคราวเหล่านี้ออกจาก directory ที่ตัวโปรแกรมนี้อยู่โดยอัตโนมัติด้วยครับ (คำเตือน : ก่อน copy โปรแกรมลงใน directory ใด ๆ ขอให้แน่ใจว่าไม่มี file ใด ๆ ของคุณที่ขึ้นต้นด้วย Book*.* อยู่ใน directory นั้น เพราะโปรแกรมนี้จะทำการ ลบไฟล์ที่อยู่ใน condition นี้ออกหมดครับ)
เพื่อน ๆ สามารถดาวน์โหลดโปรแกรมได้จากหน้าแรกของ web Practical x 2
https://www.angelfire.com/falcon/practical_x_2
หรือกดลิงก์นี้เพื่อดาวน์โหลดตัวโปรแกรมโดยตรงครับ ^ ^