Python实现Cobb-Douglas生产函数回归及三维可视化

本代码使用Python中的statsmodels库对Cobb-Douglas生产函数进行回归分析,并使用matplotlib库绘制三维可视化图形,展示lny与lnk和lnl之间的关系。

from cProfile import label
import statsmodels.api as sm
import statsmodels.formula.api as smf
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from mpl_toolkits import mplot3d

# 以上导入绘图matplotlib,数据处理numpy,pandas,拟合statsmodels各个模块
data = pd.read_csv('cobb_douglas.csv')# 下载数据
model = smf.ols('lny ~ lnk + lnl', data=data)# 以lny为响应变量,lnk与lnl为特征变量进行二元回归
results = model.fit()
print(results.params)  # 输出回归结果

# 以下为绘图
xx = np.linspace(data.lnk.min(), data.lnk.max(), 100)
yy = np.linspace(data.lnl.min(), data.lnl.max(), 100)
XX, YY = np.meshgrid(xx, yy)
ZZ = results.params[0] + XX * results.params[1] + YY * results.params[2]
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.plot_surface(XX, YY, ZZ, rstride=8, cstride=8, alpha=0.4, cmap='pink_r', label='lny = 0.233054*lnk + 0.807278*lnl - 0.177310')
ax.scatter(data.lnk, data.lnl, data.lny, c='slateblue')
ax.set_xlabel('lnk')
ax.set_ylabel('lnl')
ax.set_zlabel('lny')
ax.set_title('图1.1 lny对于lnk与lnl的回归', fontdict=None, loc='center', pad=None)
plt.show()

# ax.set_title的输出的中文为白框,如何解决

# 要在matplotlib中显示中文,需要进行以下设置:

# 1. 安装字体文件:将所需的字体文件(例如SimHei.ttf)下载到本地,并将其路径保存。
# 2. 导入font_manager模块:`import matplotlib.font_manager as fm`
# 3. 设置字体路径:`font_path = "字体文件路径"`
# 4. 加载字体:`font_prop = fm.FontProperties(fname=font_path)`
# 5. 在需要显示中文的地方使用fontproperties参数:`ax.set_title("图1.1 lny对于lnk与lnl的回归", fontproperties=font_prop)`

# 注意事项:
# - 需要确保字体文件的格式正确,并且在matplotlib支持的范围内。
# - 在某些情况下,还需要在代码文件的开头添加`# -*- coding: utf-8 -*-`来指定编码格式。

# 示例代码如下:

```python
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

# 设置字体路径
font_path = "字体文件路径"

# 加载字体
font_prop = fm.FontProperties(fname=font_path)

# 绘图代码
fig, ax = plt.subplots()
ax.set_title('图1.1 lny对于lnk与lnl的回归', fontproperties=font_prop)
plt.show()

请根据你的具体情况替换字体文件路径,并确保字体文件存在和可用。


**代码说明:**

1. 导入必要的库:matplotlib、numpy、pandas和statsmodels
2. 加载数据:使用pandas的read_csv函数从'cobb_douglas.csv'文件加载数据
3. 拟合模型:使用statsmodels的ols函数拟合线性回归模型,以lny为响应变量,lnk和lnl为特征变量
4. 输出回归结果:使用results.params打印回归系数
5. 绘制三维图:
    - 使用numpy的linspace函数生成x轴和y轴的坐标
    - 使用numpy的meshgrid函数生成网格坐标
    - 计算z轴坐标,使用回归系数和网格坐标计算lny
    - 使用matplotlib的plot_surface函数绘制三维曲面
    - 使用matplotlib的scatter函数绘制数据点
    - 设置坐标轴标签和标题
6. 解决中文显示问题:
    - 导入matplotlib的font_manager模块
    - 设置字体路径
    - 加载字体
    - 在set_title函数中使用fontproperties参数设置字体

**运行代码:**

1. 确保已安装所需的库,可以使用pip install命令安装
2. 将'cobb_douglas.csv'文件放在与代码相同的目录下
3. 运行代码,将生成一个三维图形,展示lny与lnk和lnl之间的关系

**注意:**

- 代码中的'cobb_douglas.csv'文件需要根据实际情况进行修改
- 需要根据系统环境设置正确的字体路径
- 可以调整代码中的参数,例如颜色、透明度等,以获得更美观的图形
- 可以使用其他库,例如seaborn,来绘制更复杂的三维图形
Python实现Cobb-Douglas生产函数回归及三维可视化

原文地址: https://www.cveoy.top/t/topic/pfLM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录