如何计算NetLogo中的相关系数?

时间:2017-07-27 08:52:49

标签: netlogo

我想看看在多个滴答之后两个乌龟变量之间是否存在相关性。所以我们有海龟自己[a b],它们在100个蜱之后是否相关?

我可以导出这些并在电子表格中进行计算,但似乎NetLogo应该更容易实现,甚至可以更简单地使用矩阵扩展的回归功能(回归a b并输出beta系数)。

但我无法弄清楚如何创建一个由两列组成的矩阵,所有a和b值来自海龟。

所以:

  1. 有没有人有一些现成的代码来计算Pearson系数?

  2. 如何创建海龟变量矩阵?

  3. 谢谢!

1 个答案:

答案 0 :(得分:2)

请参阅stats NetLogo扩展程序(https://github.com/cstaelin/Stats-Extension

示例:

使用扩展程序:

extensions [ stats ]

海龟设置:

to setup
  clear-all
  crt 5 [ fd 10 ]
end

计算:

to go
  ; Create some data as nested list (two variables for each turtle):
  let data [(list xcor ycor)] of turtles

  ; Create a stats table:
  let tbl stats:newtable-from-row-list data

  ; Calculate a correlation matrix with `stats:correlation`:
  let cor-list stats:correlation tbl

  ; In 2x2 case you can use the second element from the first row to get the coefficient:

  print item 0 item 1 cor-list
end

使用矩阵

使用矩阵扩展:

extensions [ matrix ]

创建一个矩阵:

; data is same nested list as in previous example
let m matrix:from-row-list data

; apply linear regression model
let m-reg matrix:regress m

; there is R^2 in the first element of the second element of `m-reg`
print item 0 item 1 m-reg

请注意,stats:correlation计算R,matrix:regress计算R ^ 2.