簡體   English   中英

R仿真中的參數估計

[英]Parameter Estimation in R Simulation

我對R相當陌生,並且正在探索仿真以估計參數n(整數)

1)Z是從N(0,1)開始的n個繪制的向量

2)max(Z)> 4的概率等於0.25

R中估計參數n以滿足這兩個條件的最佳方法是什么? 嘗試避免代碼中的循環或窮舉搜索時,我陷入了困境。 謝謝!

編輯:假定完全基於模擬的結果,而沒有嘗試進行分析,

我將創建一個像這樣的函數:

prob <- function(n) {
  sum(replicate(10000, max(rnorm(n))) > 4)/10000
}

為了說明一點, max(rnorm(n))) > 4將返回TRUEFALSE replicate調用執行該操作10000次。 然后我求平均值以獲得概率估計。

然后,我將檢查?optimise函數,以嘗試獲取n的估計值。 prob(n) = 0.25 ,您需要創建另一個具有最小值的函數,因此類似:

result <- function(n) abs(prob(n) - 0.25)

請注意,根據您選擇參數的方式,這可能需要很長時間才能運行。 首先測試一下,看看n值可能是合理的。

這是另一種(相關的)方法,它利用pnorm來為您提供N(0,1)的CDF。 因此pnorm(4)告訴您從N(0,1) <= 4繪制的概率,結果是1 - pnorm(4)將告訴我們繪制的概率大於4。 4,顯然,最大值大於4,因此我們只需要關注某個觀察值大於4的概率。

由於抽獎是獨立的,我們可以取積,因此n次抽獎中抽獎大於4的概率為1 - (pnorm(4)^n) 基於此,我們可以創建目標函數並求解:

# Minimize squared deviations
fopt <- function(n){(1 - pnorm(4)^n - .25)^2} 
# or .75 - pnorm(4)^n, but this is clearer

# I specify start and end points. We guess really wide
optimise(fopt, interval = c(100, 100000))
#> $minimum
#> [1] 9083.241
#> 
#> $objective
#> [1] 2.262374e-20

# Now check the result
(1 - pnorm(4)^9083.241)
#> [1] 0.25

我們看到我們得到9083.241的結果,該結果精確地為.25。 如果我們僅取整數結果(9083),則結果為0.24993943

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM