[經濟區]搞懂經濟學的基礎,必須從這裡開始 | Python供需模型

Sean Yeh
Python Everywhere -from Beginner to Advanced
14 min readDec 10, 2020

--

Seattle, United States, photo by Sean Yeh

你或許會問「為什麼要了解經濟?」實際上經濟(Economy)就存在你我之間。經濟學處理個人、社會或國家如何分配資源的問題。舉凡生活上的衣食住行,不論是要怎麼生產商品、要怎麼花錢消費,資源或財富的分配等問題,都跟經濟學有關。

我們若能透過經濟學的眼光來看世界,可以讓您更加了解市場運作的本質,並且也能夠讓您的思維更加細膩,決策更加精準。如果你是個商業人士,更可以透過這些觀念,進而擬定各種行銷與銷售策略。

下面列出幾個暸解經濟學必須知道的觀念,透過這些說明,希望可以協助大家對商務上的決策有幫助。

選擇的科學:資源有限、慾望無窮

如果有一天您檢查自己銀行的帳戶,發現剛好有一筆「閒錢」。心想到底是要把這筆錢拿去出國度假?還是要把它拿去換購新的手機?還是拿去買最新的家具?您可能為了「決定」要如使用這筆錢而大傷腦筋吧。諸如此類的問題需要我們決定如何使用資源。

說穿了,經濟學就是選擇的一種科學。選擇對某項資源應該要如何使用而下決定的科學。

話說回來,為何要選擇?因為在經濟學的世界觀裡,我們日常食衣住行所用的東西或者是所吃的食物等等,這些被稱作「資源」的東西都是有限的(除了陽光、空氣、水等例外),而人類的慾望就像是在宮崎駿動畫「神影少女」中的無臉男一樣,卻是無窮無盡、永不滿足。因此,經濟就是選擇使用有限資源的過程。因為資源有限,所以我們必須有所選擇,也必須有所放棄。

選擇的成本:機會成本(Opportunity Cost)

我們都知道ㄧ天的時間只有24小時,即使是富可敵國的大富翁也得選擇如何使用時間,因為人的壽命有限,時間是有限的資源,在這樣的限制下我們必須謹慎選擇做這件事還是做那件事?金錢有限,帳戶裡的存款就這些。所以我們必須選擇買這個還是買那個?公司的人力有限,每天上班的同事就這幾位,所以老闆必需決定做這個比較好還是做那個比較好?

在這些選擇的過程中,往往逼我們要在這些選項中間做取捨,魚與熊掌往往不可兼得,一般來說選擇做一件事情通常意味著放棄另外一件事。將帳戶裡面的那筆錢拿去出國度假,就可能無法換購新的手機也無法買最新的家具。如果拿1小時的時間去KTV唱歌,就意味著少了1小時可以讀書或者是去運動。在這一次又一次的取捨過程中,失去的多還是獲得的多?

這就是所謂的「機會成本(Opportunity Cost, OC)。當我們面對多個選項時,選中A而放棄B、C、D,其中被我們放棄的眾多選項中價值最高的,就是選擇A的機會成本。

經濟學認為我們是理性的,我們會思考,會趨吉避凶,我們對每一種可能的情況衡量它的利弊得失、成本與效益之後才下決定。

機會成本可以透過數學的模型來了解。假設果農A有一塊空地,土地上總共可以分成三個區塊,果農A想種植香蕉與芭樂,在這塊土地上該如何種植才可以獲得最大的利益?

如果A使用兩個區塊種植香蕉,那剩下一個區塊可以種植芭樂。我們可以說A種植一塊香蕉的機會成本就是一塊芭樂,反之,種植一塊芭樂的機會成本就是一塊香蕉。

香蕉與芭樂

供給與需求(Demand and Supply)

因為人類有慾望,有需要的東西,也有想要的東西。需要是基本生存的一切需求,會因時間地點而異其內容。比如說住在美國洛杉磯的人,需要(needs)汽車代步,而住在地鐵四通八達的東京人,則不需要。住在極地的人需要保暖的大衣,而住在赤道的人卻不需要。一旦這些基本的需要被滿足之後,剩下的錢就會被拿來滿足想要(wants)的慾望。鞋櫃裡的鞋子永遠少一雙;房子永遠不夠住;手機永遠不夠新。無窮無盡的慾望。

因此,為了滿足人們的無窮慾望,不論是商品、服務或者是資源,哪裡有需求,哪裡就有供給。供給和需求是形成經濟結構的核心概念。

在自由市場中,經濟會按照「供需法則」進行。也就是說一個商品的需求會隨著價格上漲而減少,隨著價格下跌而增加。

想像一下,假如有10個消費者,與10位農夫。我們在他們的面前展示一個蘋果,並要求每位消費者投票回答他們願意以多少錢(價格)來購買這一顆蘋果?例如「有誰願意以30元來買這顆蘋果?」「29元?」「28元?」以此類推,並且將投票的結果依照價格由高而低排列。

然後,我們同樣拿蘋果詢問農夫們,他們願意以多少錢的價格賣出這顆蘋果?並且也將結果依照價格由低到高排列。

