国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用PyMC進(jìn)行時間序列分層建模

這篇具有很好參考價值的文章主要介紹了使用PyMC進(jìn)行時間序列分層建模。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在統(tǒng)計建模領(lǐng)域,理解總體趨勢的同時解釋群體差異的一個強(qiáng)大方法是分層(或多層)建模。這種方法允許參數(shù)隨組而變化,并捕獲組內(nèi)和組間的變化。在時間序列數(shù)據(jù)中,這些特定于組的參數(shù)可以表示不同組隨時間的不同模式。

今天,我們將深入探討如何使用PyMC(用于概率編程的Python庫)構(gòu)建分層時間序列模型。

讓我們從為多個組生成一些人工時間序列數(shù)據(jù)開始,每個組都有自己的截距和斜率。

 import numpy as np
 import matplotlib.pyplot as plt
 import pymc as pm
 
 # Simulating some data
 np.random.seed(0)
 n_groups = 3  # number of groups
 n_data_points = 100  # number of data points per group
 x = np.tile(np.linspace(0, 10, n_data_points), n_groups)
 group_indicator = np.repeat(np.arange(n_groups), n_data_points)
 slope_true = np.random.normal(0, 1, size=n_groups)
 intercept_true = np.random.normal(2, 1, size=n_groups)
 y = slope_true[group_indicator]*x + intercept_true[group_indicator] + np.random.normal(0, 1, size=n_groups*n_data_points)

我們生成了三個不同組的時間序列數(shù)據(jù)。每組都有自己的時間趨勢,由唯一的截距和斜率定義。

 colors = ['b', 'g', 'r']  # Define different colors for each group
 
 plt.figure(figsize=(10, 5))
 
 # Plot raw data for each group
 for i in range(n_groups):
     plt.plot(x[group_indicator == i], y[group_indicator == i], 'o', color=colors[i], label=f'Group {i+1}')
 
 plt.title('Raw Data with Groups')
 plt.xlabel('Time')
 plt.ylabel('Value')
 plt.legend()
 plt.show()

使用PyMC進(jìn)行時間序列分層建模

下一步是構(gòu)建層次模型。我們的模型將具有組特定的截距(alpha)和斜率(beta)。截距和斜率是從具有超參數(shù)mu_alpha、sigma_alpha、mu_beta和sigma_beta的正態(tài)分布中繪制的。這些超參數(shù)分別表示截距和斜率的組水平均值和標(biāo)準(zhǔn)差。

 with pm.Model() as hierarchical_model:
     # Hyperpriors
     mu_alpha = pm.Normal('mu_alpha', mu=0, sigma=10)
     sigma_alpha = pm.HalfNormal('sigma_alpha', sigma=10)
     mu_beta = pm.Normal('mu_beta', mu=0, sigma=10)
     sigma_beta = pm.HalfNormal('sigma_beta', sigma=10)
   
     # Priors
     alpha = pm.Normal('alpha', mu=mu_alpha, sigma=sigma_alpha, shape=n_groups)  # group-specific intercepts
     beta = pm.Normal('beta', mu=mu_beta, sigma=sigma_beta, shape=n_groups)  # group-specific slopes
     sigma = pm.HalfNormal('sigma', sigma=1)
 
     # Expected value
     mu = alpha[group_indicator] + beta[group_indicator] * x
 
     # Likelihood
     y_obs = pm.Normal('y_obs', mu=mu, sigma=sigma, observed=y)
 
     # Sampling
     trace = pm.sample(2000, tune=1000)

現(xiàn)在我們已經(jīng)定義了模型并對其進(jìn)行了采樣。讓我們檢查不同參數(shù)的模型估計:

 # Checking the trace
 pm.plot_trace(trace,var_names=['alpha','beta'])
 plt.show()

使用PyMC進(jìn)行時間序列分層建模

