Python | MATLAB | R 心理认知数学图形模型推断

🎯要点

🎯图形模型推断二元过程概率:🖊模型1:确定成功率 θ 的后验分布 | 🖊模型2:确定两个概率差 δ \delta δ 的后验分布 | 🖊模型3:确定底层概率,后验预测 | 🖊模型4:推断概率分布和试验次数

k 次成功
试验 n 次
概率分布 θ
图形模型 1

模型1 分布:

θ ∼ Beta ⁡ ( 1 , 1 ) k ∼ Binomial ⁡ ( θ , n ) \begin{aligned} & \theta \sim \operatorname{Beta}(1,1) \\ & k \sim \operatorname{Binomial}(\theta, n)\end{aligned} θBeta(1,1)kBinomial(θ,n)

图形模型 2

模型2 分布:

k 1 ∼ Binomial ⁡ ( θ 1 , n 1 ) k 2 ∼ Binomial ⁡ ( θ 2 , n 2 ) θ 1 ∼ Beta ⁡ ( 1 , 1 ) θ 2 ∼ Beta ⁡ ( 1 , 1 ) δ ← θ 1 − θ 2 \begin{aligned} k_1 & \sim \operatorname{Binomial}\left(\theta_1, n_1\right) \\ k_2 & \sim \operatorname{Binomial}\left(\theta_2, n_2\right) \\ \theta_1 & \sim \operatorname{Beta}(1,1) \\ \theta_2 & \sim \operatorname{Beta}(1,1) \\ \delta & \leftarrow \theta_1-\theta_2\end{aligned} k1k2θ1θ2δBinomial(θ1,n1)Binomial(θ2,n2)Beta(1,1)Beta(1,1)θ1θ2

底层概率
试验n1次
试验n2 次
k1次成功
θ
k2次成功
图形模型 3

模型3 分布:

k 1 ∼ Binomial ⁡ ( θ , n 1 ) k 2 ∼ Binomial ⁡ ( θ , n 2 ) θ ∼ Beta ⁡ ( 1 , 1 ) \begin{aligned} k_1 & \sim \operatorname{Binomial}\left(\theta, n_1\right) \\ k_2 & \sim \operatorname{Binomial}\left(\theta, n_2\right) \\ \theta & \sim \operatorname{Beta}(1,1)\end{aligned} k1k2θBinomial(θ,n1)Binomial(θ,n2)Beta(1,1)

联合分布
成功次数
已知 ki 次成功
推断概率θ
推断试验n次
图形模型4

模型4 分布:

k i ∼ Binomial ⁡ ( θ , n ) θ ∼ Beta ⁡ ( 1 , 1 ) n ∼ Categorical ⁡ ( 1 n max ⁡ , … , 1 n max ⁡ ⏟ m ) \begin{aligned} k_i & \sim \operatorname{Binomial}(\theta, n) \\ \theta & \sim \operatorname{Beta}(1,1) \\ n & \sim \operatorname{Categorical}(\underbrace{\frac{1}{n_{\max }}, \ldots, \frac{1}{n_{\max }}}_m)\end{aligned} kiθnBinomial(θ,n)Beta(1,1)Categorical(m nmax1,,nmax1)

🎯图形模型高斯推理:🖊模型5:推断高斯分布生成的数据的平均值和标准差 | 🖊模型6:标准差和观察值添加精度先验,推断高斯平均值 | 🖊模型7:重复测量推断智商

高斯分布
观察值
n次观察值xi
高斯平均值 μ
标准差 σ
图形模型5

模型5 分布:

μ ∼ Gaussian ⁡ ( 0 , 0.001 ) σ ∼ Uniform ⁡ ( 0 , 10 ) x i ∼ Gaussian ⁡ ( μ , 1 σ 2 ) \begin{aligned} \mu & \sim \operatorname{Gaussian}(0,0.001) \\ \sigma & \sim \operatorname{Uniform}(0,10) \\ x_i & \sim \operatorname{Gaussian}\left(\mu, \frac{1}{\sigma^2}\right)\end{aligned} μσxiGaussian(0,0.001)Uniform(0,10)Gaussian(μ,σ21)