如果把這兩張圖分別畫出來的話,第一張圖會呈現一條向下的斜坡;而第二張圖則會形成一條向上的斜坡。

需求曲線
供給曲線

在經濟學裡面,我們稱第一張圖形為「需求曲線」;第二張圖形為「供給曲線」。「需求曲線」的圖形表現出在某個時間點,商品的價格與消費者願意支付的數量之間的關係。

你可能會問說:「為什麼需求曲線呈現向下的斜坡而供給曲線則呈現向上的斜坡?這是因為消費者總是會想用比現在更便宜的價格購買,而供給者(農夫)則會想以比目前更高的價格出售。因此,對於消費者來說,價格越低想購買的數量就會增加,同樣的對賣方的農夫來說,價格越高就越想出貨。

你可能又會問「為什麼名稱是「曲線」而這裡卻是條直線?因為我們為了解說方便,實際上一個蘋果的市場裡面,不會只有10位消費者,如果我們擴大範圍,將更多的消費者納入考量的話100位、1000位、10萬、百萬,這時後獲得的需求線就會呈現出曲線了。

了解需求曲線對於想要學習市場的運作方式或者是經營一個成功的事業的人來說,是很重要的基礎。若能暸解它就會像是得到預知未來神力一般,因為你可以用它來預測市場消費的行為。

供需平衡(Economic equilibrium)

將一個商品的需求曲線與供給曲線堆疊在一起,如果兩條曲線在某一點上面出現交叉,就表示這裡有一個均衡的價格與相對應的數量。換句話說,這裡有該商品的市場。供需兩條線相交的那一點則被稱為「均衡點」。

供需均衡

然而在現實的商業世界中,我們幾乎可以說線性曲線不存在,因為需求在相當大的程度上取決於需求彈性(Price elasticity of demand)或消費者對價格變化的反應。況且需求與價格之間的關係並不總是恆定的,某些產品不論價格如何的高都有人要、都存在需求。舉例來說,對於我們生活至關重要的水、電,每天的用量大致上相同,不因水費、電費價格變動而大幅度的產生連帶反應。當然,你或許因為電費上漲而考慮在夏天不在家吹冷氣,而跑去國家圖書館裡面避暑。另一方面,電視、音響屬於『讓生活更美好』的非關生死存活的物品,當售價下跌時,就可能會催出更多的消費量。

消費者剩餘與生產者剩餘(consumer surplus and producer surplus)

當商品的價格一旦確定之後,原本打算用比較高的價格購買的消費者,就可以用較便宜的價格購買。在這種情況之下,消費者會覺得有賺頭的部分,在經濟學上有個專有名詞叫做「消費者剩餘」。

反之,原本打算以較低的價格賣出的供給者,可以用較高的價格賣出。這中間的差距,則被稱作「供給者剩餘」。

供需曲線會移動

供需曲線不會永遠停在同一個位置,均衡點也不會永遠在那裡交叉。供需曲線隨時隨地都可能會發生變動。其中有一些情況會導致曲線向右或相左移動。

如果單純從需求面來看,我們可以分成下面兩種結果:

需求曲線向右移動

如果想要買的人增加,需求曲線就會向右移動。換句話說,相對於同樣數量的商品,一旦想要買的人增加了。商品的價格就會上漲。

需求曲線從藍色的部分向右移動到橘色的部分

例如經濟成長大家口袋裡的錢都多到滿出來,就會願意買多一點東西、也會願意花更多錢買。又如菲律賓馬尼拉的幫傭市場,在近年大批資金雄厚的中國商人進駐後,導致本國人無法依原來的薪資請到幫傭(幫傭們都跑去服務中國商人)。

需求曲線向左移動

反之,相對於同樣數量的商品,一旦想要買的人減少了,需求曲線就會向左移動,商品的價格也就會下跌。

需求曲線從藍色的部分向左移動到橘色的部分

如果改由供給面來看,依據商品製造者的商品數量變化產生的結果,也可以分成下面兩種:

供給曲線向右移動

如果製造商增加生產,使得商品數量增加,供給曲線就會向右移動。這時候與需求曲線交叉的點則會往下移動。這代表在消費者需求不變的情況下,增加商品的供給,會導致商品價格下跌的現象。

供給曲線從橘色的部分向右移動到綠色的部分

供給曲線向左移動

反之,如果商品的產量減少,則會發生供給曲線向左移動,與需求曲線交叉的點則會往上移動。換句話說,這時候價格會上漲。

供給曲線從橘色的部分向左移動到綠色的部分

以上的狀況,在現實世界上很少發生,只會出現在經濟學家的實驗室中。實際上現實世界比我們想像的要複雜,當需求曲線變動時,供給曲線也會有變動。假設需求曲線從D1往右移動到D2,供給曲線S1往左移動到S2後,原本以P1的價格可以賣出的數量Q1,會變成以P2的價格賣出Q2的數量。換言之,一面需求增加,另一方面供給減少的雙重效果,導致了商品的價格提高。

