SiamCafe.net Blog
Technology

unemployment rate formula

unemployment rate formula
unemployment rate formula | SiamCafe Blog
2026-04-07· อ. บอม — SiamCafe.net· 1,639 คำ

Unemployment Rate Formula — สูตรคำนวณอัตราการว่างงาน 2026

อัตราการว่างงาน (Unemployment Rate) เป็นตัวชี้วัดทางเศรษฐกิจที่สำคัญที่สุดตัวหนึ่ง แสดงสัดส่วนของกำลังแรงงานที่ไม่มีงานทำแต่กำลังหางานอยู่ ใช้วัดสุขภาพของเศรษฐกิจ — อัตราว่างงานต่ำ = เศรษฐกิจดี อัตราว่างงานสูง = เศรษฐกิจมีปัญหา ธนาคารกลางและรัฐบาลใช้ตัวเลขนี้ในการกำหนดนโยบายการเงินและการคลัง บทความนี้อธิบายสูตรคำนวณ ประเภทของการว่างงาน และ Python tools สำหรับวิเคราะห์

สูตรคำนวณอัตราการว่างงาน

# formula.py — Unemployment rate formula
import json

class UnemploymentFormula:
    FORMULAS = {
        "basic": {
            "name": "สูตรพื้นฐาน",
            "formula": "Unemployment Rate = (Number of Unemployed / Labor Force) × 100",
            "components": {
                "unemployed": "จำนวนผู้ว่างงาน — คนที่ไม่มีงานทำ แต่กำลังหางานอยู่",
                "labor_force": "กำลังแรงงาน = ผู้มีงานทำ + ผู้ว่างงาน (ไม่รวมคนที่ไม่หางาน)",
            },
        },
        "labor_force": {
            "name": "สูตรกำลังแรงงาน",
            "formula": "Labor Force = Employed + Unemployed",
            "note": "ไม่รวม: นักเรียน/นักศึกษา, แม่บ้าน, ผู้เกษียณ, ผู้พิการที่ทำงานไม่ได้, discouraged workers",
        },
        "lfpr": {
            "name": "อัตราการมีส่วนร่วมของกำลังแรงงาน",
            "formula": "LFPR = (Labor Force / Working Age Population) × 100",
            "note": "Working Age Population = ประชากรอายุ 15-64 ปี (หรือ 15+ ในบางประเทศ)",
        },
        "employment_rate": {
            "name": "อัตราการจ้างงาน",
            "formula": "Employment Rate = (Employed / Working Age Population) × 100",
            "note": "ใช้ดูว่าประชากรวัยทำงานมีงานทำกี่เปอร์เซ็นต์",
        },
    }

    EXAMPLE = {
        "country": "ประเทศ A",
        "working_age_pop": 50000000,
        "labor_force": 38000000,
        "employed": 36000000,
        "unemployed": 2000000,
        "not_in_labor_force": 12000000,
        "unemployment_rate": "2,000,000 / 38,000,000 × 100 = 5.26%",
        "lfpr": "38,000,000 / 50,000,000 × 100 = 76%",
        "employment_rate": "36,000,000 / 50,000,000 × 100 = 72%",
    }

    def show_formulas(self):
        print("=== Unemployment Rate Formulas ===\n")
        for key, f in self.FORMULAS.items():
            print(f"[{f['name']}]")
            print(f"  {f['formula']}")
            print()

    def show_example(self):
        print("=== Calculation Example ===")
        for key, val in self.EXAMPLE.items():
            print(f"  [{key}] {val}")

formulas = UnemploymentFormula()
formulas.show_formulas()
formulas.show_example()

ประเภทของการว่างงาน

# types.py — Types of unemployment
import json