图形模型6

模型6分布:

μ ∼ Gaussian ⁡ ( 0 , 0.001 ) λ i ∼ Gamma ⁡ ( 0.001 , 0.001 ) σ i ← 1 / λ i x i ∼ Gaussian ⁡ ( μ , λ i ) \begin{aligned} \mu & \sim \operatorname{Gaussian}(0,0.001) \\ \lambda_i & \sim \operatorname{Gamma}(0.001,0.001) \\ \sigma_i & \leftarrow 1 / \sqrt{\lambda_i} \\ x_i & \sim \operatorname{Gaussian}\left(\mu, \lambda_i\right)\end{aligned} μλiσixiGaussian(0,0.001)Gamma(0.001,0.001)1/λi Gaussian(μ,λi)

观测人群
测试
平均值μi
测量数据 xij
标准差 σ
图形模型7

模型7分布:

μ i ∼ Uniform ⁡ ( 0 , 300 ) σ ∼ Uniform ⁡ ( 0 , 100 ) x i j ∼ Gaussian ⁡ ( μ i , 1 σ 2 ) \begin{aligned} \mu_i & \sim \operatorname{Uniform}(0,300) \\ \sigma & \sim \operatorname{Uniform}(0,100) \\ x_{i j} & \sim \operatorname{Gaussian}\left(\mu_i, \frac{1}{\sigma^2}\right)\end{aligned} μiσxijUniform(0,300)Uniform(0,100)Gaussian(μi,σ21)

🎯数据分析:🖊模型8:计算皮尔逊相关系数

相关系数
观察值 xi
平均值 μ
后验分布 r
标准差 σ
图形模型8

模型8 分布:

μ 1 , μ 2 ∼ Gaussian ⁡ ( 0 , 0.001 ) σ 1 , σ 2 ∼ InvSqrtGamma ⁡ ( 0.001 , 0.001 ) r ∼ Uniform ⁡ ( − 1 , 1 ) x i ∼ MvGaussian ⁡ ( ( μ 1 , μ 2 ) , [ σ 1 2 r σ 1 σ 2 r σ 1 σ 2 σ 2 2 ] − 1 ) \begin{aligned} \mu_1, \mu_2 & \sim \operatorname{Gaussian}(0,0.001) \\ \sigma_1, \sigma_2 & \sim \operatorname{InvSqrtGamma}(0.001,0.001) \\ r & \sim \operatorname{Uniform}(-1,1) \\ x _i & \sim \operatorname{MvGaussian}\left(\left(\mu_1, \mu_2\right),\left[\begin{array}{cc}\sigma_1^2 & r \sigma_1 \sigma_2 \\ r \sigma_1 \sigma_2 & \sigma_2^2\end{array}\right]^{-1}\right)\end{aligned} μ1,μ2σ1,σ2rxiGaussian(0,0.001)InvSqrtGamma(0.001,0.001)Uniform(1,1)MvGaussian((μ1,μ2),[σ12rσ1σ2rσ1σ2σ22]1)

🎯时间和记忆关系 | 🎯心里信号检测 | 🎯外部物理刺激内部心理感觉 | 🎯超感知学 | 🎯语义相关连续回忆 | 🎯尺度不变记忆、感知和学习 | 🎯风险判断和偏好个体心里差异 | 🎯多维心理刺激个体相似性

🍇Python后验分布采样计算

贝叶斯计算由一系列方法组成,这些方法可以帮助我们从几乎所有后验分布中采样点,从中我们可以对感兴趣的参数进行点估计。

💦方法一

让我们从一个例子开始,如果我们想从后验分布 f(x) 中绘制点,它具有以下函数形式:
f ( x ) = x 1.7 ( 1 − x 1 + x ) 5.3 f(x)=x^{1.7}\left(\frac{1-x}{1+x}\right)^{5.3} f(x)=x1.7(1+x1x)5.3
我们称这个 f(x) 为目标分布/密度,然后我们提出一个更简单的分布(候选分布),我们可以从中采样点。我们使用均匀分布 g(x),希望当将 g(x) 与常数 M 相乘时,Mg(x) 可以包裹 f(x)。此时,M 很容易被选为 f(x) 的最大值。

