我是 Stan 的新手,我正在努力理解如何使用不同的變數宣告樣式的差異。特別是,我很困惑什么時候應該在變數型別后面加上方括號,什么時候應該在變數名后面加上方括號。例如,給定int<lower = 0> L; // length of my data,讓我們考慮:
real N[L]; // my variable
相對
vector[L] N; // my variable
據我了解,兩者都將變數 N?? 宣告為長度為 L 的向量。兩者之間的唯一區別是第一種方法指定變數型別嗎?它們可以互換使用嗎?它們是否應該屬于 Stan 代碼的不同部分(例如,datavsparameters或model)?
感謝您的解釋!
uj5u.com熱心網友回復:
real name[size] 并且vector[size] name可以互換使用。它們在內部以不同的方式存盤,因此您可以使用其中一種獲得更好的性能。一些操作也可能僅限于一個和另一個(例如向量乘法),并且回圈它們的最佳順序會發生變化。例如,matrix對于一個二維陣列,先回圈行比先回圈列更有效,但如果你有一個更具體的例子,這些會出現。閱讀本文的方法是:
real name[size];
手段name是一個型別的陣列real,所以一堆reals存盤在一起。
vector[size] name;
表示 name 是一個 size 的向量,size也是一堆實數存盤在一起。但vectorSTAN 中的資料型別基于eigenc 庫 (c ) 并允許進行其他操作。
您還可以像這樣創建向量陣列:
vector[N] name[K];
這將產生一個Ksize 的向量陣列N。
底線:您可以使用vectoror運行任何模型real,但它們在計算效率上不一定相同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/484420.html
上一篇:設定乳膠變數并重用它
