实验任务的自适应设计优化

adop的Python项目详细描述


adopy

PyPIProject Status: Active – The project has reached a stable, usable state and is being actively developed.Travis CICodeCov

adopy是自适应设计优化的python实现(ado;myung,cavagnaro,&pitt,2013),它在实验中动态计算优化设计。它的模块化结构允许容易地集成到现有的实验代码中。

adopy支持python 3.5或更高版本,并且依赖于numpy、scipy和pandas。

功能

  • 基于网格的优化设计计算,仅使用三个类:adopy.Taskadopy.Modeladopy.Engine
  • 可为您自己的任务和模型轻松定制
  • 预先实现的任务和模型类,包括:
    • 2afc任务的心理测量功能估计(adopy.tasks.psi
    • 延迟折扣任务(adopy.tasks.ddt
    • 风险模糊任务下的选择(adopy.tasks.cra
  • 使用心理疗法进行实验的示例代码link

资源

(并非如此)快速入门指南

步骤0。在终端上安装一个副本

# Install the stable version from PyPI
pip install adopy

# Or install the developmental version from GitHub
git clone https://github.com/adopy/adopy.git
cd adopy
git checkout develop
pip install .

第一步。使用adopy.Task

定义任务

假设一个用户想要使用adopy完成一个任意的任务 变量(x1x2),参与者可以对每个变量进行二元选择 审判。然后,可以使用adopy.Task定义任务,如下所述:

fromadopyimportTasktask=Task(name='My New Experiment',# Name of the task (optional)designs=['x1','x2'],# Labels of design variablesresponses=[0,1])# Possible responses

第二步。使用adopy.Model

定义模型

为了预测党派的选择,这里我们假设一个logistic回归模型 用三个模型计算做出积极反应的概率 参数(b0b1b2):

如何计算概率p应该定义为一个函数:

importnumpyasnpdefcalculate_prob(x1,x2,b0,b1,b2):"""A function to compute the probability of a positive response."""logit=b0+x1*b1+x1*b2p_obs=1./(1+np.exp(-logit))returnp_obs

利用这些信息和函数,可以用 adopy.Model

fromadopyimportModelmodel=Model(name='My Logistic Model',# Name of the model (optional)params=['b0','b1','b2'],# Labels of model parametersfunc=calculate_prob)# A probability function

第三步。为设计变量和模型参数定义网格

由于adopy使用网格搜索来搜索设计空间和参数空间, 必须为设计变量和模型参数定义网格。 可以使用(设计变量或模型的)标签定义网格 参数)作为其关键点和相应网格点的数组 作为它的价值。

importnumpyasnpgrid_design={'x1':np.linspace(0,50,100),# 100 grid points within [0, 50]'x2':np.linspace(-20,30,100),# 100 grid points within [-20, 30]}grid_param={'b0':np.linspace(-5,5,100),# 100 grid points within [-5, 5]'b1':np.linspace(-5,5,100),# 100 grid points within [-5, 5]'b2':np.linspace(-5,5,100),# 100 grid points within [-5, 5]}

第四步。使用adopy.Engine

初始化引擎

使用到目前为止创建的对象,应该使用 adopy.Engine。它包含用于计算优化设计的内置函数 使用ADO。

fromadopyimportEngineengine=Engine(model=model,# a Model objecttask=task,# a Task objectgrid_design=grid_design,# a grid for design variablesgrid_param=grid_param)# a grid for model parameters

第五步。使用发动机计算设计

# Compute an optimal design using ADOdesign=engine.get_design()design=engine.get_design('optimal')# Compute a randomly chosen design, as is typically done in non-ADO experimentsdesign=engine.get_design('random')

第6步。在实验中收集观察结果

# Get a response from a participant using your own coderesponse=...

第7步。用观察值更新发动机

# Update the engine with the design and the corresponding responseengine.update(design,response)

第8步。重复步骤5至步骤7,直到实验结束

NUM_TRIAL=100# number of trialsfortrialinrange(NUM_TRIAL):# Compute an optimal design for the current trialdesign=engine.get_design('optimal')# Get a response using the optimal designresponse=...# Using users' own codes# Update the engineengine.update(design,response)

引文

如果您使用adopy,请将此软件包与特定版本一起引用。 它极大地鼓励贡献者继续支持adopy。

Yang, J., Ahn, W.-Y., Pitt., M. A., & Myung, J. I. (2019). ADOpy: A Python Package for Adaptive Design Optimization. Retrieved from https://adopy.org

参考文献

  • Myung,J.I.,Cavagnaro,D.R.,和Pitt,M.A.(2013年)。 自适应设计优化教程。 数学心理学杂志,57,53-67。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java GridLayout超出了它的大小   java为什么SSHJ的最大写入大小是32KB?   部署后,java无法查看网站。war文件到tomcat   java如何使用gradle将javafx应用程序部署为可执行jar或exe?   java比较HashMap中的键和值   使用注入java和spring boot的RestTemplate类进行单元测试   java如何在eclipse中找到maven项目的原型?   java继承和实用程序方法及变量   java在Joptionpane中显示多行?   当location==null时,java会更改按钮的可见性   java为什么Google Drive getExportLinks返回空值?   java在使用自定义消息完成for循环后引发异常   curl如何使用docker运行undertow java应用程序