class UnemploymentTypes:
    TYPES = {
        "frictional": {
            "name": "Frictional Unemployment (ว่างงานชั่วคราว)",
            "description": "คนที่กำลังเปลี่ยนงาน หรือเพิ่งเข้าสู่ตลาดแรงงาน — ระยะสั้น",
            "example": "จบมหาวิทยาลัยกำลังหางาน, ลาออกจากงานเก่ารอเริ่มงานใหม่",
            "duration": "สั้น (1-3 เดือน)",
            "solution": "ข้อมูลตลาดแรงงานที่ดีขึ้น, job matching platforms",
        },
        "structural": {
            "name": "Structural Unemployment (ว่างงานเชิงโครงสร้าง)",
            "description": "ทักษะแรงงานไม่ตรงกับความต้องการตลาด — technology change, industry shift",
            "example": "คนงานโรงงานถูกแทนที่ด้วย automation, coal miners เมื่อเปลี่ยนเป็น renewable energy",
            "duration": "ยาว (6 เดือน - หลายปี)",
            "solution": "Reskilling/upskilling programs, education reform",
        },
        "cyclical": {
            "name": "Cyclical Unemployment (ว่างงานตามวัฏจักรเศรษฐกิจ)",
            "description": "เกิดจากเศรษฐกิจถดถอย (recession) — demand ลด → บริษัทเลิกจ้าง",
            "example": "วิกฤต COVID-19, วิกฤตการเงิน 2008",
            "duration": "กลาง-ยาว (ขึ้นกับ recovery)",
            "solution": "นโยบายกระตุ้นเศรษฐกิจ (fiscal/monetary policy)",
        },
        "seasonal": {
            "name": "Seasonal Unemployment (ว่างงานตามฤดูกาล)",
            "description": "งานที่มีเฉพาะบางช่วง — เกษตร, ท่องเที่ยว, construction",
            "example": "คนเก็บผลไม้ตามฤดู, พนักงานรีสอร์ทช่วง low season",
            "duration": "สั้น-กลาง (ตามฤดู)",
            "solution": "Diversified economy, seasonal adjustment in statistics",
        },
    }

    NATURAL_RATE = {
        "definition": "Natural Rate of Unemployment = Frictional + Structural unemployment",
        "value": "ปกติ 4-6% ในประเทศพัฒนาแล้ว",
        "meaning": "ว่างงาน 0% เป็นไปไม่ได้ — มีคนเปลี่ยนงานเสมอ",
        "full_employment": "Full Employment = อัตราว่างงานเท่ากับ natural rate (ไม่มี cyclical)",
    }

    def show_types(self):
        print("=== Types of Unemployment ===\n")
        for key, t in self.TYPES.items():
            print(f"[{t['name']}]")
            print(f"  {t['description']}")
            print(f"  Duration: {t['duration']}")
            print()

    def show_natural(self):
        print("=== Natural Rate ===")
        for key, val in self.NATURAL_RATE.items():
            print(f"  [{key}] {val}")

types = UnemploymentTypes()
types.show_types()
types.show_natural()

Python Unemployment Calculator

# calculator.py — Python unemployment rate calculator
import json