现在我们首先从另一个均匀分布 Uniform(0,1) 中独立采样,我们将采样点表示为 u。我们还从候选分布 g(x) 中采样,并将采样点表示为 y。我们测试采样点 u 是否符合以下标准:
u ≤ 1 M f ( y ) g ( y ) u \leq \frac{1}{M} \frac{f(y)}{g(y)} uM1g(y)f(y)
如果符合,我们将 y 视为目标分布的样本,否则,我们拒绝 y。乍一看,这一步可能很难理解。其背后的想法是,如果有一个区域,比如 [0.2,0.3],其中目标密度 f(x) 的密度非常高,那么该区域内的 f(y)/M*g(y) 也会很高,可能接近 1。由于 u 是从标准均匀分布中随机抽取的(u 只是用来控制是拒绝还是接受 y),这个指标更有可能为真,从而导致接受采样的 y。

💦代码

x = np.linspace(0,1,1000)
f_x = x**1.7*((1-x)/(1+x))**5.3
M = f_x.max()
def f(x):return x**1.7*((1-x)/(1+x))**5.3
def g(x):return uniform.pdf(x,loc=0,scale=1)n = 2500
u = uniform.rvs(loc=0,scale=1,size=n,random_state=1)
y = uniform.rvs(loc=0,scale=1,size=n,random_state=2)
f_y = f(y)
g_y = g(y)
acc_or_rej = u <= f_y / (M * g_y)
accepted_y = y[acc_or_rej]
sns.histplot(accepted_y)

估计的目标分布可以绘制如下(图略)。

💦方法二:

蒙特卡罗方法代表了一类广泛的算法,这些算法依赖于重复随机抽样来估计所需的数量。该数量可能是圆周率值,也可能是陌生函数形式的积分。蒙特卡罗最经典的例子是估计圆周率的值,我们首先从两个标准均匀分布中随机抽取 x 和 y,并询问 x 2 + y 2 x^2+y^2 x2+y2​ 是否 < 1,如果答案为真,则将计数器加 1。在随机抽样结束时,我们可以计算计数器与总迭代次数的比率(如果使用正方形和内切圆的面积公式,则应为 pi/4)。

马尔可夫链是一个随机过程,其中当前值仅取决于其直接前一个值。我非常喜欢的一个简单例子是天气预报,如果我们假设一天的天气有三种可能的状态(晴天、多云、下雨),我们有一个初始分布,其中 p(晴天)=0.6、p(多云)=0.3 和 p(下雨)=0.1,现在给定一个转换核 K,它是一个矩阵
( 晴天  阴天  雨天  晴天  0.5 0.3 0.2 阴天  0.3 0.5 0.2 雨天  0.2 0.4 0.4 ) \left(\begin{array}{cccc} & \text { 晴天 } & \text { 阴天 } & \text { 雨天 } \\ \text { 晴天 } & 0.5 & 0.3 & 0.2 \\ \text { 阴天 } & 0.3 & 0.5 & 0.2 \\ \text { 雨天 } & 0.2 & 0.4 & 0.4 \end{array}\right)  晴天  阴天  雨天  晴天 0.50.30.2 阴天 0.30.50.4 雨天 0.20.20.4
我们能够使用初始分布和转换内核导出任意一天的状态分布。当我们继续这样做时,如果状态分布保持不变,它就会达到平稳分布。

虽然马尔可夫链的离散场景更容易理解,但我们最终需要将其推广到状态空间无限的连续情况,这意味着我们将拥有无限多个状态,而不是只有三个状态(晴天、多云、下雨)。所以我们需要使用分布来表示每个时间点的状态分布。例如,如果我们说状态的初始分布遵循 Normal(0,3),那么转移概率也应该是 p(x_n+1|x_n) = K(x_n+1|x_n) = Normal(x_n,0.1) 的分布,并且所有上述属性与离散场景保持一致。

