IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> R语言生态学JAGS模拟数据、线性回归、Cormack-Jolly-Seber (CJS) 模型拟合MCMC 估计动物存活率和可视化 -> 正文阅读

[人工智能]R语言生态学JAGS模拟数据、线性回归、Cormack-Jolly-Seber (CJS) 模型拟合MCMC 估计动物存活率和可视化

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

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

本文,我通过两个种群生态学家可能感兴趣的例子来说明使用“JAGS”来模拟数据:首先是线性回归,其次是估计动物存活率(公式化为状态空间模型)。

最近,我一直在努力模拟来自复杂分层模型的数据。我现在正在使用?JAGS

模拟数据?JAGS?很方便,因为你可以使用(几乎)相同的代码进行模拟和推理,并且你可以在相同的环境(即JAGS)中进行模拟研究(偏差、精度、区间覆盖?)。

线性回归示例

我们首先加载本教程所需的包:

library(R2jags)

然后直接切入正题,让我们从线性回归模型生成数据。使用一个?data?块,并将参数作为数据传递。

data{
# 似然函数:
for (i in 1:N){
y[i] ~  # tau是精度(1/方差)。

}

这里,?alpha?和?beta?是截距和斜率、?tau?方差的精度或倒数、?y?因变量和?x?解释变量。

我们为用作数据的模型参数选择一些值:


# 模拟的参数 
N  # 样本
x <- 1:N # 预测因子
alpha # 截距
beta  # 斜率
sigma# 残差sd
 1/(sigma*sigma) # 精度
# 在模拟步骤中,参数被当作数据处理

现在运行?JAGS; 请注意,我们监控因变量而不是参数,就像我们在进行标准推理时所做的那样:

# 运行结果
out 

输出有点乱,需要适当格式化:

# 重新格式化输出
mcmc(out)

dim

dat

现在让我们将我们用来模拟的模型拟合到我们刚刚生成的数据中。不再赘述,假设读者熟悉?JAGS?线性回归。


# 用BUGS语言指定模型
model <- 	

for (i in 1:N){
y[i] ~ dnorm(mu[i], tau) # tau是精度(1/方差)


alpha  截距
beta # 斜率
sigma  # 标准差


# 数据
dta <- list(y = dt, N = length(at), x = x)

# 初始值
inits 


# MCMC设置
ni <- 10000


# 从R中调用JAGS
jags()

让我们看看结果并与我们用来模拟数据的参数进行比较(见上文):

# 总结后验
print(res)

检查收敛:

# 追踪图
plot(res)

绘制回归参数和残差标准差的后验分布:

# 后验分布
plot(res)

模拟示例

我现在说明如何使用?JAGS?来模拟来自具有恒定生存和重新捕获概率的模型的数据。我假设读者熟悉这个模型及其作为状态空间模型的公式。

让我们模拟一下!


# 恒定的生存和重新捕获概率
for (i in 1:nd){
   for (t in f:(on-1)){

#概率
for (i in 1:nid){
   # 定义潜伏状态和第一次捕获时的观察值
   z[i,f[i] <- 1
   mu2[i,1] <- 1 * z[i,f[i] # 在第一次捕获时检测为1("以第一次捕获为条件")。
   # 然后处理以后的情况
   for (t in (f[i]+1):non){
      # 状态进程
      mu1[i,t] <- phi * z 
      # 观察过程
      mu2[i,t] <- p * z


让我们为参数选择一些值并将它们存储在数据列表中:


# 用于模拟的参数 
n = 100 # 个体的数量
meanhi <- 0.8 # 存活率
meap <- 0.6 # 重捕率
data<-list

现在运行?JAGS

out 

格式化输出:

as.mcmc(out)

head(dat)

我只监测了检测和非检测,但也可以获得状态的模拟值,即个人在每种情况下是生是死。你只需要修改对JAGS?的调用?monitor=c("y","x")?并相应地修改输出。

现在我们将 Cormack-Jolly-Seber (CJS) 模型拟合到我们刚刚模拟的数据中,假设参数不变:


# 倾向性和约束
for (i in 1:nd){
   for (t in f[i]:(nn-1)){


mehi ~ dunif(0, 1) # 平均生存率的先验值
Me ~ dunif(0, 1) # 平均重捕的先验值
# 概率
for (i in 1:nd){
   # 定义第一次捕获时的潜伏状态
   z[i]] <- 1
   for (t in (f[i]+1):nions){
      # 状态过程
      z[i,t] ~ dbern(mu1[i,t])
      # 观察过程
      y[i,t] ~ dbern(mu2[i,t])
    

准备数据:


# 标记的场合的向量
gerst <- function(x) min(which(x!=0))
# 数据
jagta

# 初始值
for (i in 1:dim]){
       min(which(ch[i,]==1))
      max(which(ch[i,]==1))

function(){list(meaphi, mep , z ) }

我们想对生存和重新捕获的概率进行推断:

标准 MCMC 设置:

ni <- 10000

准备运行?JAGS

# 从R中调用JAGS
jags(nin = nb, woy = getwd() )

总结后验并与我们用来模拟数据的值进行比较:

print(cj3)

非常接近!

跟踪图

trplot

后验分布图

denplot


最受欢迎的见解

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模型实现

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-19 18:25:29  更:2021-12-19 18:25:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 0:36:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码