class UnemploymentCalculator:
    CODE = """
# unemployment_calc.py — Calculate and analyze unemployment rates
import json
from dataclasses import dataclass
from typing import List, Dict, Optional

@dataclass
class LaborData:
    year: int
    quarter: Optional[int] = None
    working_age_pop: int = 0
    labor_force: int = 0
    employed: int = 0
    unemployed: int = 0

class UnemploymentCalculator:
    def __init__(self):
        self.data = []
    
    def add_data(self, data: LaborData):
        # Validate
        if data.labor_force == 0:
            data.labor_force = data.employed + data.unemployed
        if data.unemployed == 0 and data.labor_force > 0:
            data.unemployed = data.labor_force - data.employed
        
        self.data.append(data)
    
    def unemployment_rate(self, data: LaborData):
        '''Calculate unemployment rate'''
        if data.labor_force == 0:
            return 0
        return round(data.unemployed / data.labor_force * 100, 2)
    
    def lfpr(self, data: LaborData):
        '''Labor Force Participation Rate'''
        if data.working_age_pop == 0:
            return 0
        return round(data.labor_force / data.working_age_pop * 100, 2)
    
    def employment_rate(self, data: LaborData):
        '''Employment-to-population ratio'''
        if data.working_age_pop == 0:
            return 0
        return round(data.employed / data.working_age_pop * 100, 2)
    
    def calculate_all(self, data: LaborData):
        '''Calculate all labor metrics'''
        not_in_lf = data.working_age_pop - data.labor_force
        
        return {
            'year': data.year,
            'quarter': data.quarter,
            'unemployment_rate': self.unemployment_rate(data),
            'lfpr': self.lfpr(data),
            'employment_rate': self.employment_rate(data),
            'not_in_labor_force': not_in_lf,
            'not_in_lf_pct': round(not_in_lf / max(data.working_age_pop, 1) * 100, 2),
        }
    
    def trend_analysis(self):
        '''Analyze unemployment trend'''
        if len(self.data) < 2:
            return {}
        
        rates = [self.unemployment_rate(d) for d in self.data]
        years = [d.year for d in self.data]
        
        # Direction
        recent = rates[-1]
        previous = rates[-2]
        direction = 'increasing' if recent > previous else 'decreasing' if recent < previous else 'stable'
        
        # Average
        avg_rate = round(sum(rates) / len(rates), 2)
        
        return {
            'current_rate': recent,
            'previous_rate': previous,
            'change': round(recent - previous, 2),
            'direction': direction,
            'average_rate': avg_rate,
            'min_rate': min(rates),
            'max_rate': max(rates),
            'period': f'{years[0]}-{years[-1]}',
        }
    
    def okun_law(self, gdp_growth_rate, natural_unemployment=5.0):
        '''Estimate unemployment change using Okun's Law'''
        # Okun's Law: 1% GDP above trend = 0.5% unemployment decrease
        unemployment_change = -(gdp_growth_rate - 3.0) * 0.5
        estimated_rate = natural_unemployment + unemployment_change
        
        return {
            'gdp_growth': gdp_growth_rate,
            'estimated_unemployment_change': round(unemployment_change, 2),
            'estimated_unemployment_rate': round(max(estimated_rate, 0), 2),
            'note': "Okun's Law approximation (coefficient varies by country)",
        }
    
    def phillips_curve(self, unemployment_rate, expected_inflation=2.0):
        '''Estimate inflation using Phillips Curve'''
        # Simplified: higher unemployment = lower inflation
        natural_rate = 5.0
        gap = natural_rate - unemployment_rate
        inflation = expected_inflation + gap * 0.5
        
        return {
            'unemployment_rate': unemployment_rate,
            'estimated_inflation': round(max(inflation, 0), 2),
            'unemployment_gap': round(gap, 2),
            'note': "Phillips Curve approximation — short-run relationship",
        }

# calc = UnemploymentCalculator()
# data = LaborData(year=2024, working_age_pop=50_000_000,
#                   labor_force=38_000_000, employed=36_100_000, unemployed=1_900_000)
# calc.add_data(data)
# result = calc.calculate_all(data)
# print(json.dumps(result, indent=2))
"""

    def show_code(self):
        print("=== Unemployment Calculator ===")
        print(self.CODE[:600])

calc = UnemploymentCalculator()
calc.show_code()

อัตราว่างงานทั่วโลก

# global.py — Global unemployment rates
import json

class GlobalUnemployment:
    RATES_2024 = {
        "japan": {"country": "ญี่ปุ่น", "rate": 2.5, "note": "ต่ำสุดในโลก — aging population"},
        "thailand": {"country": "ไทย", "rate": 1.1, "note": "ต่ำมาก — แต่ underemployment สูง"},
        "us": {"country": "สหรัฐอเมริกา", "rate": 4.0, "note": "ใกล้ full employment"},
        "eu": {"country": "สหภาพยุโรป", "rate": 6.0, "note": "หลากหลาย — Spain สูง, Germany ต่ำ"},
        "india": {"country": "อินเดีย", "rate": 7.5, "note": "youth unemployment สูง 20%+"},
        "south_africa": {"country": "แอฟริกาใต้", "rate": 32.0, "note": "สูงที่สุดในโลก"},
        "spain": {"country": "สเปน", "rate": 11.5, "note": "สูงในยุโรป — youth 28%+"},
    }

    THAILAND = {
        "official_rate": "~1.0-1.5% (ต่ำมาก)",
        "reality": "ตัวเลขอาจไม่สะท้อนความเป็นจริง — criteria กว้าง",
        "underemployment": "คนทำงานไม่เต็มเวลา/ไม่ตรงสาขา สูงกว่า official unemployment",
        "informal_sector": "แรงงานนอกระบบ 55%+ — ไม่ถูกนับในสถิติ",
        "source": "สำนักงานสถิติแห่งชาติ (NSO) — สำรวจทุกเดือน",
    }

    def show_global(self):
        print("=== Global Unemployment Rates (2024) ===\n")
        sorted_rates = sorted(self.RATES_2024.values(), key=lambda x: x['rate'])
        for r in sorted_rates:
            print(f"  [{r['country']}] {r['rate']}% — {r['note']}")

    def show_thailand(self):
        print(f"\n=== Thailand Detail ===")
        for key, val in self.THAILAND.items():
            print(f"  [{key}] {val}")

globe = GlobalUnemployment()
globe.show_global()
globe.show_thailand()

ความสัมพันธ์กับตัวชี้วัดอื่น

