11 การใช้งาน Quarto และการตั้งค่าระบบประมวลผล
Python for Economics, Computational Economics, Applied Econometrics, Python สำหรับเศรษฐศาสตร์, เศรษฐศาสตร์คำนวณ, เศรษฐมิติเชิงประยุกต์
Quarto คือระบบเผยแพร่ผลงานทางวิทยาศาสตร์ที่ช่วยให้เราสามารถผนวก เนื้อหา (Narrative) และ โค้ด (Code) เข้าไว้ด้วยกัน เพื่อสร้างงานวิจัยที่ทำซ้ำได้ (Reproducible Research)
11.1 โครงสร้างพื้นฐานของไฟล์ Quarto (.qmd)
ไฟล์ Quarto ประกอบด้วย 3 ส่วนหลัก:
YAML Metadata: อยู่ส่วนบนสุด ใช้ควบคุมการแสดงผล (เช่น format, title, author)
Narrative: เนื้อหาบรรยายที่ใช้รูปแบบ Markdown
Code Chunks: พื้นที่สำหรับเขียนโค้ด Python เพื่อประมวลผลข้อมูล
11.2 ความรู้พื้นฐานเกี่ยวกับ YAML (YAML Essentials)
YAML (YAML Ain’t Markup Language) คือส่วนที่อยู่บนสุดของไฟล์ Quarto (.qmd) ทำหน้าที่เป็น “ศูนย์บัญชาการ” เพื่อกำหนดค่าพารามิเตอร์ของเอกสาร โดยผลลัพธ์ที่หนังสือเล่มนี้ให้ความสำคัญคือ HTML สำหรับการนำเสนอผ่านเวบไซต์หรืออินเทอร์เน๊ต และ DOCX สำหรับการจัดทำรายงานที่สามารถแก้ไขเพิ่มเติมได้ภายหลัง
11.2.1 โครงสร้างและกฎเหล็กของ YAML
เพื่อให้ระบบ Render ผลงานออกมาเป็น HTML หรือ Word ได้อย่างถูกต้อง นักศึกษาต้องปฏิบัติตามกฎ 3 ข้อ:
ล้อมรอบด้วยขีด 3 ขีด (
---): ข้อมูล YAML ต้องอยู่ระหว่าง---บนและล่างเสมอKey: Value: ต้องมีช่องว่างหลังเครื่องหมาย
:เสมอ เช่นtitle: "รายงานเศรษฐกิจ"(ห้ามเขียนติดกัน)การย่อหน้า (Indentation): ใช้เพื่อจัดกลุ่มข้อมูลย่อย ห้ามใช้ปุ่ม Tab ให้ใช้การเคาะ Space bar 2 ครั้งแทน
11.2.2 การตั้งค่า YAML สำหรับ HTML และ DOCX
นี่คือรูปแบบมาตรฐานที่แนะนำสำหรับนักศึกษา เพื่อให้ได้รายงานที่สวยงามโดยไม่ต้องติดตั้งโปรแกรมเสริม:
---
title: "การวิเคราะห์ผลกระทบทางเศรษฐกิจดิจิทัล"
author: "ชื่อ-นามสกุล นักศึกษา"
date: last-modified
format:
html:
toc: true # แสดงสารบัญ (Table of Contents) ด้านข้าง
toc-title: "เนื้อหาในบทนี้"
code-fold: true # ซ่อนโค้ดไว้ ให้ผู้อ่านคลิกดูได้ (เฉพาะ HTML)
theme: flatly # เลือกโทนสีรายงานให้ดูเป็นมืออาชีพ
docx:
toc: true # แสดงสารบัญใน Word
number-sections: true # รันเลขหัวข้อ 1, 1.1, 1.2 ให้อัตโนมัติ
---11.2.3 การจัดการภาษาไทยและระบบอ้างอิง
เพื่อให้คำบรรยายใต้รูปและตารางใน Word และ HTML แสดงผลเป็นภาษาไทย (“รูปที่”, “ตารางที่”) นักศึกษาควรเพิ่มส่วนนี้ใน YAML:
lang: th
crossref:
fig-title: "รูปที่"
tbl-title: "ตารางที่"
fig-prefix: "รูปที่"
tbl-prefix: "ตารางที่"11.2.4 การควบคุมการประมวลผล
เพื่อจัดการให้โค้ดในรายงานดูสะอาดตา ไม่แสดงข้อความ Error หรือคำเตือนที่รกหน้ากระดาษ:
execute:
echo: true # แสดงโค้ดประกอบคำอธิบาย
warning: false # ซ่อนคำเตือนจาก Library ต่างๆ
message: false # ซ่อนข้อความการโหลดข้อมูล11.3 การเขียนเนื้อหาด้วย Markdown
Markdown คือภาษาที่ใช้เขียนเนื้อหาบรรยายในไฟล์ Quarto (.qmd) ซึ่งถูกออกแบบมาให้ “เขียนง่าย” และ “อ่านรู้เรื่อง” แม้จะยังไม่ได้ Render เป็นรายงานจริง โดยมีรูปแบบการจัดหน้ากระดาษที่สำคัญดังนี้:
11.3.1 การจัดรูปแบบตัวอักษร
ตัวหนา (Bold): ใช้
**ข้อความ**สำหรับเน้นประเด็นสำคัญหรือชื่อตัวแปรทางเศรษฐศาสตร์ เช่น GDP, Inflation Rateตัวเอียง (Italic): ใช้
*ข้อความ*สำหรับคำศัพท์เฉพาะทางหรือชื่อภาษาต่างประเทศ เช่น Ceteris Paribusหัวข้อ (Headings): ใช้เครื่องหมาย
#นามหน้า (ยิ่ง#มาก หัวข้อยิ่งเล็ก)# หัวข้อหลัก (บทที่)## หัวข้อรอง (หัวข้อใหญ่)### หัวข้อย่อย
11.3.2 การเขียนสมการคณิตศาสตร์
Quarto รองรับรูปแบบ \(\LaTeX\) ซึ่งเป็นมาตรฐานสากลในการเขียนสมการทางเศรษฐศาสตร์:
สมการในบรรทัด (Inline): ใช้
$สมการ$เช่น อัตราการเติบโตคำนวณจาก \(g = \frac{\Delta Y}{Y}\) คำสั่งที่ใช้คือ $g =\frac{\Delta Y}{Y}$สมการแบบแยกบรรทัด (Display): ใช้
$$สมการ$$เพื่อวางสมการไว้ตรงกลางหน้ากระดาษ \[Y = C + I + G + (X - M)\]
คำสั่งที่ใช้คือ $$Y = C + I + G + (X - M)$$
สามารถใช้ตัวช่วยเขียนสมการจาก https://latexeditor.lagrida.com/
11.3.3 การใส่รูปภาพ
ในกรณีที่มีรูปภาพประกอบข้างนอก (เช่น ผังองค์กรหรือรูปถ่าย) สามารถใส่ได้ดังนี้:
{#fig-label width=80% }- เคล็ดลับ: การใส่
{#fig-label}จะช่วยให้เราอ้างอิงถึงรูปนี้ได้ด้วยคำสั่ง@fig-labelในเนื้อหา
11.3.4 การสร้างตาราง
ตารางใน Markdown สร้างได้ง่ายๆ ด้วยการใช้เครื่องหมายขีดเส้นแบ่ง:
| ตัวแปร | ความหมาย | หน่วยนับ |
| :--- | :--- | :---: |
| $P$ | ราคาสินค้า | บาท |
| $Q$ | ปริมาณเสนอซื้อ | หน่วย |
| $I$ | รายได้เฉลี่ย | บาท/เดือน |
: รายละเอียดตัวแปรในแบบจำลองอุปสงค์ {#tbl-variables}- จุดสังเกต: การใช้
: ... {#tbl-xxx}ท้ายตาราง จะทำให้ตารางนี้มีเลขลำดับและอ้างอิงได้อัตโนมัติ
11.3.5 การสร้างรายการ
รายการแบบไม่มีลำดับ: ใช้เครื่องหมาย * หรือ -
ปัจจัยที่มีผลต่ออุปสงค์:
* ราคาสินค้า
* รสนิยมผู้บริโภค
รายการแบบมีลำดับ: ใช้ตัวเลขตามด้วยจุด 1. 2. 3. เช่น
ปัจจัยที่มีผลต่ออุปสงค์:
1. ราคาสินค้า
2. รสนิยมผู้บริโภค
สำหรับการเพิ่ม Sublist (รายการย่อย) ด้วย Markdown เพื่อจัดระเบียบเนื้อหาสามารถเขียนโดยการ “เคาะ Space bar 4 ครั้ง” (หรือกด Tab 1 ครั้ง) หน้าเครื่องหมายรายการย่อย ดังนี้
แบบที่ 1: รายการแบบมีลำดับ (ใช้ตัวเลข)
1. ราคาสินค้า
1.1 ราคาสินค้าชนิดนั้น (ราคาเพิ่ม อุปสงค์ลด)
1.2 ราคาสินค้าที่เกี่ยวข้อง (สินค้าทดแทนกัน หรือ สินค้าที่ใช้ร่วมกัน)
2. รสนิยมผู้บริโภค
2.1 การเปลี่ยนแปลงตามฤดูกาล
2.2 กระแสนิยมและการโฆษณาแบบที่ 2: รายการแบบผสม (เลขหลัก + ขีดก่อย่อย) วิธีนี้ทำให้นักศึกษาแยกแยะหัวข้อหลักและรายละเอียดได้ชัดเจนขึ้น:
1. ราคาสินค้า
- **สินค้าทดแทน (Substitute Goods):** เช่น หากราคาเนยสูงขึ้น อุปสงค์ของมาการีนอาจเพิ่มขึ้น
- **สินค้าที่ใช้ร่วมกัน (Complementary Goods):** เช่น หากราคาน้ำมันสูงขึ้น อุปสงค์ของรถยนต์ขนาดใหญ่อาจลดลง
2. รสนิยมผู้บริโภค
- **แนวโน้มตามกาลเวลา:** เช่น รสนิยมการใช้รถยนต์ไฟฟ้า (EV) แทนรถยนต์สันดาป
- **การรับรู้ข้อมูลข่าวสาร:** ผลกระทบจากการรีวิวในโซเชียลมีเดีย11.4 การตั้งค่า Code Chunk เบื้องต้น
ใน Quarto เราใช้เครื่องหมาย
```{python}
เพื่อเริ่มเขียนโค้ด และปิดด้วย
```11.4.1 Chunk Options ที่จำเป็นสำหรับการทำเอกสารต่างๆ
เราสามารถควบคุมพฤติกรรมของโค้ดผ่าน Chunk Options (ใช้เครื่องหมาย #|) ดังนี้:
#| echo: true: แสดงโค้ด (เหมาะสำหรับบทเรียน)#| output: true: แสดงผลลัพธ์ (ตัวเลข/ตาราง/กราฟ)#| warning: false: สำคัญมาก ใช้ซ่อนคำเตือน เช่นFutureWarningเพื่อให้หนังสือดูสะอาด#| label: fig-xxx: กำหนดชื่ออ้างอิง (ต้องขึ้นต้นด้วยfig-เพื่อให้ระบบเรียก “รูปที่”)#| fig-cap: "...": คำบรรยายใต้ภาพ
| สถานการณ์ | echo | output | warning | eval |
|---|---|---|---|---|
| บทเรียนสอนเขียนโค้ด | true |
true |
false |
true |
| แสดงเฉพาะกราฟประกอบ | false |
true |
false |
true |
| ตัวอย่างโค้ด (ไม่รัน) | true |
false |
false |
false |
| การประมวลผลเบื้องหลัง | false |
false |
false |
true |
```{python}
#| label: fig-gdp-growth
#| fig-cap: "แนวโน้มการเติบโตของ GDP ในยุคเศรษฐกิจดิจิทัล"
#| echo: false
#| warning: false
import pandas as pd
import matplotlib.pyplot as plt
# โค้ดวิเคราะห์ข้อมูลตรงนี้
data = {'Year': [2023, 2024, 2025, 2026], 'GDP': [2.5, 2.8, 3.1, 3.5]}
df = pd.DataFrame(data)
plt.plot(df['Year'], df['GDP'])
plt.show()
```11.5 แหล่งทรัพยากรสำหรับการศึกษาต่อ
เพื่อให้นักศึกษาสามารถหาข้อมูลเพิ่มเติมได้:
Quarto Official Guide: https://quarto.org/docs/guide/
Python in Quarto: https://quarto.org/docs/computations/python.html
Markdown Basics: https://quarto.org/docs/authoring/markdown-basics.html
Code Chunk Options Reference: https://quarto.org/docs/reference/cells/cells-jupyter.html
