首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多项逻辑/模型选择[Net徽标]

多项逻辑/模型选择[Net徽标]
EN

Stack Overflow用户
提问于 2014-04-14 19:35:28
回答 1查看 396关注 0票数 2

我用多项式logit模型作为概率函数来模拟一组特定代理的选择,当我计算了P1、P2和P3的概率以及如何使用它们来实际建模选择时,我的问题就出现了。我的想法是使用类似于模型库中的中奖例子,但问题是,在这种情况下,概率不是设定的,而是对每一个滴答的变化,即使P1有最低的机会发生,它在下一次迭代中可能有最高的机会。谢谢你的帮助。

ps。多项式逻辑的Eq = {exp(utilityik) \sum exp(utilityjk)}。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-15 00:31:26

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

代码语言:javascript
复制
...
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
  ]
]

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

代码语言:javascript
复制
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

您可以如下所示:

代码语言:javascript
复制
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 ]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23068736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档