netlogo 中的敏感性分析(多次模拟的平均值)
sensitivity analysis (mean of multiple simulations) in netlogo
我有几个指标,比如变量的均值和标准差。
500 个刻度后,模型停止。
我想模拟这个模型,例如,100 次并绘制指标的平均值和 CI。
不使用 python 或 R,有什么方法可以在 netlogo 中做到这一点?
是的,您可以使用 BehaviorSpace 运行 您的模型 100 次,将您想要的结果保存到文件系统文件中,然后让不同的 netlogo 程序(或过程)读入数据和绘图它。这是一个示例写作部分,计算 运行 个数字的均值和标准差,并在十个刻度停止后。
globals [ delist demean destd fname ]
to setup
clear-all
set fname "myfile.txt"
set delist []
reset-ticks
end
to go
if ( ticks >= 10 ) [
;; show delist
set demean mean delist;
set destd standard-deviation delist;
export-data
;;print (word "mean = " demean " stdev= " destd )
stop
]
set delist lput random 100 delist
tick
end
to export-data
if not (file-exists? fname ) [
file-open fname
file-print ( word "mean stdev" );
file-flush
file-close
]
file-open fname
file-print ( word demean " " destd )
file-flush
file-close
end
to clear-file
if (file-exists? fname ) [
file-delete fname
]
end
这是读取上面 myfile.txt 并绘制它的示例代码。
假设一个绘图小部件报告 demean 和 destd
globals [ delist demean destd fname ]
to setup
clear-all
set fname "myfile.txt"
print " This file begins as follows:"
set delist []
ifelse (file-exists? fname ) [
file-open fname
if not file-at-end?
[ let str file-read-line
print str
]
]
[ print " expected file doesn't exits " ]
reset-ticks
end
to go
if file-at-end? [ print "Data has been all read." file-close stop]
set demean file-read
set destd file-read
print (word "mean = " demean " , std-dev = " destd )
tick
end
我有几个指标,比如变量的均值和标准差。
500 个刻度后,模型停止。
我想模拟这个模型,例如,100 次并绘制指标的平均值和 CI。
不使用 python 或 R,有什么方法可以在 netlogo 中做到这一点?
是的,您可以使用 BehaviorSpace 运行 您的模型 100 次,将您想要的结果保存到文件系统文件中,然后让不同的 netlogo 程序(或过程)读入数据和绘图它。这是一个示例写作部分,计算 运行 个数字的均值和标准差,并在十个刻度停止后。
globals [ delist demean destd fname ]
to setup
clear-all
set fname "myfile.txt"
set delist []
reset-ticks
end
to go
if ( ticks >= 10 ) [
;; show delist
set demean mean delist;
set destd standard-deviation delist;
export-data
;;print (word "mean = " demean " stdev= " destd )
stop
]
set delist lput random 100 delist
tick
end
to export-data
if not (file-exists? fname ) [
file-open fname
file-print ( word "mean stdev" );
file-flush
file-close
]
file-open fname
file-print ( word demean " " destd )
file-flush
file-close
end
to clear-file
if (file-exists? fname ) [
file-delete fname
]
end
这是读取上面 myfile.txt 并绘制它的示例代码。 假设一个绘图小部件报告 demean 和 destd
globals [ delist demean destd fname ]
to setup
clear-all
set fname "myfile.txt"
print " This file begins as follows:"
set delist []
ifelse (file-exists? fname ) [
file-open fname
if not file-at-end?
[ let str file-read-line
print str
]
]
[ print " expected file doesn't exits " ]
reset-ticks
end
to go
if file-at-end? [ print "Data has been all read." file-close stop]
set demean file-read
set destd file-read
print (word "mean = " demean " , std-dev = " destd )
tick
end