2017-08-09 170 views
1

我試圖從真實數據生成分佈。我使用R包tdistrplus來獲取分佈的參數。 R包中的分佈是:帕累託,對數正態,對數邏輯和伯爾。但是,我無法在NetLogo中找到這些發行版。我需要爲他們寫一個函數。我已經找到帕累託和對數正態分佈在其他論壇:使用Log-logistic和Burr分佈生成隨機數

;; Pareto distribution (Pareto from R package: tdistrplus) 
to-report random-pareto [alpha mm] 
report mm/(random-float 1^(1/alpha)) 
end 

;; lognormal distribution (lnorm from R package: tdistrplus) 
to-report log-normal [mu sigma] 
let beta ln (1 + ((sigma^2)/(mu^2))) 
let x exp (random-normal (ln (mu) – (beta/2)) sqrt beta) 
report x 
end 

但是,我無法找到日誌,物流和毛刺發行完成的功能或隨機數的表達,只有概率密度函數從中我不知道該如何表達X(Matchad找不到解決方案,或者我錯誤地使用它)。

我會很感激任何建議(使我的博士論文需要基於真實數據進行仿真)。

先進的謝謝

+0

你想要什麼?從R中的這些分佈生成隨機數據? –

+0

我想通過使用適合實際數據的分佈來模擬需求變化,從而在NetLogo中對供應鏈進行建模。 在R中,我已經使用package tdistrplus來獲取Burr和log-logistics分佈的係數。我想在NetLogo中輸入這些係數來模擬我的真實數據。但是,我不知道Burr和Log-logistics在Netlogo中生成隨機數據的功能,它們是內置的R。輸出R: 毛刺(shape1 = 0.9283009,shape2 = 2.3864253,rate = 1.0484444) log-logistics(2.3224812 = 0.559 4916,scale = 0.9898947) –

+0

使用Burr和log-logistics分佈在NetLogo中生成隨機數據 –

回答

2

Wrt log-logistics,逆CDF方法應該可以正常工作。從wiki

to-report random-loglogistics [alpha beta] 
    let r random-float 1 
    let q r/(1-r) 
    let x alpha exp (ln (q)/beta) 
    report x 
end 

我趕緊看着毛刺的採樣以下約定 - 可能通過逆CDF以及完成。繼wiki

to-report random-burr [c k] 
    let r random-float 1 
    let q exp (- ln(r)/k) - 1 
    let x exp (ln(q)/c) 
    report x 
end 

UPDATE

我的NetLogo曾經使用很久以前的事,所以我們只寫一些公式,你可以重寫代碼。

登錄物流

CDF(X | α,β)=(X/α)β /(1 +(X/α)β

逆CDF裝置樣品x使用

x = CDF -1(r),其中r是隨機均勻U(0,1)

因此,(X/α)β = Q = R /(1-R),以及 X = α q 1/β

伯爾

CDF(X | C,K)= 1 - (1 + X Ç-k

逆CDF意味着使用樣品x

X = CDF -1(r),其中r是隨機的一致的U (0,1)

(1 + X ç-k = R

(1 + X ç)=(1/R)的1/k

X =((1/R)的1/k - 1)1/C

請檢查我的數學,並在代碼所有這些權力通過expln表示。約定根據維基百科

+0

非常感謝您的幫助:) –

+0

我只是有一個問題。隨機浮動需要一個輸入,一個數字。我應該怎樣設置它?我認爲這很重要,因爲有時我會在毛刺分佈中發現錯誤,指出「不能取-0.008的對數。」 –

+0

@ValentasGruzauskas對不起,曾經使用NetLogo一次。應該是'隨機浮動1'。 –