多项式 Logit / 建模选择 [Netlogo]

2024-02-10

我使用多项式 Logit 模型作为概率函数来对一组特定代理的选择进行建模,当我计算出 P1、P2 和 P3 的概率以及如何使用它们来实际建模时,我的问题就出现了选择。我的想法是使用模型库中的彩票中奖示例之类的东西,但问题是,在这种情况下,概率并未设置,而是针对每个刻度进行更改,即使 P1 发生的机会最低,但它在下一次迭代。 感谢您的帮助。

附:对于每种情况,多项式 Logit 的等式为 P{ik}= {exp(utilityik) \sum exp(utilityjk)}。

to flightchoice-business

let flight-time1 mean [time1] of airline1
let airfare-airline1 mean [airfare] of airline1

set beta1 .8
set beta2 .2

set utility1 beta1 * (airfare-airline1) + beta2 * abs((time - flight-time1) * 10)

let flight-time2 mean [time1] of airline2
let airfare-airline2 mean [airfare] of airline2

set beta1 .8
set beta2 .2

set utility2 beta1 * (airfare-airline2) + beta2 * abs((time - flight-time2) * 10)

let flight-time3 mean [time1] of airline3
let airfare-airline3 mean [airfare] of airline3

set beta1 .8
set beta2 .2

set utility3 beta1 * (airfare-airline3) + beta2 * abs((time - flight-time3) * 10)

let cumulsum exp(utility1) + exp(utility2) + exp(utility3)

let P1 exp(utility1) / cumulsum

let P2 exp(utility2) / cumulsum

let P3 exp(utility3) / cumulsum

let buy random-float P1 + P2 + P3




end

你走在正确的轨道上。您的代码应继续如下:

...
let buy random-float P1 + P2 + P3
ifelse buy < P1 [
  do-stuff-with-P1
] [
  ifelse buy < P1 + P2 [
    do-stuff-with-P2
  ] [
    do-stuff-with-P3
  ]
]

您可以使用一个带有列表的函数来概括这一点,在我看来,它更好一些:

to-report weighted-random [ weights ]
  let pick random-float sum weights
  let total 0
  let i 0
  foreach weights [
    set total total + ?
    if pick < total [ report i ]
    set i i + 1
  ]
end

您可以按如下方式使用它:

