精华内容
下载资源
问答
  • 贝叶斯向量自回归广泛用于宏观经济预测和结构分析。 然而,直到最近,由于参数扩散问题和计算限制,大多数实证工作只考虑了具有少量变量的小系统。 我们首先回顾了各种可用于解决大型贝叶斯 VAR 中参数增殖问题的...
  • 本文运用基于独立 Minnesota-Wishart 共轭先验分布的贝叶斯向量自回归模型( BVAR) ,并通过 Gibbs 抽样的马尔科夫链蒙特卡洛模拟方法预测中国银行间国债的收益率。此外,按照固定窗口的滚动预测规则, 采用统计性...
  • 向量自回归(VAR)模型的一般缺点是,估计系数的数量与滞后的数量成比例地增加。因此,随着滞后次数的增加,每个参数可用的信息较少。在贝叶斯VAR文献中,减轻这种所谓的维数诅咒的一种方法是随机搜索变量选择(SSVS...

    原文链接:http://tecdat.cn/?p=9390

    原文出处:拓端数据部落公众号


    介绍

    向量自回归(VAR)模型的一般缺点是,估计系数的数量与滞后的数量成比例地增加。因此,随着滞后次数的增加,每个参数可用的信息较少。在贝叶斯VAR文献中,减轻这种所谓的维数诅咒的一种方法是随机搜索变量选择(SSVS),由George等人提出(2008)。SSVS的基本思想是将通常使用的先验方差分配给应包含在模型中的参数,将不相关参数的先验方差接近零。这样,通常就可以估算出相关参数,并且无关变量的后验值接近于零,因此它们对预测和冲激响应没有显着影响。这是通过在模型之前添加层次结构来实现的,其中在采样算法的每个步骤中评估变量的相关性。

    这篇文章介绍了使用SSVS估计贝叶斯向量自回归(BVAR)模型。它使用Lütkepohl(2007)的数据集E1,其中包含有关1960Q1至1982Q4德国固定投资,可支配收入和消费支出的数据。加载数据并生成数据:

    
    # 加载和转换数据
    e1 <- diff(log(e1))
    
    # 生成VAR
    data <- gen_var(e1, p = 4, deterministic = "const")
    
    # 获取数据矩阵
    y <- data$Y[, 1:71]
    x <- data$Z[, 1:71]

    估算值

    根据George等人所述的半自动方法来设置参数的先验方差(2008)。对于所有变量,先验包含概率设置为0.5。误差方差-协方差矩阵的先验信息不足。

    # 重置随机数提高可重复性
    set.seed(1234567)
    
    t <- ncol(y) # 观察数
    k <- nrow(y) # 内生变量数
    m <- k * nrow(x) # 估计系数数
    
    # 系数先验
    a_mu_prior <- matrix(0, m) # 先验均值的向量
    
    # SSVS先验(半自动方法)
    ols <- tcrossprod(y, x) %*% solve(tcrossprod(x)) # OLS估计
    sigma_ols <- tcrossprod(y - ols %*% x) / (t - nrow(x)) # OLS误差协方差矩阵
    cov_ols <- kronecker(solve(tcrossprod(x)), sigma_ols)
    se_ols <- matrix(sqrt(diag(cov_ols))) # OLS标准误
     
    
    # 先验参数
    prob_prior <- matrix(0.5, m)
    
    #  方差-协方差矩阵
    u_sigma_df_prior <- 0 # 方差-协方差矩阵
    u_sigma_scale_prior <- diag(0, k) # 先验协方差矩阵
    u_sigma_df_post <- t + u_sigma_df_prior # 后验自由度

    初始参数值设置为零,这意味着在Gibbs采样器的第一步中应相对自由地估算所有参数。

    可以直接将SSVS添加到VAR模型的标准Gibbs采样器算法中。在此示例中,常数项从SSVS中排除,这可以通过指定来实现include = 1:36。具有SSVS的Gibbs采样器的输出可以用通常的方式进一步分析。因此,可以通过计算参数的绘制方式获得点估计:

    
    ##          invest income   cons
    ## invest.1 -0.102  0.011 -0.002
    ## income.1  0.044 -0.031  0.168
    ## cons.1    0.074  0.140 -0.287
    ## invest.2 -0.013  0.002  0.004
    ## income.2  0.015  0.004  0.315
    ## cons.2    0.027 -0.001  0.006
    ## invest.3  0.033  0.000  0.000
    ## income.3 -0.008  0.021  0.013
    ## cons.3   -0.043  0.007  0.019
    ## invest.4  0.250  0.001 -0.005
    ## income.4 -0.064 -0.010  0.025
    ## cons.4   -0.023  0.001  0.000
    ## const     0.014  0.017  0.014
    

    还可以通过计算变量的均值来获得每个变量的后验概率。从下面的输出中可以看出,在VAR(4)模型中似乎只有几个变量是相关的。常数项的概率为100%,因为它们已从SSVS中排除。

    
    ##          invest income cons
    ## invest.1   0.43   0.23 0.10
    ## income.1   0.10   0.18 0.67
    ## cons.1     0.11   0.40 0.77
    ## invest.2   0.11   0.09 0.14
    ## income.2   0.08   0.07 0.98
    ## cons.2     0.07   0.06 0.08
    ## invest.3   0.19   0.07 0.06
    ## income.3   0.06   0.13 0.10
    ## cons.3     0.09   0.07 0.12
    ## invest.4   0.78   0.09 0.16
    ## income.4   0.13   0.09 0.18
    ## cons.4     0.09   0.07 0.06
    ## const      1.00   1.00 1.00
    

    给定这些值,研究人员可以按照常规方式进行操作,并根据Gibbs采样器的输出获得预测和脉冲响应。这种方法的优势在于它不仅考虑了参数不确定性,而且还考虑了模型不确定性。这可以通过系数的直方图来说明,该直方图描述了收入的第一个滞后项与消费当前值之间的关系。

    hist(draws_a[6,], 

    通过两个峰描述模型不确定性,并通过右峰在它们周围的分布来描述参数不确定性。

    但是,如果研究人员不希望使用模型,变量的相关性可能会从采样算法的一个步骤更改为另一个步骤,那么另一种方法将是仅使用高概率的模型。这可以通过进一步的模拟来完成,在该模拟中,对于不相关的变量使用非常严格的先验,而对于相关参数则使用没有信息的先验。

    后方抽取的均值类似于Lütkepohl(2007,5.2.10节)中的OLS估计值:

    
    ##          invest income   cons
    ## invest.1 -0.219  0.001 -0.001
    ## income.1  0.000  0.000  0.262
    ## cons.1    0.000  0.238 -0.334
    ## invest.2  0.000  0.000  0.001
    ## income.2  0.000  0.000  0.329
    ## cons.2    0.000  0.000  0.000
    ## invest.3  0.000  0.000  0.000
    ## income.3  0.000  0.000  0.000
    ## cons.3    0.000  0.000  0.000
    ## invest.4  0.328  0.000 -0.001
    ## income.4  0.000  0.000  0.000
    ## cons.4    0.000  0.000  0.000
    ## const     0.015  0.015  0.014
    

    评价

    bvar功能可用于将Gibbs采样器的相关输出收集到标准化对象中,例如predict获得预测或irf进行脉冲响应分析。

     hin(bvar_est, thin = 5)
    

    预测

    可以使用函数获得置信区间的预测predict

    plot(bvar_pred)

    脉冲响应分析

    
    plot(OIR


    最受欢迎的见解

    1.matlab使用贝叶斯优化的深度学习

    2.matlab贝叶斯隐马尔可夫hmm模型实现

    3.R语言Gibbs抽样的贝叶斯简单线性回归仿真

    4.R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归

    5.R语言中的Stan概率编程MCMC采样的贝叶斯模型

    6.Python用PyMC3实现贝叶斯线性回归模型

    7.R语言使用贝叶斯 层次模型进行空间数据分析

    8.R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型

    9.matlab贝叶斯隐马尔可夫hmm模型实现

    展开全文
  • :分层贝叶斯向量自回归 :混合贝叶斯VAR :向量自回归(VAR)过程的岭估计 :结构贝叶斯矢量自回归模型 :面板向量自回归 :贝叶斯全局矢量自回归 :估计高斯混合向量自回归模型 :具有条件切换的非线性时
  • BayVAR 是一个 MATLAB 库,旨在从贝叶斯角度估计和分析向量自回归 (VAR) 模型。 BayVAR使用几种先验类型(明尼苏达州/利特曼,Canova,Raynauld-Simonato等)执行不受限制的贝叶斯估计。 还包括通过轴向搜索校准超...
  • GUI,它对贝叶斯多主题向量自回归(VAR)模型实施了变分推理方法,以便基于静止状态功能MRI数据来推理有效的大脑连通性。 建模框架使用贝叶斯变量选择方法,以允许在主题级别和小组级别同时推断有效的连接性。 它还...
  • sklearn初探(四):支持向量机、高斯贝叶斯、岭回归 前言 仍然使用上一篇文章的数据集,这次使用支持向量机、高斯贝叶斯、岭回归三种方法进行预测,并使用10折交叉验证进行评价。由于采用线性回归的方法,这里没有...

    sklearn初探(四):支持向量机、高斯贝叶斯、岭回归

    前言

    仍然使用上一篇文章的数据集,这次使用支持向量机、高斯贝叶斯、岭回归三种方法进行预测,并使用10折交叉验证进行评价。由于采用线性回归的方法,这里没有可视化。完整源代码以及数据集链接在文末给出。

    概述

    支持向量机

    支持向量机的优势在于:

    • 在高维空间中非常高效.
    • 即使在数据维度比样本数量大的情况下仍然有效.
    • 在决策函数(称为支持向量)中使用训练集的子集,因此它也是高效利用内存的.
    • 通用性: 不同的核函数 核函数 与特定的决策函数一一对应.常见的 kernel 已经提供,也可以指定定制的内核.
      SVC, NuSVCLinearSVC 能在数据集中实现多元分类.
      和其他分类器一样, SVC, NuSVCLinearSVC 将两个数组作为输入: [n_samples, n_features] 大小的数组 X 作为训练样本, [n_samples] 大小的数组 y 作为类别标签(字符串或者整数):
    >>> from sklearn import svm
    >>> X = [[0, 0], [1, 1]]
    >>> y = [0, 1]
    >>> clf = svm.SVC(gamma='scale')
    >>> clf.fit(X, y)  
    SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
     decision_function_shape='ovr', degree=3, gamma='scale', kernel='rbf',
     max_iter=-1, probability=False, random_state=None, shrinking=True,
     tol=0.001, verbose=False)

    高斯贝叶斯

    GaussianNB 实现了运用于分类的高斯朴素贝叶斯算法。特征的可能性(即概率)假设为高斯分布:
    在这里插入图片描述
    参数σy\sigma_yμy\mu_y使用最大似然法估计。

    >>> from sklearn import datasets
    >>> iris = datasets.load_iris()
    >>> from sklearn.naive_bayes import GaussianNB
    >>> gnb = GaussianNB()
    >>> y_pred = gnb.fit(iris.data, iris.target).predict(iris.data)
    >>> print("Number of mislabeled points out of a total %d points : %d"
    ...       % (iris.data.shape[0],(iris.target != y_pred).sum()))
    Number of mislabeled points out of a total 150 points : 6

    岭回归

    KernelRidge 学习的模型的形式与支持向量回归( SVR 是一样的。但是他们使用不同的损失函数:内核岭回归(KRR)使用 squared error loss (平方误差损失函数)而 support vector regression (支持向量回归)(SVR)使用 ε-insensitive loss ( ε-不敏感损失 ),两者都使用 l2 regularization (l2 正则化)。与SVR 相反,拟合 KernelRidge 可以以 closed-form (封闭形式)完成,对于中型数据集通常更快。另一方面,学习的模型是非稀疏的,因此比 SVR 慢。在预测时间内,SVR 拟合的是ε>0的稀疏模型。

    数据分割

    bank_data = pd.read_csv("../datas/train_set.csv")
    # first set of balance and duration
    first_set = bank_data[['age', 'balance']]
    labels = bank_data['y']

    支持向量机代码

    svc_c1_rbf_set1 = svm.SVC(C=1, kernel='rbf')
    svc_c1_rbf_set1.fit(first_set, labels)
    scores_svcC1RbfSet1 = cross_val_score(svc_c1_rbf_set1, first_set, labels, cv=10)
    print(scores_svcC1RbfSet1)
    svc_c5_rbf_set1 = svm.SVC(C=0.5, kernel='rbf')
    svc_c5_rbf_set1.fit(first_set, labels)
    scores_svcC5RbfSet1 = cross_val_score(svc_c5_rbf_set1, first_set, labels, cv=10)
    print(scores_svcC5RbfSet1)

    高斯贝叶斯代码

    # naive bayes begins
    gnb_1 = GaussianNB()
    gnb_1 = gnb_1.fit(first_set, labels)
    scores_GNB_1 = cross_val_score(gnb_1, first_set, labels, cv=10)  # 10-means cross validate
    print(scores_GNB_1)

    岭回归代码

    # Ridge begins
    # performs very bad
    reg_1_1 = linear_model.Ridge(alpha=1)
    reg_1_1 = reg_1_1.fit(first_set, labels)
    print(reg_1_1.coef_)
    scores_Reg_1_1 = cross_val_score(reg_1_1, first_set, labels, cv=10)
    print(scores_Reg_1_1)
    reg_1_5 = linear_model.Ridge(alpha=.5)
    reg_1_5.fit(first_set, labels)
    print(reg_1_5.coef_)
    scores_Reg_1_5 = cross_val_score(reg_1_5, first_set, labels, cv=10)
    print(scores_Reg_1_5)

    完整源代码

    import pandas as pd
    from sklearn import tree
    from sklearn import preprocessing
    import graphviz
    from sklearn.model_selection import cross_val_score
    from sklearn.naive_bayes import GaussianNB
    from sklearn import linear_model
    from sklearn import svm
    
    bank_data = pd.read_csv("../datas/train_set.csv")
    # first set of balance and duration
    first_set = bank_data[['age', 'balance']]
    labels = bank_data['y']
    
    second_set = bank_data[['duration', 'campaign', 'pdays', 'previous']]
    
    # naive bayes begins
    gnb_1 = GaussianNB()
    gnb_1 = gnb_1.fit(first_set, labels)
    scores_GNB_1 = cross_val_score(gnb_1, first_set, labels, cv=10)  # 10-means cross validate
    print(scores_GNB_1)
    
    gnb_2 = GaussianNB()
    gnb_2 = gnb_2.fit(second_set, labels)
    scores_GNB_2 = cross_val_score(gnb_2, second_set, labels, cv=10)  # 10-means cross validate
    print(scores_GNB_2)
    # naive bayes ends
    # Ridge begins
    # performs very bad
    reg_1_1 = linear_model.Ridge(alpha=1)
    reg_1_1 = reg_1_1.fit(first_set, labels)
    print(reg_1_1.coef_)
    scores_Reg_1_1 = cross_val_score(reg_1_1, first_set, labels, cv=10)
    print(scores_Reg_1_1)
    reg_1_5 = linear_model.Ridge(alpha=.5)
    reg_1_5.fit(first_set, labels)
    print(reg_1_5.coef_)
    scores_Reg_1_5 = cross_val_score(reg_1_5, first_set, labels, cv=10)
    print(scores_Reg_1_5)
    
    reg_2_1 = linear_model.Ridge(alpha=1)
    reg_2_1.fit(second_set, labels)
    print(reg_2_1.coef_)
    scores_Reg_2_1 = cross_val_score(reg_2_1, second_set, labels, cv=10)
    print(scores_Reg_2_1)
    # Ridge ends
    # svc begins
    svc_c1_rbf_set1 = svm.SVC(C=1, kernel='rbf')
    svc_c1_rbf_set1.fit(first_set, labels)
    scores_svcC1RbfSet1 = cross_val_score(svc_c1_rbf_set1, first_set, labels, cv=10)
    print(scores_svcC1RbfSet1)
    svc_c5_rbf_set1 = svm.SVC(C=0.5, kernel='rbf')
    svc_c5_rbf_set1.fit(first_set, labels)
    scores_svcC5RbfSet1 = cross_val_score(svc_c5_rbf_set1, first_set, labels, cv=10)
    print(scores_svcC5RbfSet1)
    svc_c1_rbf_set2 = svm.SVC(C=1, kernel='rbf')
    svc_c1_rbf_set2.fit(second_set, labels)
    scores_svcC1RbfSet2 = cross_val_score(svc_c1_rbf_set2, second_set, labels, cv=10)
    print(scores_svcC1RbfSet2)
    svc_c5_rbf_set2 = svm.SVC(C=0.5, kernel='rbf')
    svc_c5_rbf_set2.fit(second_set, labels)
    scores_svcC5RbfSet2 = cross_val_score(svc_c5_rbf_set2, second_set, labels, cv=10)
    print(scores_svcC5RbfSet2)
    # svc ends

    数据集链接

    银行数据集

    展开全文
  • 贝叶斯回归分位数在最近的文献中受到广泛关注,本文实现了贝叶斯系数估计和回归分位数(RQ)中的变量选择,带有lasso和自适应lasso惩罚的贝叶斯。还包括总结结果、绘制路径图、后验直方图、相关图和绘制分位数图的...

    原文链接:http://tecdat.cn/?p=22702

    原文出处:拓端数据部落公众号

    摘要

    贝叶斯回归分位数在最近的文献中受到广泛关注,本文实现了贝叶斯系数估计和回归分位数(RQ)中的变量选择,带有lasso和自适应lasso惩罚的贝叶斯。还包括总结结果、绘制路径图、后验直方图、自相关图和绘制分位数图的进一步建模功能。

    简介

    回归分位数(RQ)由(Koenker和Gilbert,1978)提出,将感兴趣的结果的条件分位数作为预测因子的函数来建模。自引入以来,分位数回归一直是理论界非常关注的话题,也在许多研究领域得到了大量的应用,如计量经济学、市场营销、医学、生态学和生存分析(Neelon等,2015;Davino等,2013;Hao和Naiman,2007)。假设我们有一个观察样本{(xi , yi);i = 1, 2, - -, n},其中yi表示因变量,xi表示协变量的k维矢量。 

    贝叶斯分位数回归

    Tobit RQ为描述非负因变量和协变量向量之间的关系提供了一种方法,可以被表述为因变量的数据未被完全观察到的分位数回归模型。关于Tobit 分位数回归模型有相当多的文献,我们可以参考Powell(1986)、Portnoy(2003)、Portnoy和Lin(2010)以及Kozumi和Kobayashi(2011)来了解概况。考虑一下这个模型。

    其中,yi是观察到的因变量,y∗i是相应的潜在的未观察到的因变量,y 0是一个已知的点。可以证明,RQ系数向量β可以通过以下最小化问题的解来持续估计

    Yu和Stander(2007)提出了一种Tobit RQ的贝叶斯方法,使用ALD计算误差,并使用Metropolis-Hastings(MH)方法从其后验分布中抽取β。


    真实数据实例

    我们考虑用真实的数据例子。

    免疫球蛋白G数据

    这个数据集包括298名6个月到6岁儿童的免疫球蛋白G的血清浓度(克/升),Isaacs等人(1983)对其进行了详细讨论,Yu等人(2003)也使用了该数据集。为了说明问题,该数据集的贝叶斯分位数回归模型(可以拟合如下)。 

    rq(血清浓度~年龄, tau=0.5, runs=2000)
    
    

    摘要函数提供估计值和95%的置信区间

     

    绘制数据,然后将五条拟合的RQ线叠加在散点图上。 

    
    R> for (i in 1:5) {
    + taus=c(0.05, 0.25, 0.5, 0.75, 0.95)
    + rq(tau=taus[i],runs=500, burn=100)
    + abline(fit, col=i)
    + }
    R> 
    R> for (i in 1:5) {
    + fit = rq(年龄+I(年龄^2),tau=taus[i],runs=500, burn=100)
    + curve(,add=TRUE)
    + }
    

    图2:免疫球蛋白G数据的散点图和RQ拟合。

    该图显示了298名6个月至6岁儿童的免疫球蛋白G的散点图。叠加在该图上的是{.05, .25, .50, .75, .95}的RQ线(左图)和 RQ线(左图)和RQ曲线(右图)。

    图可以用来评估吉布斯采样向平稳分布的收敛情况。我们在图1中只报告了τ=0.50时每个参数的路径图和后验直方图。我们使用以下代码

    plot(fit,"tracehist",D=c(1,2))
    
    

    可以通过生成路径图、后验直方图、自相关图来对Gibbs采样的绘制结果进行图形总结。路径和直方图,路径和自相关,直方图和自相关,以及路径、直方图和自相关。这个函数还有一个选项。在图3中,免疫球蛋白G数据系数的路径图表明,采样从后验空间的一个偏远区域跳到另一个区域的步骤相对较少。此外,直方图显示边际密度实际上是所期望的平稳的单变量常态。

    图3:当τ=0.50时,免疫球蛋白G数据集的系数的路径和密度图。

    前列腺癌数据

    在本小节中,我们说明贝叶斯分位数回归在前列腺癌数据集(Stamey等人,1989)上的表现。该数据集调查了等待根治性前列腺切除术的病人的前列腺特异性抗原(lpsa)水平和八个协变量之间的关系。

    这些协变量是:癌症对数体积(lcavol)、前列腺的对数重量(lweight)、年龄(age)、良性前列腺的对数体积(lbph)、精囊侵犯(svi)、胶囊穿透的对数(lcp)、格里森评分(gleason)以及格里森评分4或5的百分比(pgg45)。

    在本小节中,我们假设因变量(lpsa)均值为零,而预测因子已被标准化,均值为零。为了说明问题,我们考虑当τ=0.50时,贝叶斯lasso套索RQ(方法="BLqr")。在这种情况下,我们使用以下代码

    
    R> x=as.matrix(x)
    R> rq(y~x,tau = 0.5, method="BLqr", runs = 5000, burn = 1000, thin = 1)
    
    

    模型法可用于确定回归中的活跃变量。 

    相应的吉布斯采样的收敛性是通过生成样本的路径图和边际后验直方图评估的。因此,图可以用来提供一个关于吉布斯采样器收敛的图形检查,通过使用以下代码检查路径图和边际后验直方图。
     

    plot(fit, type="trace")
    

    上述代码的结果分别显示在图4和图5中。图4中的路径图显示,生成的样本迅速穿越了后验空间,图5中的边际后验直方图显示,条件后验分布实际上是所需的平稳单变量常态。 

    小麦数据

    我们考虑一个小麦数据集。这个数据集来自于国家小麦种植发展计划(2017)。这个小麦数据由11个变量的584个观测值组成。因变量是每2500平方米小麦产量增加的百分比。协变量是化肥尿素(U)、小麦种子播种日期(Ds)、小麦种子播种量(Qs)、激光平田技术(LT)、复合肥施肥(NPK)、播种机技术(SMT)、绿豆作物种植(SC)、作物除草剂(H)、作物高钾肥(K)、微量元素肥料(ME)。

    下面的命令给出了τ=0.50时Tobit RQ的后验分布。

    rq(y~x,tau=0.5, methods="Btqr")
    

     还可以拟合贝叶斯lassoTobit 分位数回归和贝叶斯自适应lassoTobit 分位数回归。当τ=0.50时,函数可以用来获得Tobit 分位数回归的后验平均值和95%的置信区间。 

    结论

    在本文中,我们已经说明了在分位数回归(RQ)中进行贝叶斯系数估计和变量选择。此外,本文还实现了带有lasso和自适应lasso惩罚的贝叶斯Tobit 分位数回归。还包括总结结果、绘制路径图、后验直方图、自相关图和绘制定量图的进一步建模。

    参考文献

    Alhamzawi, R., K. Yu, and D. F. Benoit (2012). Bayesian adaptive lasso quantile regression. Statistical Modelling 12 (3), 279–297.

    Brownlee, K. A. (1965). Statistical theory and methodology in science and engineering, Volume 150. Wiley New York.

    Davino, C., M. Furno, and D. Vistocco (2013). Quantile regression: theory and applications. John Wiley & Sons.


    最受欢迎的见解

    1.matlab使用贝叶斯优化的深度学习

    2.matlab贝叶斯隐马尔可夫hmm模型实现

    3.R语言Gibbs抽样的贝叶斯简单线性回归仿真

    4.R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归

    5.R语言中的Stan概率编程MCMC采样的贝叶斯模型

    6.Python用PyMC3实现贝叶斯线性回归模型

    7.R语言使用贝叶斯 层次模型进行空间数据分析

    8.R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型

    9.matlab贝叶斯隐马尔可夫hmm模型实现

    展开全文
  • 贝叶斯方法实现自动回归,注意这不是一般的AR模型,而是VAR,向量自动回归模型。
  • https://blog.csdn.net/weixin_44049128/article/details/86502423此篇博文代码。
  • 贝叶斯多元回归假设该向量是从多元正态分布中得出的,其中均值向量是和协方差矩阵。这里是观察到的协变量矩阵。注意,该矩阵的第一列是标识。参数矢量的, 是一种常见的方差参数,是单位矩阵。通过使用单位矩阵,...

    原文链接:http://tecdat.cn/?p=11617

    原文出处:拓端数据部落公众号


    在这篇文章中,我将对多元线性回归使用block的Gibbs采样,得出block的Gibbs采样所需的条件后验分布。然后,对采样器进行编码,并使用模拟数据对其进行测试。

     贝叶斯模型

    假设我们有一个样本量的主题。 贝叶斯多元回归假设该向量是从多元正态分布中提取的 ,通过使用恒等矩阵,我们假设独立的观察结果。

    到目前为止,这与多元正态回归相同。 则将概率最大化可得出以下解 :

    贝叶斯模型是通过指定为一个先验分布得到 。在此示例中,我将在以下情况下使用 先验值 

     

     

    block Gibbs

    在对采样器进行编码之前,我们需要导出Gibbs采样器的 每个参数的后验条件分布。

     

    条件后验\ beta取更多的线性代数。

    这是一个非常漂亮和直观的结果。 条件后验的协方差矩阵是协方差矩阵的估计

    还要注意,条件后验是一个多元分布。因此,在Gibbs采样器的每次迭代中,我们从后验绘制出一个完整的矢量

    模拟

    我模拟的 结果向量。 

    运行 Gibbs采样器 会生成对真实系数和方差参数的估计。运行了500,000次迭代。周期为100,000次,10次迭代。

    以下是MCMC链的图,其中真实值用红线表示。

    # 计算后验摘要统计信息
    post_dist %>%
      group_by(para) %>%
      summarise(median=median(draw),
                lwr=quantile(.025),
                upr=quantile(.975)) %>%
     
    # 合并汇总统计信息
    post_dist <- post_dist %>%
      left_join(post_sum_stats, by='param')
     
    # 绘制MCMC链
    ggplot(post_dist,aes(x=iter,y=dra)) +
      geom_line() +
      geom_hline(aes(yintercept=true_vals))

    MCMC_chains_blocked_Gibbs

    这是修整后参数的后验分布:

    ggplot(post_dist,aes(x=draw)) +
      geom_histogram(aes(x=draw),bins=50) +
      geom_vline(aes(xintercept = true_vals)) 
    

    似乎能够获得这些参数的合理后验估计。 为了确保贝叶斯估计器正常工作,我对1,000个模拟数据集重复了此过程

    这将产生1,000组后验均值和1,000组95%置信区间。平均而言,这1000个后验均值应以真实值为中心。平均而言,真实参数值应在95%的时间的置信区间内。

    以下是这些评估的摘要。

    “估计平均值”列是所有1,000个模拟中的平均后验平均值。偏差百分比均小于5%。对于所有参数,95%CI的覆盖率约为95%。

     

    扩展 

    我们可以对该模型进行许多扩展。例如,可以使用除正态分布外的其他分布来拟合不同类型的结果。 例如,如果我们有二元数据,则可以将其建模为:

    然后在上放一个先验分布。这个想法将贝叶斯线性回归推广到贝叶斯GLM。

    在本文中概述的线性情况下,可以更灵活地对协方差矩阵建模。相反,假设协方差矩阵是对角线且具有单个公共方差。这是多元线性回归中的同方差假设。如果数据是分类的(例如,每个受试者有多个观察结果),我们可以使用反Wishart分布来建模整个协方差矩阵。


    最受欢迎的见解 

    1.matlab使用贝叶斯优化的深度学习

    2.matlab贝叶斯隐马尔可夫hmm模型实现

    3.R语言Gibbs抽样的贝叶斯简单线性回归仿真

    4.R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归

    5.R语言中的Stan概率编程MCMC采样的贝叶斯模型

    6.Python用PyMC3实现贝叶斯线性回归模型

    7.R语言使用贝叶斯 层次模型进行空间数据分析

    8.R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型

    9.matlab贝叶斯隐马尔可夫hmm模型实现

    展开全文
  • 虽然这可以很好地介绍贝叶斯原理,但将这些原则扩展到回归并不是直截了当的。 这篇文章将概述这些原则如何扩展到简单的线性回归。在此过程中,我将推导出感兴趣的参数的后验条件分布,呈现用于实现Gibbs采样器的R...
  • 目前人工智能和深度学习越趋普及,构建一个回归或者分类模型十分容易,但是想要得到更好的精度却较为困难,其主要原因是模型超参数的选择。那么要想模型效果好,手动调参少不了,机器学习算法如SVM就有gamma、kernel...
  • 贝叶斯回归

    千次阅读 2018-08-22 21:47:00
    贝叶斯回归 主动相关决策理论 - ARD 贝叶斯回归可以用于在预估阶段的参数正则化: 正则化参数的选择不是通过人为的选择,而是通过手动调节数据值来实现。 上述过程可以通过引入 无信息先验 于模型中的超参数来完成...
  • 朴素贝叶斯贝叶斯决策理论的一部分,所以讲述朴素贝叶斯之前有必要快速了解一下贝叶斯决策理论。 贝叶斯决策理论的核心思想,即选择具有最高概率的决策。 贝叶斯准则告诉我们如何交换条件概率中 的条件与结果,...
  • 在这篇文章中,我将对多元线性...贝叶斯多元回归假设该向量是从多元正态分布中得出的,其中均值向量是​和协方差矩阵​。这里​是观察到​的协变量矩阵。注意,该矩阵的第一列是标识。参数矢量​的​, ​是一种常见...
  • 贝叶斯线性回归

    2018-10-26 20:03:00
    贝叶斯线性回归(Bayesian Linear Regression) 关于参数估计 在很多机器学习或数据挖掘问题中,我们所面对的只有数据,但数据中潜在的概率密度函数是不知道的,概率密度分布需要我们从数据中估计出来。想要确定...
  • 本文将介绍如何在R中用rstan和rjags做贝叶斯回归分析,R中有不少包可以用来做贝叶斯回归分析,比如最早的(同时也是参考文献和例子最多的)R2WinBUGS包。这个包会调用WinBUGS软件来拟合模型,后来的JAGS软件也使用与...
  • R的Stan 可以从许多统计软件包中运行Stan。到目前为止,我一直在从R运行Stan,首先...简单线性回归 第一步是为Stan模型编写文件。这包含一个文件linreg.stan: data { intN; [N] x; vector[N] y; } parameter...
  • 一、常规线性回归及其求解方法 核心提炼 1、普通最小二乘法(OLS)的解析解可以用 Gaussian 分布以及极大似然估计解释;...2、Ridge 回归可以用 Gaussian 分布和最大后验...贝叶斯线性回归(Bayesian linear r...
  • 贝叶斯线性回归(Bayesian Linear Regression)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,744
精华内容 10,697
关键字:

贝叶斯向量自回归