簡體   English   中英

如何在R中繪制階乘函數

[英]How to plot a factorial function in R

我正在嘗試繪制:

在此處輸入圖片說明

使用以下R代碼沒有成功:

N= seq(from=150, to=2000)
P=((factorial(60) / factorial(50))*(factorial(N-60) /factorial(N-150))) /(factorial(N) /factorial(N-100))
plot(N,P)

幾乎總是,涉及階乘的概率表達式是“ N select K”計算的一些結果:

在此處輸入圖片說明

但是通過階乘計算效率非常低,最重要的是,它在數值上不穩定。 使用factorial()看一下代碼: NaN

在R中, choose(N, K)函數可快速,穩定地計算“ N select K”。

現在,仔細檢查您給定的配方,它等同於:

choose(N-100, 50) / choose(N, 60)

因此,您可以執行以下操作:

P <- choose(N-100, 50) / choose(N, 60)
plot(N, P, type = "l")

在此處輸入圖片說明


跟進

嗨,這是一個非常有效的功能。 但是,該圖的均值,眾數和中位數與我在課程材料中針對同一圖的那些不匹配嗎? 平均值應該是727,Mode = 600,中位數= 679! 我如何從您建議的情節中獲得這些描述?

我對您的課程材料想做什么感到困惑。 您給出的概率是條件概率P(D | N) ,即隨機變量D的概率。 當我們針對N繪制P時。 因此,上面的圖不是概率質量函數! 然后,我們如何使用它為隨機變量N計算諸如均值,眾數和中位數之類的統計信息?

嗯,無論如何,既然您要求並堅持要得到答案,我們就假設這是隨機變量N的概率質量函數。 但是由於它不是一個真實的值,因此sum(P)甚至不是1。我們實際上有sum(P) = 3.843678e-12 因此,要將其用作適當的概率質量函數,我們需要首先對其進行歸一化。

P <- P / sum(P)

現在P總和為1。

為了計算均值,我們這樣做

sum(N * P)
# [1] 726.978

為了計算模式,我們要做

N[which.max(P)]
# 599

為了計算中位數,我們這樣做

N[which(cumsum(P) > 0.5)[1]]
# 679

暫無
暫無

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

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