生产可能性曲线
ProductionPossibilitiesFrontier(
x_intercept,
y_intercept,
curvature=1.0,
x_good="Good X",
y_good="Good Y"
)
第一种商品生产 \(x\) 单位时 \(y\) 的产量。
多生产一单位 \(x\) 所放弃的 \(y\),即 \(\left| \mathrm{d} y / \mathrm{d} x \right|\)。
返回 PointStatus:曲线上为 EFFICIENT,曲线内为 INEFFICIENT,曲线外为 UNATTAINABLE。
通过截距 \(X\) 与 \(Y\) 的生产可能性曲线
\[
y = Y (1 - (x / X)^c).
\]
曲率 \(c = 1\) 为直线(机会成本固定);\(c > 1\) 时曲线向外凸出(机会成本递增)。截距与曲率必须为正且 \(c \ge 1\),否则抛出 PPFError。
from principle_viz import ProductionPossibilitiesFrontier
ppf = ProductionPossibilitiesFrontier(
10,
8,
curvature=2,
x_good="Consumer goods",
y_good="Capital goods",
)
# 5.12 0.96
print(ppf.y_at(6), ppf.opportunity_cost_x(6))
print(ppf.assess(4, 3), ppf.assess(7, 6))
# PointStatus.INEFFICIENT PointStatus.UNATTAINABLE
analyze_ppf(
frontier,
points=(),
*,
samples=101
)
ppf_canvas(
result,
*,
theme=None,
labels=None,
visibility=None
)
在曲线上采样,并评估以 (x, y, label) 三元组给定的点;principle_viz.visuals.ppf 中的 ppf_canvas() 画出曲线、为可达成的区域填色并标出各点(参见有效率、无效率与无法达成的点。)。
from principle_viz import analyze_ppf
from principle_viz.visuals.ppf import ppf_canvas
points = ((6, ppf.y_at(6), "A"), (4, 3, "B"), (7, 6, "C"))
result = analyze_ppf(ppf, points=points)
ppf_canvas(result).save("ppf_points.png")
PPFGrowthScenario(x_growth_rate=0.0, y_growth_rate=0.0)
analyze_ppf_growth(
frontier,
scenario,
*,
samples=101
)
ppf_growth_canvas(
result,
*,
theme=None,
labels=None,
visibility=None
)
经济成长使各截距乘以一加上对应的成长率;结果包含 baseline 与 shifted 两条曲线及其采样点。ppf_growth_canvas() 画出两条曲线并命名为 \(P P F_0\) 与 \(P P F_1\)(参见消费财成长 20%、资本财成长 10%。)。
比较优势
compare_linear_ppfs(
name_a,
frontier_a,
name_b,
frontier_b
)
比较两条直线型生产可能性曲线:各生产者生产 \(x\) 的机会成本,以及各商品的比较优势归属(成本相同时为 "tie")。曲线型的生产可能性曲线会抛出 PPFError。
from principle_viz import compare_linear_ppfs
# x costs 0.5 y
ann = ProductionPossibilitiesFrontier(10, 5)
# x costs 1 y
bob = ProductionPossibilitiesFrontier(6, 6)
result = compare_linear_ppfs("Ann", ann, "Bob", bob)
print(
result.comparative_advantage_x,
result.comparative_advantage_y,
)
# Ann Bob
\(x\) 的比较优势属于 Ann(0.5 对 1),\(y\) 属于 Bob(1 对 2)。