最后一步是將原始數(shù)據(jù)和模型預(yù)測可視化:

 # Posterior samples
 alpha_samples = trace.posterior['alpha'].values
 beta_samples = trace.posterior['beta'].values
 
 # New x values for predictions
 x_new = np.linspace(0, 10, 200)
 
 plt.figure(figsize=(10, 5))
 
 # Plot raw data and predictions for each group
 for i in range(n_groups):
     # Plot raw data
     
     plt.plot(x[group_indicator == i], y[group_indicator == i], 'o', color=colors[i], label=f'Group {i+1} observed')
     x_new = x[group_indicator == i]
     # Generate and plot predictions
     alpha = trace.posterior.sel(alpha_dim_0=i,beta_dim_0=i)['alpha'].values
     beta = trace.posterior.sel(alpha_dim_0=i,beta_dim_0=i)['beta'].values
     y_hat = alpha[..., None] + beta[..., None] * x_new[None,:]
     y_hat_mean = y_hat.mean(axis=(0, 1))
     y_hat_std = y_hat.std(axis=(0, 1))
     plt.plot(x_new, y_hat_mean, color=colors[i], label=f'Group {i+1} predicted')
     plt.fill_between(x_new, y_hat_mean - 2*y_hat_std, y_hat_mean + 2*y_hat_std, color=colors[i], alpha=0.3)
 
 plt.title('Raw Data with Posterior Predictions by Group')
 plt.xlabel('Time')
 plt.ylabel('Value')
 plt.legend()
 plt.show()

使用PyMC進(jìn)行時間序列分層建模

從圖中可以看出,分層時間序列模型很好地捕獲了每組中的單個趨勢,而陰影區(qū)域給出了預(yù)測的不確定性。

層次模型為捕獲時間序列數(shù)據(jù)中的組級變化提供了一個強(qiáng)大的框架。它們允許我們在組之間共享統(tǒng)計數(shù)據(jù),提供部分信息池和對數(shù)據(jù)結(jié)構(gòu)的細(xì)微理解。使用像PyMC這樣的庫,實現(xiàn)這些模型變得相當(dāng)簡單,為健壯且可解釋的時間序列分析鋪平了道路。

https://avoid.overfit.cn/post/56ad545325504850ab2b7b7b9a264a61

作者:Charles Copley文章來源地址http://www.zghlxwxcb.cn/news/detail-497252.html

