动森大头菜价格变化分析(1)——不同价格走势的变换

本文利用Mathematica的离散马尔可夫过程(DiscreteMarkovProcess)对《集合啦!动物森友会》中大头菜价格变化进行建模分析。通过反编译游戏代码,作者发现了价格走势的概率分布表,并用DiscreteMarkovProcess模拟了前100周的价格走势,展示了不同价格模型的概率变化。
摘要由CSDN通过智能技术生成

0

想后面怎么做的时候老是按过程式的方法在想,没法套到MMA的思路上,就先试着用Python看能不能把整个思路搭起来,后面再看用不用MMA
实现一下吧

事情起于这篇文章:
《集合啦!动物森友会》大头菜背后的那些事儿
有人反编译了动物之森中控制大头菜价格变化的代码。虽然佛系如我连每天按时上线看下大头菜价格都做不到,但用这个例子去学习些新知识还是能为这个漫长的假期增添些乐趣吧。

上面链接中的文章我认为可以分为三部分:

  1. 每周大头菜价格走势的变换方法
  2. 不同价格模型的具体内容
  3. 如何预测大头菜价格并分析当周价格模型

在本文中我尝试利用Mathematica 去还原上述的第一部分,即上周价格走势对当周价格走势的影响。

1

连接中的文章介绍了四种在动森中用于控制一周之内大头菜价格走势变化的模型,分别是 波动性3期型4期型 以及 持续下降型。在这里先不对各个价格模型的具体内涵进行介绍。

通过反编译发现上周的价格走势会对影响不同价格走势在下周出现的概率,具体概率分布表如下:

给定上周价格走势的情况下当周出现不同价格走势的概率
表中的第一列代表上周大头菜的价格走势,第一行则代表本周价格的可能走势,除此之外表中各单元代表在上周大头菜价格走势为其同行对应的模型的基础上,本周大头菜价格的走势是与其同列的第一行价格模型的概率。例如表中的第3行第2列数值为50%的单元格,代表的意思是在上周价格为3期型的前提下,本周价格趋势为波动型的概率为50%。初次之外价格走势还有一个条件是大头菜投资的第一周价格模型为4期型

可以发现每周价格的走势仅与前一周的价格走势有关,同时当周出现何种价格走势受到一个固定概率表的控制,符合 马尔可夫过程 后一状态仅与其相邻的前一状态有关的性质。

2

Mathematica 本身内涵了大量与随机过程有关的函数方法,其中也包含多种实现马尔可夫过程的方法。

2.1

具体到大头菜价格模型这个例子来说,其适用DiscreteMarkovProcess(离散马可夫过程) 这一方法。在Mathmatica 中DiscreteMarkovProcess 有不同的应用方式,我选择使用:
DiscreteMarkovProcess[i,m]
表示转移矩阵为 m 和初始状态为i的离散时间有限状态马可夫过程.,对应于大头菜上述表格即为价格走势的转移矩阵,整个过程的初始状态则为 4期型

2.2

利用DiscreteMarkovProcess 对大头菜价格走势进行建模:

pattenShift=DiscreteMarkovProcess[4,{ {0.2,0.3,0.15,0.35},{0.5,0.05,0.2,0.25},{0.25,0.45,0.05,0.25},{0.45,0.25,0.15,0.15}}];

RandomFunction 可对此过程进行模拟,例如我们对前100周价格走势的情况进行模拟,并以散点图显示其中一次模拟结果:

ListPlot[RandomFunction[pattenShift,{0,100}],Filling->Axis,Ticks->{Automatic, { {1,“波动型”},{2,“3期型”},{3,“持续下降型”},{4,“4期型”}}}]

前100周价格走势的模拟结果
我们还可以用有向图的形式展示上面的价格走势变化过程:

Graph[cross,VertexLabels->{1->“波动型”,2->“3期型”,3->“持续下降型”,4->“4期型”},VertexSize->Small,EdgeLabels->With[{sm=MarkovProcessProperties[pattenShift,“TransitionMatrix”]},Flatten@Table[DirectedEdge[i,j]->sm[[i,j]],{i,4},{j,4}]],ImageSize->Large]
大头菜价格走势变动规律的有向图表示
在图中4个黄色节点代表价格走势的4种可能,有向线的指向代表从上一周的价格走势模型向下一周价格走势模型变化的过程,不同有向线上的数值代表不同可能变化的概率。

此外还能够获得此过程的概率密度函数:

PDF[pattenShift[n], k] // PiecewiseExpand

{ 0.101533 ( 2.43627   + 1. ( − 0.317323 ) n − 1.31345 ( − 0.186112 ) n − 2.12282 ( − 0.0465646 ) n ) k = 2 − 0.144804 ( 1. ( − 0.317323 ) n + 2.39477 (

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值