M*M贝叶斯统计问题的蒙特卡洛模拟的解决方法

简介: M*M贝叶斯统计问题的蒙特卡洛模拟的解决方法

20180117175835305.png

###MM的计算机解决方法
for i in range(10):
    import time
    print(time.strftime("%Y-%m-%d %X", time.localtime()))
    dou={1994:{'褐色':30,'黄色':20,'红色':20,'绿色':10,'橙色':10,'黄褐':10},
         1996:{'蓝色':24,'绿色':20,'橙色':16,'黄色':14,'红色':13,'褐色':13}}
    num=100000
    #模拟抽取100万次,形成新的字典,键值1994,1996
    list_1994=['褐色']*30*num+['黄色']*20*num+['红色']*20*num+['绿色']*10*num+['橙色']*10*num+['黄褐']*10*num
    list_1996=['蓝色']*24*num+['绿色']*20*num+['橙色']*16*num+['黄色']*14*num+['红色']*13*num+['褐色']*13*num
    #对列表随机排序
    import random 
    random.shuffle(list_1994)
    random.shuffle(list_1996)
    #遍历所有元素
    count_all=0
    count_key=0
    for key in range(100*num):
        if list_1994[key]=='黄色' and list_1996[key]=='绿色':
            count_all+=1
            count_key+=1
        if list_1994[key]=='绿色' and list_1996[key]=='黄色':
            count_all+=1
    print(count_key/count_all,20/27 )
    print(time.strftime("%Y-%m-%d %X", time.localtime())) 

#计算结果,发现和统计方法很接近,这个增加了数目,接下来采用模拟100万次,看下平均的结果和统计方法计算的结果差别

2018-01-17 17:49:54
0.7428241292665481 0.7407407407407407
2018-01-17 17:50:22
2018-01-17 17:50:22
0.7418338215119944 0.7407407407407407
2018-01-17 17:50:49
2018-01-17 17:50:49
0.7407099125094797 0.7407407407407407
2018-01-17 17:51:16
2018-01-17 17:51:16
0.7413828573565991 0.7407407407407407
2018-01-17 17:51:43
2018-01-17 17:51:43
0.7457792866763843 0.7407407407407407
2018-01-17 17:52:10
2018-01-17 17:52:10
0.7422211495618595 0.7407407407407407
2018-01-17 17:52:37
2018-01-17 17:52:37
0.7381602660572618 0.7407407407407407
2018-01-17 17:53:04
2018-01-17 17:53:04
0.7419709593841451 0.7407407407407407
2018-01-17 17:53:31
2018-01-17 17:53:31
0.7398747545114315 0.7407407407407407
2018-01-17 17:53:59
2018-01-17 17:53:59
0.7430824928885441 0.7407407407407407
2018-01-17 17:54:25

#模拟10万次代码及结果:

count_all=0
count_key=0
print(time.strftime("%Y-%m-%d %X", time.localtime()))
for i in range(100000):
    print(i)
    import time
    dou={1994:{'褐色':30,'黄色':20,'红色':20,'绿色':10,'橙色':10,'黄褐':10},
         1996:{'蓝色':24,'绿色':20,'橙色':16,'黄色':14,'红色':13,'褐色':13}}
    num=1
    #模拟抽取100万次,形成新的字典,键值1994,1996
    list_1994=['褐色']*30*num+['黄色']*20*num+['红色']*20*num+['绿色']*10*num+['橙色']*10*num+['黄褐']*10*num
    list_1996=['蓝色']*24*num+['绿色']*20*num+['橙色']*16*num+['黄色']*14*num+['红色']*13*num+['褐色']*13*num
    #对列表随机排序
    import random 
    random.shuffle(list_1994)
    random.shuffle(list_1996)
    #遍历所有元素
    key=random.choice(range(100))
    if list_1994[key]=='黄色' and list_1996[key]=='绿色':
            count_all+=1
            count_key+=1
    if list_1994[key]=='绿色' and list_1996[key]=='黄色':
            count_all+=1
print(time.strftime("%Y-%m-%d %X", time.localtime())) 
print(count_key/count_all,20/27 )

#差距更大了一些

目录
相关文章
|
8月前
|
资源调度 前端开发 数据可视化
R语言GARCH模型对股市sp500收益率bootstrap、滚动估计预测VaR、拟合诊断和蒙特卡罗模拟可视化
R语言GARCH模型对股市sp500收益率bootstrap、滚动估计预测VaR、拟合诊断和蒙特卡罗模拟可视化
【数理统计实验(一)】统计量近似分布的随机模拟
【数理统计实验(一)】统计量近似分布的随机模拟
|
8月前
R语言进行数值模拟:模拟泊松回归模型的数据
R语言进行数值模拟:模拟泊松回归模型的数据
R语言进行数值模拟:模拟泊松回归模型的数据
|
8月前
|
算法 项目管理
R语言实现蒙特卡洛模拟算法
R语言实现蒙特卡洛模拟算法
|
8月前
|
算法 数据建模
MATLAB随机波动率SV、GARCH用MCMC马尔可夫链蒙特卡罗方法分析汇率时间序列
MATLAB随机波动率SV、GARCH用MCMC马尔可夫链蒙特卡罗方法分析汇率时间序列
|
8月前
|
算法 数据挖掘
R语言中的贝叶斯统计方法
【4月更文挑战第26天】R语言在贝叶斯统计中发挥着重要作用,提供如"BUGS"、"Stan"、"JAGS"等包来处理复杂模型和数值计算。贝叶斯方法基于概率论,涉及先验分布、似然函数、后验分布和MCMC模拟。"BUGS"适用于复杂层次模型,"Stan"则在大规模数据和复杂模型上有优势。
101 2
|
8月前
|
Python 数据可视化 索引
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
|
8月前
|
算法
基于蒙特卡洛模拟复现谢林模型(计算机社会学)
在谢林模型中,有一片方形区域,区域又被均匀分成若干小方格;有一群被称为代理的个体,每个代理居住在一个小方格内。这些代理可以分成若干类,所有代理都希望周边8个格子尽可能住有较多的同类代理,若居住区域不满足代理的居住要求,则该代理会搬到另一区域居住。
|
8月前
|
数据可视化 算法 区块链
R语言泊松过程及在随机模拟应用可视化
R语言泊松过程及在随机模拟应用可视化
|
8月前
|
Python
Python随机波动性SV模型:贝叶斯推断马尔可夫链蒙特卡洛MCMC分析英镑/美元汇率时间序列数据|数据分享
Python随机波动性SV模型:贝叶斯推断马尔可夫链蒙特卡洛MCMC分析英镑/美元汇率时间序列数据|数据分享