線性的供需曲線模型

供需曲線可以用模型建構出來。下面的程式碼是參考Brad DeLong在GitHub中所發佈的使用Python語言建立的線性供需曲線模型,並且增加了圖表中文化的一些程式碼調整。如果對於程式沒有興趣的朋友,可以從這裏略過不看。

說明程式碼前,我們先暸解這個模型的前提假設與說明:

  1. 需求曲線(線性)的算式:

𝑃𝑑 = 𝑃𝑚𝑎𝑥 −𝑑∗𝑄𝑑

  • 𝑃𝑑 是消費者所支付的價額;𝑃𝑚𝑎𝑥是任何消費者的最大意願支付的金額;𝑄𝑑 是消費者在該價格下願意購買的數量。

2. 供給曲線(線性)的算式:

𝑃𝑠 = 𝑂𝑚𝑖𝑛 + 𝑠∗𝑄𝑠

  • 𝑃𝑠 是生產者所生產的價額;𝑂𝑚𝑖𝑛是任何生產者的最小付出的機會成本;𝑄𝑠 是生產者在該價格下願意生產的數量。如果𝑂𝑚𝑖𝑛大於𝑃𝑚𝑎𝑥的話,需求會不足。

接下來就簡單說明程式碼的內容:

首先匯入需要的套件,其中numpy是數學套件、matplotlib是繪圖套件,由於matplotlib套件在中文文字的支援度不高,因此我們在最後一行加上字體檔案,檔案的位置在font資料夾裡面的SimHei.ttf 檔:

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.path import Path
from matplotlib.patches import PathPatch
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r'./font/SimHei.ttf')

套件匯入完畢後,建立一個Market類別,並設定四個屬性Pmax、Omin、d、s,分別是消費者的最大意願支付的金額、生產者的最小付出的機會成本、需求曲線的斜率與供給曲線的斜率:

class Market:
def __init__(self, Pmax, Omin, d, s):
self.Pmax = Pmax
self.Omin = Omin
self.d = d
self.s =s

需求曲線的函式為Q=Pmax - d*x(假設Q為需求量,x為市場價格):

def demand_curve(self,x):
"需求曲線"
return self.Pmax - self.d*x

供給曲線的函式為Q=Omin + d*x(假設Q為供給量,x為市場價格):

def supply_curve(self,x):
"供給曲線"
return self.Omin + self.s*x

均衡點上面的量的函式:

def equilibrium_quantity(self):
"均衡點上的數量"
return ( self.Pmax - self.Omin ) / (self.d + self.s)

均衡點上面的價格的函式:

def equilibrium_price(self):
"均衡點上的價格"
return self.Pmax - self.d * self.equilibrium_quantity()

介紹完函式後,我們就可以開始計算均衡點:

m = Market(10,0,1,1)q_max = m.equilibrium_quantity() * 2
q_grid = np.linspace(0, q_max,100)
pd = m.demand_curve(q_grid)
ps = m.supply_curve(q_grid)

並且可以將結果繪製成供需曲線:

fig, ax = plt.subplots(figsize=(12,6))ax.plot(q_grid, pd, lw = 2, alpha=0.7, label='demand')
ax.plot(q_grid, ps, lw = 2, alpha=0.7, label='supply')

求均衡點:

eq_x = m.equilibrium_quantity()
eq_y = m.equilibrium_price()
ax.axhline (eq_x,0,0.5, linewidth = 2, color = 'black', linestyle = 'dashed')
ax.axvline (eq_y,0,0.5, linewidth = 2, color = 'black', linestyle = 'dashed')

並且在圖上面加上消費者剩餘與生產者剩餘的區塊:

path1 = Path([[0,eq_x],[0,10],[eq_y,eq_x],[0,eq_x]])
patch1 = PathPatch(path1, facecolor='#FF5733')
ax.add_patch(patch1)
path2 = Path([[0,0],[0,eq_x],[eq_y,eq_x],[0,0]])
patch2 = PathPatch(path2, facecolor='#DBFF33')
ax.add_patch(patch2)

在圖上面增加說明文字的設定後使用 show() 繪出圖片:

ax.text(eq_y, eq_x, '均衡點',fontsize=12, fontproperties=font)
ax.text(0.5, 7, '消費者剩餘',fontsize=12, fontproperties=font)
ax.text(0.5, 3, '生產者剩餘',fontsize=12, fontproperties=font)
ax.set_xlabel('數量Q', fontsize=14, fontproperties=font)
ax.set_xlim(0, q_max)
ax.set_ylabel('價格P', fontsize=14, fontproperties=font)
ax.legend(loc='lower right', frameon=False, fontsize=14)
fig.suptitle('市場供給、需求與均衡', fontsize=20, fontproperties=font)
plt.show()

繪出的結果如上面的供需曲線圖。

參考資料:Brad DeLong

--

--

Sean Yeh
Python Everywhere -from Beginner to Advanced

# Taipei, Internet Digital Advertising,透過寫作讓我們回想過去、理解現在並思考未來。並樂於分享,這才是最大贏家。