Netlogo 中的 Herfindahl 索引代码
Herfindahl index code in Netlogo
我在 Netlogo 中编写 Herfindahl 索引时遇到问题。我想让 Netlogo 计算它。我无法告诉程序以下公式:
https://en.wikipedia.org/wiki/Herfindahl_index#Formula
我要Netlogo举报并策划。请帮助:-s.
这是一个完整的工作示例。出于您的目的,您只需要 calc-HI
过程(并记住在您的 go
过程中调用它),但我已经为您提供了一个单独的模型,因此您可以自己测试它。测试方法是在命令中心运行 setup
,然后运行 go
然后show HI
。通过检查单个海龟,您可以看到它们的变量值,并使用计算器来检查匹配的 HI 值。
globals [ HI ]
turtles-own [ val ]
to setup
clear-all
create-turtles 3
[ setxy random-xcor random-ycor
set val random 5
]
reset-ticks
end
to go
set HI calc-HI
tick
end
to-report calc-HI
let num count turtles
let total sum [ val ] of turtles
let herf sum [ ( val / total ) ^ 2 ] of turtles
report herf
end
要绘图,您需要做的就是在绘图小部件中 plot HI
。
假设您有一个使用百分比表示的市场份额列表。将每个市场份额映射到正方形并求和:
;;e.g. let market-shares (list .5 .5)
to-report calculate-herfindahl [market-shares]
report (sum (map [? * ?] market-shares))
end
如果要按实际份额计算份额。将每个份额映射到一个百分比,然后应用上面的公式:
;;e.g. let market-shares (list 30 40)
to-report calculate-herfindahl [market-shares]
let market-size sum market-shares
report (sum (map [(? / market-size) ^ 2] market-shares))
end
我在 Netlogo 中编写 Herfindahl 索引时遇到问题。我想让 Netlogo 计算它。我无法告诉程序以下公式: https://en.wikipedia.org/wiki/Herfindahl_index#Formula
我要Netlogo举报并策划。请帮助:-s.
这是一个完整的工作示例。出于您的目的,您只需要 calc-HI
过程(并记住在您的 go
过程中调用它),但我已经为您提供了一个单独的模型,因此您可以自己测试它。测试方法是在命令中心运行 setup
,然后运行 go
然后show HI
。通过检查单个海龟,您可以看到它们的变量值,并使用计算器来检查匹配的 HI 值。
globals [ HI ]
turtles-own [ val ]
to setup
clear-all
create-turtles 3
[ setxy random-xcor random-ycor
set val random 5
]
reset-ticks
end
to go
set HI calc-HI
tick
end
to-report calc-HI
let num count turtles
let total sum [ val ] of turtles
let herf sum [ ( val / total ) ^ 2 ] of turtles
report herf
end
要绘图,您需要做的就是在绘图小部件中 plot HI
。
假设您有一个使用百分比表示的市场份额列表。将每个市场份额映射到正方形并求和:
;;e.g. let market-shares (list .5 .5)
to-report calculate-herfindahl [market-shares]
report (sum (map [? * ?] market-shares))
end
如果要按实际份额计算份额。将每个份额映射到一个百分比,然后应用上面的公式:
;;e.g. let market-shares (list 30 40)
to-report calculate-herfindahl [market-shares]
let market-size sum market-shares
report (sum (map [(? / market-size) ^ 2] market-shares))
end