let buy weighted-random (list P1 P2 P3)
if buy = 0 [ do-stuff-with-P1 ]
if buy = 1 [ do-stuff-with-P2 ]
if buy = 2 [ do-stuff-with-P3 ]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多项式 Logit / 建模选择 [Netlogo] 的相关文章

  • NETLOGO:使用上一个刻度的变量

    是否有一些原语可以使用前一个刻度的变量值 我尝试计算一个代理的 价格 变量 我的意思是使用包含其他代理的 价格 变量但来自上一个刻度的公式 不 NetLogo 中没有内置方法可以执行此操作 您最好的选择可能是创建一个名为以下内 容的变量va
  • 在 NetLogo 中使用向量

    如何在 NetLogo 中定义加法或减法向量 它似乎没有任何与之相关的数据类型 我在这里所说的矢量是指乌龟的速度 netlogo 中是否有支持此功能的扩展 我找不到 我不知道提供矢量的扩展 但在 NetLogo 本身中进行编码所涉及的数学通
  • Netlogo 发芽的海龟间隔不到一处

    我想将海龟放置在每个黑色斑块上 下图 这样海龟之间就没有间隙 我现在使用的代码 ask patches with pcolor black sprout dead turtles wall agents set color red 这给出了
  • 如何计算两个补丁之间的距离?

    我需要找到代理前面的补丁与某个补丁 目标 之间的最小距离 以便选择能够创建最佳 最短 路径的补丁 原始的distance仅需要一个参数 因此我无法按原样使用该函数 The distance原语只需要一个参数 是的 但它是一个 补丁或海龟原语
  • 如何在大空间范围内加速最小成本路径模型

    继从如何提高最低成本路径模型的模拟速度 https stackoverflow com questions 21839462 how can i increase speed up simulation of my least cost p
  • 如何在 netlogo 上创建计时器?

    对于我的迷宫项目 我想创建一个监视器按钮来跟踪海龟从开始到结束所需的时间 我该如何为计时器编写代码 查看reset timer and timer并在文档中 在迷宫设置期间 执行reset timer 在迷宫运行过程中 您可以使用以下命令检
  • 内存:在表中存储多个补丁的补丁变量

    我正在创建特定于海龟的表 在其中存储补丁坐标 模拟年份 全局变量根据刻度数设置为 1 2 或 3 以及表示可用资源的补丁变量 我已经成功地编写了一个表的代码 该表包含当前补丁的这些值 但我一直试图对其进行缩放 以便海龟在每个时间步都为其所有
  • 根据区域大小在 NetLogo 中间隔代理

    我正在尝试在 NetLogo 中开发一个模型 其中动物代理将在每次模型启动时随机分布在空间中 然而 动物是有领地意识的 关于如何让动物从一定大小的圆形区域开始 可以与其他动物在一定程度上但不完全重叠 有什么建议吗 下面是我开始的代码片段 但
  • Netlogo HPC CPU 使用百分比增加

    我通过以下方式使用无头 NetLogo 将作业提交到 HPC 服务器code bin bash N r20p q all q pe mpi 24 home abhishekb netlogo netlogo 5 1 0 netlogo he
  • NetLogo 高效创建任意度数分布的网络

    这是一个后续问题NetLogo 创建固定数量链接的有效方法 https stackoverflow com questions 32967388 netlogo efficient way to create fixed number of
  • 如何使用轮盘赌选择最多数量的海龟

    在我的模型中 海龟有两种性别 雄性有两种潜在的策略 雌性会计算一定半径内雄性的数量 我希望雌性根据两种雄性策略的相对频率来权衡从雄性组中选择的概率 无需替换 我已经有了从男性中选择概率的代码 matingPoolProbAnad and m
  • 如何正确绘制变量

    我尝试查看文档 但没有找到我需要的答案 所以我在这里问 例如 我有 15 只海龟 这个数字可能会有所不同 我需要将它们的变量 例如收入 绘制到一个图中 我知道我可以通过命令绘制 1 个代理的变量 plot revenue of turtle
  • 在 NetLogo 中控制海龟的生命

    在一个项目中 我正在 NetLogo 中开发一个模拟来处理狗和人类的狂犬病 我有一些乌龟 人类和狗 可以接种疫苗 也可以不接种 一开始我创造了一只患有狂犬病的狗 根据疾病的阶段 1或2 它有一定的概率将疾病传播给其他狗 最后 狗可能会因瘫痪
  • 从 RNetLogo 加载带有扩展的 Netlogo 模型

    我正在尝试使用 RNetLogo 在无头模式下加载 Netlogo 模型 该模型使用 rnd 扩展 该扩展通过以下方式添加到模型中extensions rnd 如果我尝试加载模型NLLoad model path 我收到此错误 NLLoad
  • 如何通过 GitHub 共享 NetLogo 模型

    这个非常有用的问题 和答案 https stackoverflow com questions 37817135 how to share a netlogo model online 37873761 comment67148764 37
  • 如何存储/计算单个簇大小并在 NetLogo 中绘制它们

    我有一个生成黄色斑块簇的模型 我有兴趣查看簇大小的频率分布 为此 我从 NetLogo 代码库中的 补丁集群示例 中选择了代码 它似乎在查找簇方面起作用 参见下面的照片 尽管我希望它不计算簇中的绿色斑块 但我不知道如何获取大小 或斑块计数
  • RNetlogo 和 NetLogo 5.3 错误

    我一直在 NetLogo 5 2 1 中使用 RNetLogo 没有出现任何问题 现在我使用 NetLogo 5 3 并收到此错误 gt library RNetLogo gt nl path lt Applications NetLogo
  • 来自 links-own 的参数值

    我需要帮助 所以我想将代理拥有的参数指定为链接拥有的参数值的平均值 frienships own strength household own influence factor to create influence if friendsh
  • NetLogo:如何对列表执行多项操作(查找、获取、替换、删除、搜索列表中的元素,......)

    我是 NetLogo 的新手 我想知道是否有对列表进行操作的完整参考 除了 Netlogo 字典之外 我还阅读了这里的大部分帖子 但例如 如果我需要一个数字对列表 例如 1 2 2 2 2 3 当我搜索时 member 3 thislist
  • 在 Netlogo 中将函数作为参数传递

    在许多其他编程语言中 您可以将一个函数作为参数传递给另一个函数并从该函数内调用它 无论如何 在 Netlogo 中可以做到这一点吗 比如下面这样 x y z are all ints to report f x y z report x y

随机推荐