猪肉价格的波动因素分析

猪肉价格的波动因素分析

期末作业,应付交差的,不要喷我,文字大部分在知网上抄的,发出来存个档,因为u盘老是掉,不想存云里。

引言

猪肉是我国主要的大宗交易农产品之一。据国家统计年鉴显示,猪肉消费在我国肉类消费中占据了居民消费总量的70%以上。猪肉的生产和销售容易受政策、资本和社会事件的影响,造成价格和出栏量的波动,进而影响居民的生活消费和相关产业的发展。因此,通过提高模型预测的准确率,提供更加科学合理的调控措施,可以避免广大经营者遭受生产经营风险,助力生猪产业链的健康稳定发展。
近年来,在政府的大力支持下,我国的大型养猪企业快速扩张,生产方式加速转变,规模化程度逐年提高,逐渐形成了以产业链为主线、从产地到餐桌,从生产到消费、从研发到市场紧密衔接的现代化农业养殖产业技术体系。所以,通过爬取中国猪价网(https://zhujia.zhuwang.cc/),获取到一年的数据,通过数据清洗,建立可视化图表,来分析近一年来的猪肉价格。

1.1决策树模型

在复杂的决策情况中,往往需要多层次或多阶段的决策。当一个阶段决策完成后,可能有m种新的不同自然状态发生;每种自然状态下,都有m个新的策略可选择,选择后产生不同的结果并再次面临新的自然状态,继续产生一系列的决策过程,这种决策被称为序列决策或多级决策。
(这里其实没有弄懂,但是作业要求写这个)

1.2一元线性回归

一元线性回归分析预测法,是根据自变量x和因变量Y的相关关系,建立x与Y的线性回归方程进行预测的方法。由于市场现象一般是受多种因素的影响,而并不是仅仅受一个因素的影响。所以应用一元线性回归分析预测法,必须对影响市场现象的多种因素做全面分析。只有当诸多的影响因素中,确实存在一个对因变量影响作用明显高于其他因素的变量,才能将它作为自变量,应用一元相关回归分析市场预测法进行预测。

2.数据获取与数据清洗

2.1数据获取
用Python语言编写设计爬虫程序在中国猪价网站(:https://zhujia.zhuwang.cc/) 上抓取湖北省近一年来的猪肉价格,对其中比较重要的信息。
利用网址url ,链接(https://zhujia.zhuwang.cc/api/chartData?areaId=-1&aa=%d"% int(time.time()*1000)用来获取价格,
链接"https://zhujia.zhuwang.cc/new_map/zhujiapork/chart1.json?timestamp=%d"% int(time.time()*1000)用来获取时间。如图1(数据获取)
根据重要词:日期;全国猪肉批发价;生猪内三元价格;生猪土杂猪价格;生猪外三元价格;玉米价格;豆子价格等,保存到excel表格中。如图2(猪肉价格excel表)
数据获取
图1-数据获取

猪肉价格excel表
图2-猪肉价格excel表

代码:

# -*- coding: utf-8 -*-
"""
数据采集
采集猪肉价格:https://zhujia.zhuwang.cc/
采集地区:湖北
"""

#requests是python实现的简单易用的HTTP库
import requests
import time
import json
import pandas as pd

# 构造请求网址url,链接1用来获取价格,链接2用来获取时间
网址链接 = "https://zhujia.zhuwang.cc/api/chartData?areaId=-1&aa=%d"% int(time.time()*1000)
网址链接_2 = "https://zhujia.zhuwang.cc/new_map/zhujiapork/chart1.json?timestamp=%d"% int(time.time()*1000)
请求头 = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) like Gecko'}
response = requests.get(网址链接,请求头).text
response_2 = requests.get(网址链接_2,请求头).text
#解析Json,将html文本加载成json格式
Json文本 = json.loads(response)
Json文本_2 = json.loads(response_2)

#构造空列表
豆子价格 = []
玉米价格 = []
生猪内三元 = []
生猪外三元 = []
生猪土杂猪 = []
全国猪肉批发价 = []
日期 = []
数据总信息 = []

for i in range(365):   
    豆子价格.append(Json文本['bean'][i+2])  
    玉米价格.append(Json文本['maizeprice'][i+2])  
    生猪内三元.append(Json文本['pig_in'][i+2])  
    生猪外三元.append(Json文本['pigprice'][i+2])  
    生猪土杂猪.append(Json文本['pig_local'][i+2]) 
    全国猪肉批发价.append(Json文本_2[i][2])
    日期.append(Json文本_2[i][0])
    
for 时间,生猪内三元,生猪外三元,生猪土杂猪,全国猪肉批发价,豆子价格,玉米价格 in zip(日期,生猪内三元,生猪外三元,生猪土杂猪,全国猪肉批发价,豆子价格,玉米价格):
    数据字典 = {}
    数据字典['日期'] = 时间
    数据字典['生猪内三元价格'] = 生猪内三元
    数据字典['生猪外三元价格'] = 生猪外三元
    数据字典['生猪土杂猪价格'] = 生猪土杂猪
    数据字典['全国猪肉批发价'] = 全国猪肉批发价     
    数据字典['豆子价格'] = 豆子价格
    数据字典['玉米价格'] = 玉米价格 
    数据总信息.append(数据字典)
  
#设置行数不限制数量
pd.set_option('display.max_rows', None)
#设置列不限制数量
pd.set_option('display.max_columns', None)
#把数据存放进二维表中
df = pd.DataFrame(数据总信息)
#保存至Excel表中,第一列索引不要
df.to_excel('猪肉价格数据.xlsx',index=False)

2.2数据清洗
经过上一步的数据爬取,得到了湖北省一年内的猪肉价格波动数据。但是不确定获得的数据是否有缺失或者重复,通过df.isnull().any()来查看是否有缺失值;通过df.duplicated().any()来检测是否有重复值。
因为有发现缺失值,所以通过df = df.drop(index=(df.loc[(df[] == ‘’)].index))来删除缺失值。

最后将清洗后的数据,遍历保存到(猪肉价格表-清洗后.xlsx)文件中。
数据清洗代码

图3-数据清洗代码
代码:

# -*- coding: utf-8 -*-
"""
Created on Fri Jun  4 01:05:16 2021

@author: 澊澊
"""

import re
import pandas as pd
import numpy as np
#读取文件
df = pd.read_excel("猪肉价格数据.xlsx")
print(df)

#检测缺失值
df.isnull().any()
print(df.isnull().any())#检测到没有缺失值

#检测重复值
df.duplicated().any()
print(df.duplicated().sum())#检测到没有重复值

#删除有缺失值的行
df = df.drop(index=(df.loc[(df['全国猪肉批发价'] == '')].index))
df = df.drop(index=(df.loc[(df['日期'] == '')].index))
df = df.drop(index=(df.loc[(df['生猪内三元价格'] == '')].index))
df = df.drop(index=(df.loc[(df['生猪外三元价格'] == '')].index))
df = df.drop(index=(df.loc[(df['生猪土杂猪价格'] == '')].index))
df = df.drop(index=(df.loc[(df['玉米价格'] == '')].index))
df = df.drop(index=(df.loc[(df['豆子价格'] == '')].index))

df.to_excel('猪肉价格表-清洗后.xlsx',index=False)

3.模型建立
通过决策树和一元线性回归预测猪肉价格。
决策树模型就是由决策点、策略点(事件点)及结果构成的树形图,一般应用于序列决策中,通常以最大收益期望值或最低期望成本作为决策准则,通过图解方式求解在不同条件下各类方案的效益值,然后通过比较,做出决策。
一元线性回归分析法的预测模型为:
Y = ax + b
决策树代码
决策树代码
一元线性回归代码
一元线性回归代码
得到的结果为:
在这里插入图片描述
在这里插入图片描述
决策树代码:

# -*- coding: utf-8 -*-
"""
Created on Fri Jun  4 02:07:49 2021

@author: 澊澊
"""

#导入决策树
from sklearn.tree import DecisionTreeRegressor
import pandas as pd
import numpy as np

df = pd.read_excel('猪肉价格表-清洗后.xlsx')

def 决策树模型预测猪价(预测特征,标签集,特征):
   #第二步:构造模型
    模型 = DecisionTreeRegressor()
    #第三步:模型训练
    模型.fit(特征,标签集)
    #第四步:模型预测
    预测结果 = 模型.predict(预测特征)
    预测结果 = ','.join(str(i) for i in 预测结果)
    return 预测结果;
    
       
if __name__ == '__main__':
    #第一步:构造数据
    总价标签集 = df['全国猪肉批发价'].values.reshape(-1, 1) #预测房价;标签集
    特征 = df.drop(["日期","全国猪肉批发价"],axis=1) #去掉不用的项;特征
    #预测猪价:
    预测特征 = [[30.5,31,32.5,2200,3100]]
    猪肉价格预测结果 = 决策树模型预测猪价(预测特征,总价标签集,特征)
    
    print("决策树模型预测的猪肉批发价为:{0}元/公斤".format(猪肉价格预测结果)) 
    
    

线性回归代码:

# -*- coding: utf-8 -*-
"""
Created on Fri Jun  4 17:48:02 2021
多元线性回归
@author: 澊澊
"""
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression as LR

df = pd.read_excel('猪肉价格表-清洗后.xlsx')
x = df["全国猪肉批发价"].values
y = df["日期"].values

lr = LR()
lr.fit(x,y)
slr = lr.score(x,y)
c_x = lr.coef_
c_b = lr.intercept_

x1 = np.array([30.5,31,32.5,2200,3100])
x1 = x1.values.reshape(1,-1)
R1 = lr.predict(x1)
r1 = x1*c_x
R2 = r1.sum()+c_b
print('x的回归系数:',c_x)
print('回归系数的常数项:',c_b)
print('预测值为:',R1)

4.可视化图表建立

猪肉价格数据可视化前,已知影响猪肉价格的因素主要有哪些,根据处理后的数据,我们提取到了七个因素: 日期;全国猪肉批发价;生猪内三元价格;生猪土杂猪价格;生猪外三元价格;玉米价格;豆子价格等。
根据以上因素,制作折线图:
可视化代码
可视化代码

通过已有的折线图,可以预测全国猪肉批发价;如图所示:
外三元价格
外三元价格
-内三元价格
-内三元价格
土杂猪价格
土杂猪价格
玉米价格
玉米价格
豆子价格
豆子价格
全国猪肉批发价
全国猪肉批发价

可视化代码:

# -*- coding: utf-8 -*-
"""
Created on Sat Jun  5 12:58:24 2021

@author: 澊澊
"""
import pandas as pd
import numpy as np
from pylab import mpl
import  matplotlib.pyplot as plt

df = pd.read_excel('猪肉价格表-清洗后.xlsx')
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
mpl.rcParams['axes.unicode_minus']

plt.figure(1)#建立第一张画布
plt.figure(figsize=(20,12), dpi=90)#画布尺寸
plt.plot(df['日期'],df['生猪外三元价格'], color="b",linestyle = "-")#画布因素
plt.xticks([])
plt.annotate(df['生猪外三元价格'][300], xy=(df['日期'][300], 40), xytext=(df['日期'][270], 35), arrowprops=dict(facecolor='black', shrink=0.1, width=0.5))
plt.xlabel("生猪(外三元) 元/公斤")

plt.figure(2)
plt.figure(figsize=(20,12), dpi=90)
plt.plot(df['日期'],df['生猪内三元价格'], color="c",linestyle = "-")
plt.xticks([])
plt.annotate(df['生猪内三元价格'][300], xy=(df['日期'][300], 40), xytext=(df['日期'][270], 35), arrowprops=dict(facecolor='black', shrink=0.1, width=0.5))
plt.xlabel("生猪(内三元) 元/公斤")

plt.figure(3)
plt.figure(figsize=(20,12), dpi=90)
plt.plot(df['日期'],df['生猪土杂猪价格'], color="m",linestyle = "-")
plt.xticks([])
plt.annotate(df['生猪土杂猪价格'][300], xy=(df['日期'][300], 40), xytext=(df['日期'][270], 35), arrowprops=dict(facecolor='black', shrink=0.1, width=0.5))
plt.xlabel("生猪(土杂猪) 元/公斤")

plt.figure(4)
plt.figure(figsize=(20,12), dpi=80)
plt.plot(df['日期'],df['玉米价格'],color="y",linestyle = "-")
plt.xticks([])
plt.xlabel("玉米(15%水分) 元/吨")

plt.figure(5)
plt.figure(figsize=(20,12), dpi=80)
plt.plot(df['日期'],df['豆子价格'],color="g",linestyle = "-")
plt.xticks([])
plt.xlabel("豆粕(43%蛋白) 元/吨")

plt.figure(6)
plt.figure(figsize=(20,12), dpi=90)
plt.plot(df['日期'],df['全国猪肉批发价'], color="r",linestyle = "-")
plt.xticks([])
plt.annotate(df['全国猪肉批发价'][300], xy=(df['日期'][300], 40), xytext=(df['日期'][270], 35), arrowprops=dict(facecolor='black', shrink=0.1, width=0.5))
plt.xlabel("全国猪肉批发价 元/公斤")

5.结语

(1)猪肉价格和7个影响因素表明豆柏价格、玉米价格和猪肉价格呈正向关系,和研究假设相致。而其他六个影响因素和猪肉价格呈反向关系。

(2)由于可视化全国猪肉价格的图表显示逐渐降价,而预测结果是上涨的,可以猜测可能有别的因素影响:玉米价格、豆粕价格、餐饮业收入,汇率和货币流动性在当期都对猪肉价格有正向影响;而猪熬疫情对猪肉价格有反向影响。脉冲相应分析说明:玉米价格,鸡肉价格和牛肉价格受到的冲击短期内会正向影响猪肉价格;而豆粕价格.仔猪价格、餐饮业收人、猪瘟疫情和公路建设投资短期内会对猪肉价格产生负向影响。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值