零基础 HDDM 数据分析完全指南:Docker 一键部署与实战

不需要记复杂的 Linux 命令,不需要折腾 Python 环境——本文将带你用最简单的方式在 Windows 上运行 HDDM 进行漂移扩散模型分析。


什么是 HDDM?

HDDM(Hierarchical Drift Diffusion Model,层级漂移扩散模型)是认知心理学和神经科学中广泛使用的反应时分析工具。它能够:

  • 🧠 估计认知加工参数:漂移率(drift rate)、决策阈值(threshold)、非决策时间等
  • 📊 处理层级数据:同时建模被试内和被试间变异
  • 🔬 支持贝叶斯推断:提供参数的后验分布和不确定性估计

典型应用场景

研究领域 应用示例
认知心理学 知觉决策、记忆提取过程
临床心理学 抑郁症、ADHD 患者的决策机制
神经经济学 风险决策、跨期选择
精神病学 冲动控制障碍的评估

为什么选择 Docker?

传统方式安装 HDDM 需要:

1
2
3
4
5
✗ 安装 Python 3.x
✗ 安装 Theano/PyMC(依赖复杂)
✗ 配置 C++ 编译器
✗ 解决各种依赖冲突
✗ 折腾几小时可能还跑不起来 😭

而使用 Docker 只需要:

1
2
3
✓ 安装 Docker Desktop(一次)
✓ 一行命令启动环境
✓ 开箱即用,无需配置 😊

前置准备

第一步:安装 Docker Desktop

  1. 访问 Docker 官网
  2. 下载 Windows 版本并安装
  3. 启动 Docker Desktop,确保左下角显示 🟢 Running

第二步:拉取 HDDM 镜像

管理员身份打开 CMD,运行:

1
docker pull hcp4715/hddm

⏱️ 首次下载约需 5-10 分钟(取决于网络速度)


快速开始:一键命令生成

为了简化操作,我制作了一个命令生成工具。你只需要输入 Windows 文件夹路径,工具会自动生成可运行的 Docker 命令。

使用步骤

1. 打开命令生成器

点击下方链接使用在线版本,或下载 HTML 文件本地打开:

🔗 DockerHDDM 命令生成器

2. 输入你的数据文件夹路径

在输入框中粘贴数据文件夹路径,例如:

1
D:\GitHub_programe\GitHub\Self-Repo\AI_Docker_User

工具支持多种格式自动转换:

你输入的格式 自动转换为
D:\my\data /d/my/data
"D:\my\data" /d/my/data
D:/my/data /d/my/data
C:\Users\me\data /c/Users/me/data

3. 调整选项(可选)

  • CPU 核心数:默认 4 核,根据电脑配置调整
  • 端口:默认 8888,被占用时可改为 8787、8889 等
  • 镜像版本:默认 latest(推荐)

4. 点击”生成命令”

复制生成的命令,类似这样:

1
docker run -it --rm --cpus=4 -v /d/GitHub_programe/GitHub/Self-Repo/AI_Docker_User:/home/jovyan/work -p 8888:8888 hcp4715/hddm jupyter notebook

运行与使用

在 CMD 中启动

  1. 管理员身份打开 CMD
  2. 粘贴生成的命令,按回车
  3. 等待容器启动(首次约 30 秒)

成功启动后,终端会显示类似:

1
2
[I 2024-01-15 08:30:00.123 ServerApp] Jupyter Server 2.0.0 is running at:
[I 2024-01-15 08:30:00.124 ServerApp] http://127.0.0.1:8888/?token=abc123def456

