版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://cloud.tencent.com/developer/article/1537721
PMI是一个很有意思的东西,一般都会认为PMI是一个领先指标。PMI中文名叫做采购经理人指数,听起来有点不知所云,说白了就是一个问卷调查。
我们来假设一个场景。话说在小天才幼儿园里面,老师很关心小朋友的开心程度,于是每个月快到月底的时候都会让小朋友填一个问卷,问卷内容很简单,就是一个判断题:
你这个月比上个月开心吗?请选择开心、不开心、一样开心。
然后每个小朋友都会回答。假设我们班里面有100个小朋友,其中40个小朋友回答是开心;10个小朋友回答不开心;50个小朋友回答一样开心。
于是,我们就可以计算一个扩散指数:40除以100 \* 1 + 50 除以100 \* 0.5,最后等于0.65,也就是说,开心的扩散指数是65,也就是,目前这个班的孩子还会继续开心。
PMI就是一种扩散指数。所谓的扩散指数就是通过上面这样的问卷调查表,最后进行正反面和持平反馈的统计的出来的。PMI的问卷问的当然不会是你开不开心啦,毕竟开心不开心和经济发展其实没有那么大的关系,这也是很悲哀的一点。
统计局会向他需要调查的企业,一般是国企,发一张问卷调查表,问一下各方面和上个月相比怎么样,包括这个月生产情况怎么样啊,和上个月相比是造的多了还是少了?新的订单是多了还是少了?仓库里面的原材料呢?等等等等,每一种类型的问题形成了一个PMI,每一个PMI都是一个问卷调查之后计算的扩散指数。
而把这些分项加权组合起来就是某一个整体的PMI了。
所谓的某一个整体,言下之意就是不止一个整体。对应的,我们有两个PMI,制造业PMI和服务业PMI。我们知道,制造业和服务业是最重要的两个产业,而这两个产业的根本逻辑是不一样的,所以对制造业和服务业的问卷调查设计的也是不一样的。
我们先来看一下制造业PMI:
图片来源:联讯证券
虽然制造业PMI的问卷调查有这么多项目,但是最后在加权的时候其实只使用了蓝色虚线框圈起来的四个。
制造业PMI=新订单指数×30%+生产指数×25%+从业人员指数×20%+(100-供应商配送时间指数) ×15%+主要原材料库存×10%
有的同学就问了,那剩下那些干嘛,也不参加制造业PMI的计算。不参加就不参加喽,单独看看就可以了呀。
非制造业PMI也是一样 蓝色框框中的一项就构成了非制造业pmi
图片来源:联讯证券
到这里 我就知道pmi是怎么来的了。首先假设经济没有变好也没有变坏 那么 pmi是多少呢?很显然 就是大家都说这个月和上个月一样 所以pmi就是50。
当然啦,肯定不会大家那么一致,所以有一半的人说好,有一半的人说坏的时候,pmi也是50 神奇吧。这就是为什么我们说pmi等于50是经济的荣枯线,大于50说明经济在扩张,小于50说明经济在衰退。同时 pmi的绝对数值变化还可以来判断扩张是在加速还是在减缓、判断经济有没有处于过热的状态。
PMI是一个很好的经济指标,因为她在每个月月底就公布当月的,时效性上很高。而由于我国是一个制造业大国,所以制造业PMI对整个经济体具有更加重要的指导意义。而制造业PMI可以分成下面这样的几个方面:
既然这样,那么我们就可以从上面这四个方面来考察PMI这个指标了。
PMI直觉上是一个环比指标,虽然统计局说他公布的是一个季调之后的数据,但是看起来季节性依然很强,所以比较前一个月之外,我们还会进行同比的比较。
我们先来看一下我们的原始数据:
对于这样多方面的比较,最合适的就是雷达图了。
代码大概张这样,用的是pyecharts:
from pyecharts import options as opts
from pyecharts.charts import Radar
y2016 = [[49.27,51.10,47.50, 59.05 ]]
y2017 = [[49.53 ,51.48 ,47.35 ,59.30 ]]
y2018 = [[47.33 ,49.68 ,47.15 ,55.00 ]]
y2019 = [[47.17 ,48.70 ,47.05 ,49.20 ]]
def radar_base():
c = (
Radar()
.add_schema(
schema=[
opts.RadarIndicatorItem(name="需求", max_=60,min_=40),
opts.RadarIndicatorItem(name="供给", max_=60, min_ = 40),
opts.RadarIndicatorItem(name="库存", max_=60, min_ = 40),
opts.RadarIndicatorItem(name="价格", max_=60, min_ = 40),
]
)
.add("2016", y2016, color="#f9713c")
.add("2017",y2017,color="#b3e4a1")
.add("2018",y2018, color="#f3e4a1")
.add("2019",y2019, color="#03e4a1")
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(title_opts=opts.TitleOpts(title="PMI"))
)
return c
radar_base().render(path='PMI-雷达图.html')