现在我们要从目标密度 f(x) 中采样:
f ( x ) = 2 x 2 ( 1 − x ) 8 cos ⁡ ( 4 π x ) 2 f(x)=2 x^2(1-x)^8 \cos (4 \pi x)^2 f(x)=2x2(1x)8cos(4πx)2
假设我们正在创建一个马尔可夫链,其中转换内核 q(x,y) 为(其中 x 是当前时间点,y 是最后一个时间点):
q ( x , y ) = Normal ⁡ ( y , 0.1 ) q(x, y)=\operatorname{Normal}(y, 0.1) q(x,y)=Normal(y,0.1)
Metropolis-Hasting (MH) 算法首先初始化向量 x 的第一个值(假设我们将使用 MCMC 采样 n=10,000 个 x 值)x[0] 。然后在每次迭代中,我们首先使用转换内核生成一个 x_cand,并且我们需要计算接受率 alpha 来决定下一个 x 是采用 x_cand 还是仅采用最后一个 x 值。接受率如下所示:
α ( x cand  ∣ x i − 1 ) = min ⁡ { 1 , q ( x i − 1 ∣ x cand  ) f ( x cand  ) q ( x cand  ∣ x i − 1 ) f ( x i − 1 ) } \alpha\left(x_{\text {cand }} \mid x_{i-1}\right)=\min \left\{1, \frac{q\left(x_{i-1} \mid x_{\text {cand }}\right) f\left(x_{\text {cand }}\right)}{q\left(x_{\text {cand }} \mid x_{i-1}\right) f\left(x_{i-1}\right)}\right\} α(xcand xi1)=min{1,q(xcand xi1)f(xi1)q(xi1xcand )f(xcand )}
代码如下:

def f(x):import mathreturn 2*x**2*(1-x)**8*math.cos(4*math.pi*x)**2
def q(x,y):return norm.pdf(x,loc=y,scale=0.1)n = 10000
x = np.zeros(n)
x[0] = norm.rvs(loc=0,scale=0.1,size=1)[0]
for i in range(n-1):while True:x_cand = norm.rvs(loc=x[i],scale=0.1,size=1)[0]if x_cand >= 0 and x_cand <= 1:breakif x_cand >= 0 and x_cand <= 1:rho = (q(x[i],x_cand)/q(x_cand,x[i]))*(f(x_cand)/f(x[i]))alpha = min(1,rho)u = uniform.rvs(loc=0,scale=1,size=1)[0]if u < alpha:x[i+1] = x_candelse:x[i+1] = x[i]
sns.histplot(x)
fig,ax = plt.subplots()
ax.plot(np.arange(10000),x)

💦分层贝叶斯

nruns = 10000
K = 100 
n = 1000 
y = np.zeros(K,n)  
lambda_est = np.zeros(K,nruns)
sigma_est = np.zeros(nruns)
mu_est = np.zeros(nruns)
tau_est = np.zeros(nruns)for i in range(K):loc = uniform.rvs(loc=0,scale=10,size=1)[0]scale = uniform.rvs(loc=0,scale=0.1,size=1)[0]lambda_est[i,0] = norm.rvs(loc=loc,scale=scale,size=1)[0]
sigma_est[0] = uniform.rvs(loc=0,scale=0.1,size=1)[0]
mu_est[0] = norm.rvs(loc=uniform.rvs(loc=0,scale=10,size=1)[0],scale=1,size=1)[0]
tau_est[0] = uniform.rvs(loc=0,scale=0.1,size=1)[0]for runs in range(1,n_runs-1,1):for i in range(1,K-1):mean = i/math.sqrt(1/tau_est[runs-1]) + n/sigma_est[runs-1]std = (mean^2)*(mu_est[runs-1]/(tau_est[runs-1])+y[i,:].mean()*n/sigma_est[runs-1])lambda_est[i,runs] = norm.rvs(loc=mean,scale=std,size=1)[0]sigma_sum_term = 0for i in range(K):for j in range(n):sigma_sum_term += (y[i,j]-lambda_est[i,runs])**2sigma_est[runs] = invgamma(loc=K*n/2,scale=sigma_sum_term/2)tau_sum_term = 0for i in range(K):tau_sum_term += (lambda_est[i,runs]-mu_est[runs-1])**2tau_est[runs] = invgamma(loc=K/2,scale=tau_sum_term/2)mu_est[runs] = norm.rvs(loc=lambda_est[:,runs-1].mean(),scale=math.sqrt(tau_est[runs]/2))