打开 Jupyter Notebook

  1. 复制终端中的链接(包含 token
  2. 在浏览器中粘贴并打开
  3. 进入 work 文件夹——这里就是你的数据文件夹

Jupyter 界面示意图


命令参数详解

生成的 Docker 命令包含以下参数:

1
docker run -it --rm --cpus=4 -v /本地路径:/home/jovyan/work -p 8888:8888 hcp4715/hddm jupyter notebook
参数 含义 说明
docker run 启动容器 创建并运行一个新容器
-it 交互模式 保持交互,可看到运行日志
--rm 自动清理 容器退出后自动删除,不占用空间
--cpus=4 CPU 限制 限制容器使用 4 个 CPU 核心
-v 本地:容器 挂载卷 将本地文件夹映射到容器内
-p 8888:8888 端口映射 将容器的 8888 端口映射到本机
hcp4715/hddm 镜像名 使用的 Docker 镜像
jupyter notebook 启动命令 启动 Jupyter Notebook 服务

实战示例:分析一个简单的数据集

示例数据格式

HDDM 通常需要以下列:

列名 说明 示例值
rt 反应时(秒) 0.523
response 反应(正确=1,错误=0) 1
subj_idx 被试编号 1, 2, 3…
condition 实验条件(可选) “easy”, “hard”

示例代码

在 Jupyter Notebook 中新建一个 Python 文件,运行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import pandas as pd
import hddm

# 1. 读取数据
data = pd.read_csv('work/my_data.csv')
print(data.head())

# 2. 创建 HDDM 模型
# 简单模型:只估计被试水平的参数
model = hddm.HDDM(data, depends_on={'v': 'condition'})

# 3. 运行 MCMC 采样
model.sample(2000, burn=500)

# 4. 查看结果
model.print_stats()

# 5. 保存结果
model.save('work/hddm_results')

结果解读

HDDM 主要估计以下参数:

参数 含义 心理学解释
v (drift rate) 漂移率 证据积累速度,反映任务难度和注意力
a (threshold) 决策阈值 谨慎程度,阈值越高越保守
t (non-decision time) 非决策时间 知觉和运动执行时间
z (starting point) 起始点 先验偏向,>0.5 偏向某一反应

常见问题解决

❓ 端口被占用了怎么办?

症状:提示 bind: address already in use

解决:修改端口映射,例如改为 8787:

1
2
# 将 -p 8888:8888 改为 -p 8787:8888
docker run -it --rm --cpus=4 -v /d/data:/home/jovyan/work -p 8787:8888 hcp4715/hddm jupyter notebook

然后访问:http://127.0.0.1:8787

❓ 提示权限不足?

症状docker: permission denied

解决

  1. 确保以管理员身份运行 CMD
  2. 检查 Docker Desktop 是否正在运行
  3. 尝试重启 Docker Desktop

❓ 如何导入自己的数据?

方法:将数据文件放在挂载的文件夹中,在 Jupyter 中通过 work/ 访问:

1
2
3
# 假设你的数据在 D:\data\experiment.csv
# 挂载后通过以下路径读取
data = pd.read_csv('work/experiment.csv')

❓ 容器启动后如何停止?

方法:直接关闭 CMD 窗口即可。

由于使用了 --rm 参数,容器会自动清理,不会占用磁盘空间。你的数据保存在本地文件夹,不会丢失。

❓ 如何保存代码和结果?

方案 1:在 Jupyter 中直接保存到 work 文件夹(推荐)

1
2
# 结果会自动保存到挂载的本地文件夹
model.save('work/my_model')

方案 2:使用 Jupyter 的 Download 功能下载 .ipynb 文件


进阶配置

指定镜像版本

如需使用特定版本,修改镜像标签:

1
2
3
4
5
6
7
8
# 最新稳定版
docker run ... hcp4715/hddm:1.0.1 ...

# Intel 芯片专用
docker run ... hcp4715/hddm:1.0.1-amd64 ...

# Apple M1/M2 专用
docker run ... hcp4715/hddm:1.0.1-arm64 ...

增加内存限制

如需限制容器内存使用,添加 --memory 参数:

1
docker run -it --rm --cpus=4 --memory=8g -v /d/data:/home/jovyan/work -p 8888:8888 hcp4715/hddm jupyter notebook

完整工作流程图

1
2
3
4
5
6
7
8
9
10
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
1. 准备数据 │────▶│ 2. 生成命令 │────▶│ 3. 启动容器 │
│ (CSV 格式) │ │ (命令生成器) │ │ (CMD 运行) │
└─────────────────┘ └─────────────────┘ └─────────────────┘


┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
6. 保存结果 │◀────│ 5. 运行分析 │◀────│ 4. 打开 Jupyter│
│ (work 文件夹) │ │ (HDDM 代码) │ │ (浏览器访问) │
└─────────────────┘ └─────────────────┘ └─────────────────┘

参考资源

学术论文

  • Wiecki, T. V., Sofer, I., & Frank, M. J. (2013). HDDM: Hierarchical Bayesian estimation of the Drift-Diffusion Model in Python. Frontiers in Neuroinformatics, 7.
  • Pan, W., Geng, H., Zhang, L., et al. (2025). dockerHDDM: A User-Friendly Environment for Bayesian Hierarchical Drift-Diffusion Modeling. Advances in Methods and Practices in Psychological Science, 8(1).

在线资源


总结

使用 Docker 运行 HDDM 的优势:

方面 传统安装 Docker 方式
安装时间 2-4 小时 10 分钟
配置复杂度 零配置
环境一致性 易出错 完全一致
跨平台 困难 完美支持
卸载清理 繁琐 一键删除

通过本文介绍的命令生成工具,即使是零基础用户也能在几分钟内完成 HDDM 分析环境的搭建。希望这篇教程能帮助你顺利进行漂移扩散模型的数据分析!


💬 有问题? 欢迎在评论区留言,或查阅 HDDM 官方文档 获取更多帮助。


零基础 HDDM 数据分析完全指南:Docker 一键部署与实战
https://caizhenxin.github.io/2026/04/29/hddm-docker-tutorial-for-beginners/
作者
Cai Zhenxin
发布于
2026年4月29日
许可协议