# relationships.py — Relationship with other indicators
import json

class EconomicRelationships:
    RELATIONSHIPS = {
        "gdp": {
            "name": "GDP Growth",
            "relationship": "Inverse — GDP โต → ว่างงานลด (Okun's Law)",
            "okun": "GDP เพิ่ม 1% เหนือ trend → ว่างงานลด ~0.5%",
        },
        "inflation": {
            "name": "Inflation",
            "relationship": "Inverse (short-run) — ว่างงานต่ำ → เงินเฟ้อสูง (Phillips Curve)",
            "note": "Long-run: ไม่มี trade-off — natural rate ไม่เปลี่ยนตาม inflation",
        },
        "interest_rate": {
            "name": "Interest Rate",
            "relationship": "ดอกเบี้ยสูง → ชะลอเศรษฐกิจ → ว่างงานเพิ่ม",
            "policy": "ธนาคารกลางลดดอกเบี้ยเมื่อว่างงานสูง → กระตุ้นเศรษฐกิจ",
        },
        "stock_market": {
            "name": "Stock Market",
            "relationship": "ว่างงานต่ำ → consumer spending สูง → corporate earnings ดี → หุ้นขึ้น",
            "lag": "ตลาดหุ้นมักนำหน้า unemployment data 6-12 เดือน",
        },
        "consumer_confidence": {
            "name": "Consumer Confidence",
            "relationship": "ว่างงานสูง → ความเชื่อมั่นผู้บริโภคลด → spending ลด → recession",
        },
    }

    def show_relationships(self):
        print("=== Economic Relationships ===\n")
        for key, r in self.RELATIONSHIPS.items():
            print(f"[{r['name']}]")
            print(f"  {r['relationship']}")
            print()

rel = EconomicRelationships()
rel.show_relationships()

FAQ - คำถามที่พบบ่อย

Q: อัตราว่างงานของไทยต่ำมาก จริงไหม?

A: ตัวเลข official ต่ำจริง (~1-1.5%) แต่มีข้อจำกัด: criteria กว้าง — ทำงาน 1 ชั่วโมง/สัปดาห์ก็นับว่ามีงาน แรงงานนอกระบบ 55%+ — ไม่ได้อยู่ในสถิติครบ Underemployment สูง — คนทำงานไม่เต็มเวลา/ไม่ตรงสาขา ดูที่ดีกว่า: อัตราว่างงาน + underemployment rate + LFPR รวมกัน

Q: Full Employment หมายความว่าว่างงาน 0% ไหม?

A: ไม่ — Full Employment = อัตราว่างงานเท่ากับ Natural Rate (4-6%) เพราะ: มี frictional unemployment เสมอ (คนเปลี่ยนงาน) มี structural unemployment เสมอ (ทักษะไม่ตรง) ว่างงาน 0% เป็นไปไม่ได้ — จะเกิดเงินเฟ้อรุนแรงก่อน (NAIRU concept)

Q: U-3 กับ U-6 ต่างกันอย่างไร?

A: U-3: อัตราว่างงาน official — ผู้ว่างงานที่กำลังหางาน U-6: อัตราว่างงานที่กว้างกว่า — รวม underemployed + marginally attached + discouraged workers U-6 สูงกว่า U-3 เสมอ (ปกติ U-6 = U-3 × 1.5-2) U-6 สะท้อนความเป็นจริงมากกว่า — ดูว่า labor market ตึงตัวแค่ไหน

Q: อัตราว่างงานส่งผลต่อการลงทุนอย่างไร?

A: ว่างงานต่ำ → เศรษฐกิจดี → หุ้นมักขึ้น แต่: ว่างงานต่ำเกินไป → เงินเฟ้อ → ธนาคารกลางขึ้นดอกเบี้ย → หุ้นอาจลง ว่างงานสูงขึ้น → ธนาคารกลางอาจลดดอกเบี้ย → พันธบัตรราคาขึ้น Nonfarm Payrolls (US): ตัวเลขที่ตลาดจับตาดูมากที่สุดทุกเดือน สำหรับเทรดเดอร์: ดู NFP report ทุกวันศุกร์แรกของเดือน (US)

📖 บทความที่เกี่ยวข้อง

unemployment rate thailand world bankอ่านบทความ → unemployment rate laosอ่านบทความ → unemployment rate australiaอ่านบทความ → unemployment rate indiaอ่านบทความ →

📚 ดูบทความทั้งหมด →