👉参阅:亚图跨际

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/21066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法篇】归并排序算法JavaScript版

归并排序 归并排序&#xff08;Merge Sort&#xff09;是一种分治&#xff08;Divide and Conquer&#xff09;思想的典型应用&#xff0c;它将一个大的问题拆分成两个或更多个小问题&#xff0c;解决这些小问题&#xff0c;然后将解决的小问题合并起来&#xff0c;从而完成对…

深入解析智慧互联网医院系统源码:医院小程序开发的架构到实现

本篇文章&#xff0c;小编将深入解析智慧互联网医院系统的源码&#xff0c;重点探讨医院小程序开发的架构和实现&#xff0c;旨在为相关开发人员提供指导和参考。 一、架构设计 智慧互联网医院系统的架构设计是整个开发过程的核心&#xff0c;直接影响到系统的性能、扩展性和维…

探索JavaScript中的高效运算符:?.、||、?? 以及 ??=

探索JavaScript中的高效运算符&#xff1a;?.、||、?? 以及 ?? 在前端开发的日常中&#xff0c;我们经常需要处理各种数据逻辑&#xff0c;确保代码既健壮又高效。JavaScript为我们提供了一系列简洁而强大的运算符&#xff0c;帮助我们以更优雅的方式处理变量的空值、默认…

ZCU102启动镜像(详细版)

ZCU102启动镜像--详细版本 详细步骤1、安装好Vitis&#xff08;GUI界面&#xff09;、 Vivado、 Petalinux软件然后vivado这边的操作就先结束了 创建Petalinux工程编译镜像打包 详细步骤 B站参考视频链接: link 1、安装好Vitis&#xff08;GUI界面&#xff09;、 Vivado、 Pe…

Nocobase快速上手 - 开发第一个插件

在前面的几篇博文中&#xff0c;记录了在Nocobase中配置collection和界面&#xff0c;这篇文章开始插件的开发。插件可以扩展Nocobase的业务能力&#xff0c;解锁更强大的功能。 环境搭建 创建插件需要配置nocobase的开发环境&#xff0c;笔者采用的是clone 官方代码repo的方…

使用python下载股票数据至sqlite数据库

代码下载地址&#xff1a; https://download.csdn.net/download/weixin_44600457/89389489

2024四川三支一扶“考生信息表”照着填❗

2024四川三支一扶“考生信息表”照着填❗ ☑️四川三支一扶开始报名&#xff0c;大家要按照提示如实、准确、完整填写《高校毕业生“三支一扶”计划招募考生信息表》哦~ ☑️不知道怎么填写的宝子们&#xff0c;可以参考图1。 ☑️毕业证书编号如实填写&#xff0c;若是应届生&…

Python 推导式详解:高效简洁的数据处理技巧

推导式是 Python 提供的一种简洁而强大的语法&#xff0c;用于创建列表、集合和字典。它可以让代码更简洁、更易读&#xff0c;同时提高运行效率。 基本语法 列表推导式 基本语法&#xff1a; [expression for item in iterable if condition]示例&#xff1a; # 生成平方…

