玩转Python与经济学:轻松探索无差异曲线与效用函数的可视化世界
Python+经济学:无差异曲线与效用函数可视化
前言:
利用Python中的3D绘图模块,将微观经济学中的效用函数进行可视化呈现。这里主要针对三种最普通的效用函数:
无差异曲线凸向原点的一般效用函数: [公式]
无差异曲线为向右下方倾斜直线的完全替代品效用函数: [公式]
无差异曲线为直角折线的完全互补品效用函数: [公式]
同一条无差异曲线上的点所代表的产品组合拥有相同的效用水平,这与地理中等高线的概念如出一辙,因此可以运用contour来模拟无差异曲线的绘制。
代码实现:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure(1)
#定义新的三维坐标轴,用以绘制效用曲面
ax1 = plt.axes(projection='3d')
#定义三维数据与效用函数参数
n =100
a = 3
b = 2
x = np.linspace(0,30,n)
y = np.linspace(0,30,n)
X, Y = np.meshgrid(x,y)
#一般效用曲面
Z = np.sqrt(X*Y)
#完全替代品效用曲面
# Z = a*X+b*Y
#完全互补品效用曲面
# Z = np.minimum(a*X,b*Y)
#曲面图
Utility = ax1.plot_surface(X,Y,Z,cmap='coolwarm',alpha=0.8)
#叠加等高(无差异)线
ax1.contour(X,Y,Z,zdir='z',offset=0,cmap='rainbow')
#设置坐标轴标签
ax1.set_xlabel('Good X')
ax1.set_ylabel('Good Y')
ax1.set_zlabel('Utility')
#图例色条
fig.colorbar(Utility, shrink=0.5, aspect=20)
# plt.savefig('Utility Surface.png')
#第二个图单独绘制等高(无差异)线
fig = plt.figure(2)
ax2 = plt.subplot(111)
Indiff = ax2.contour(X,Y,Z,cmap='rainbow')
ax2.set_xlabel('Good X')
ax2.set_ylabel('Good Y')
#显示等高线(效用)值
plt.clabel(Indiff,inline=True,fontsize=12)
# plt.savefig('Indifference Curve.png')
plt.show()
可视化效果:
上一篇: 微视角解析 | 第五期:抉择之道
下一篇: 微观察 | 第三期:喜好倾向分析