到了這里,關(guān)于使用PyMC進(jìn)行時間序列分層建模的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 使用 Ploomber、Arima、Python 和 Slurm 進(jìn)行時間序列預(yù)測

    使用 Ploomber、Arima、Python 和 Slurm 進(jìn)行時間序列預(yù)測

    推薦:使用 NSDT場景編輯器助你快速搭建可二次編輯的3D應(yīng)用場景 筆記本由 8 個任務(wù)組成,如下圖所示。它包括建模的大多數(shù)基本步驟 - 獲取數(shù)據(jù)清理、擬合、超參數(shù)調(diào)優(yōu)、驗證和可視化。作為捷徑,我拿起筆記本并使用Soorgeon工具自動將筆記本模塊化到Ploomber管道中。這會將

    2024年02月12日
    瀏覽(19)
  • 數(shù)學(xué)建模:14 時間序列

    數(shù)學(xué)建模:14 時間序列

    目錄 步驟 基本概念 時間序列分解 疊加 / 乘積模型 使用SPSS的實例 步驟 指數(shù)平滑模型 Simple模型 線性趨勢模型 布朗線性趨勢模型 阻尼趨勢模型 簡單季節(jié)性 溫特加法模型 溫特乘法模型 一元時間序列分析的模型 基礎(chǔ)概念 平穩(wěn)時間序列、白噪聲序列 差分方程及其特征方程 滯

    2024年02月09日
    瀏覽(24)
  • 【數(shù)學(xué)建?!繒r間序列分析

    【數(shù)學(xué)建?!繒r間序列分析

    1.使用于具有時間、數(shù)值兩種要素 2.數(shù)據(jù)具有周期性可以使用時間序列分解 疊加模型【Y=T+S+C+I】 序列的季節(jié)波動變化越來越大,反映變動之間的關(guān)系發(fā)生變化 乘積序列【Y=T S C*I】 時間序列波動保持恒定,可以使用疊加模型 數(shù)據(jù)預(yù)處理——開頭結(jié)尾有缺失值,直接刪掉即可

    2024年02月15日
    瀏覽(25)
  • 數(shù)學(xué)建模--時間序列分析

    數(shù)學(xué)建模--時間序列分析

    目錄 1.時間序列 2.平穩(wěn)時間序列 差分方程 滯后因子 時序平穩(wěn)性? 自回歸模型AR(P) 滑動平均模型 MA(q) 自回歸移動平均模型ARMA(p,q) 3.matlab時序分析 garchset函數(shù) garchfit函數(shù) 4.案例分析 ????????時間序列分析是一種數(shù)據(jù)分析方法,它研究的對象是代表某一現(xiàn)象的一串隨時間

    2024年02月12日
    瀏覽(28)
  • 【數(shù)學(xué)建?!?-時間序列分析

    【數(shù)學(xué)建模】--時間序列分析

    時間序列分析概念與時間序列分解模型 定義:時間序列也稱動態(tài)序列,是指將某種現(xiàn)象的指標(biāo)數(shù)值按照時間順序排列而成的數(shù)值序列。時間序列分析大致可分成三大部分,分別是描述過去,分線規(guī)律和預(yù)測未來,本講將主要介紹時間序列分析中常用的三種模型:季節(jié)分解指數(shù)

    2024年02月13日
    瀏覽(22)
  • 數(shù)學(xué)建模-時間序列預(yù)測步驟

    數(shù)學(xué)建模-時間序列預(yù)測步驟

    目錄 數(shù)據(jù) 第一步:定義時間 第二步:創(chuàng)建傳統(tǒng)模型 結(jié)果 論文下筆 GG 點擊條件,點擊 離群值全部勾選 點擊統(tǒng)計 點擊圖 保存 選項 ? 由于我們的數(shù)據(jù)中不存在缺失值,且為季度數(shù)據(jù),則可以作出時間序列圖 從圖中可以看出,銷量數(shù)據(jù)存在遞增趨勢并且有很明顯的季節(jié)性波動

    2024年01月19日
    瀏覽(105)
  • 第87步 時間序列建模實戰(zhàn):LSTM回歸建模

    第87步 時間序列建模實戰(zhàn):LSTM回歸建模

    一、寫在前面 這一期,我們介紹大名鼎鼎的LSTM回歸。 同樣,這里使用這個數(shù)據(jù): 《PLoS One》2015年一篇題目為《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever with Renal Syndrome in Jiangsu Province, China》文章的公開數(shù)據(jù)做演示。數(shù)據(jù)為江蘇省2004年1月至2012年12月腎綜

    2024年02月07日
    瀏覽(17)
  • 第85步 時間序列建模實戰(zhàn):CNN回歸建模

    第85步 時間序列建模實戰(zhàn):CNN回歸建模

    一、寫在前面 這一期,我們介紹CNN回歸。 同樣,這里使用這個數(shù)據(jù): 《PLoS One》2015年一篇題目為《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever with Renal Syndrome in Jiangsu Province, China》文章的公開數(shù)據(jù)做演示。數(shù)據(jù)為江蘇省2004年1月至2012年12月腎綜合癥出血熱

    2024年02月07日
    瀏覽(15)
  • 數(shù)學(xué)建模——時間序列預(yù)測(股價預(yù)測)

    數(shù)學(xué)建?!獣r間序列預(yù)測(股價預(yù)測)

    完整數(shù)據(jù)及代碼:數(shù)學(xué)建模+時間序列預(yù)測+LSTM+股票數(shù)據(jù)分析-機(jī)器學(xué)習(xí)文檔類資源-CSDN下載 ?????????股票數(shù)據(jù)由代碼、簡稱、時間、開盤價、收盤價、最高價、最低價、前收盤價、成交量、成交金額、PE、市凈率、換手率組成,其中,代碼、簡稱、時間不用于建模,PE、市

    2024年02月05日
    瀏覽(25)
  • 數(shù)學(xué)建模:ARMA時間序列預(yù)測

    ?? 文章首發(fā)于我的個人博客:歡迎大佬們來逛逛 時間序列是按時間順序的一組數(shù)字序列 時間序列的特點: 現(xiàn)實的、真實的一組數(shù)據(jù),時間序列背后是某一現(xiàn)象的變化規(guī)律,時間序列預(yù)測就是學(xué)習(xí)之前的規(guī)律來預(yù)測后面的值 判斷時間序列數(shù)據(jù) 是否平穩(wěn) ,若非平穩(wěn)需要做 差

    2024年02月11日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包