【JavaEE进阶】——MyBatis操作数据库 (#{}与${} 以及 动态SQL)

目录 &#x1f6a9;#{}和${} &#x1f388;#{} 和 ${}区别 &#x1f388;${}使用场景 &#x1f4dd;排序功能 &#x1f4dd;like 查询 &#x1f6a9;数据库连接池 &#x1f388;数据库连接池使⽤ &#x1f6a9;MySQL开发企业规范 &#x1f6a9;动态sql &#x1f388…

【代码随想录算法训练Day25】LeetCode 216.组合总和III、LeetCode 17.电话号码的字母总和

Day25 回溯第二天 LeetCode 216.组合总和III 算是在上一题组合的基础上多加了一个求和的步骤&#xff0c;总体思路并没有变。 这里直接进行了剪枝操作&#xff0c;把循环的范围变了。 class Solution { private:vector<vector<int>> res;vector<int> path…

TypeScript 中的命名空间和模块化

1. 命名空间&#xff08;Namespace&#xff09; 命名空间提供了一种逻辑上的代码分组机制&#xff0c;用于避免命名冲突和将相关代码组织在一起。它使用 namespace 关键字来定义命名空间&#xff0c;并通过点运算符来访问其中的成员。例如&#xff1a; // 定义命名空间 names…

JetBrains的Ai assistant 直接激活一年的来用用

ai assistant激活成功后&#xff0c;如图 ai assistant渠道&#xff1a;https://web.52shizhan.cn/activity/ai-assistant 在去年五月份的 Google I/O 2023 上&#xff0c;Google 为 Android Studio 推出了 Studio Bot 功能&#xff0c;使用了谷歌编码基础模型 Codey,Codey 是…

[C#]使用C#部署yolov8的obb旋转框检测tensorrt模型

【测试通过环境】 win10 x64 vs2019 cuda11.7cudnn8.8.0 TensorRT-8.6.1.6 opencvsharp4.9.0 .NET Framework4.7.2 NVIDIA GeForce RTX 2070 Super 版本和上述环境版本不一样的需要重新编译TensorRtExtern.dll&#xff0c;TensorRtExtern源码地址&#xff1a;TensorRT-CShar…

微信小程序中实现录音功能及其功效

探索微信小程序录音功能&#xff1a;从实现到应用 导言 在如今的移动应用开发中&#xff0c;语音功能已经成为了不可或缺的一部分。微信小程序作为一个快速发展的平台&#xff0c;提供了丰富的 API 和功能&#xff0c;其中包括了录音功能。本文将带领你探索微信小程序中的录音…

mysql中基于规则的优化

大家好。我们在平时开发的过程中可能会写一些执行起来十分耗费性能的语句。当MySQL遇到这种sql时会依据一些规则&#xff0c;竭尽全力的把这个很糟糕的语句转换成某种可以比较高效执行的形式&#xff0c;这个过程被称作查询重写&#xff0c;今天我们就来聊一下mysql在查询重写时…

【UML用户指南】-05-对基本结构建模-类

在UML中&#xff0c;所有的事物都被建模为类。类是对词汇表中一些事物的抽象。类不是个体对象&#xff0c;而是描述一些对象的一个完整集合。 强调抽象的最重要的部分&#xff1a;名称、属性和操作 类 &#xff08;class&#xff09;是对一组具有相同属性、操作、关系和语义的对…

【2024年5月备考新增】】 考前篇(25)《必备资料(8) - 论文串讲-成本管理》

过程定义输入工具技术输出实际应用规划 成本 管理确定如何估算 预算、管理、 监督和控制项 目成本1、项目章程2、项目管理计划.进度管理计划.风险管理计划3、事业环境因素4、组织过程资产1、专家判断2、数据分析.备选方案分析3、会议1、成本管理计划1、创建成本管理计划,为估算…

【transformers】pytorch基础

传送门&#xff1a;https://transformers.run/c2/2021-12-14-transformers-note-3/ pytorch基础知识 tensor &#xff1a; 张量。 需要知道的内容&#xff1a; 张量构建张量计算自动微分形状调整广播机制索引与切片升降维度 Tensor 张量&#xff1a;理解成高纬度的向量就完…

flink Transformation算子(更新中)

flink Transformation算子部分 Transformation算子 map 该方法是将一个DataStream调用map方法返回一个新的DataStream。本质是将该DataStream中对应的每一条数据依次迭代出来&#xff0c;应用map方法传入的计算逻辑&#xff0c;返回一个新的DataStream。原来的DataStream中对…

短视频毫无营养:四川京之华锦信息技术公司

短视频毫无营养&#xff1a;现象背后的深度剖析 在数字时代&#xff0c;短视频以其短小精悍、易于传播的特点迅速崛起&#xff0c;成为社交媒体上的热门内容。然而&#xff0c;随着短视频的泛滥&#xff0c;关于其内容质量参差不齐、缺乏营养价值的争议也日益加剧。四川京之华…