二項分布
生成二項分布概率
s <- 0:60
prob <- dbinom(s, size = 60, prob = 1/6)
-
s <- 0:60
:生成 0 到 60 之間的整數,表示可能的成功次數。 -
dbinom(s, size = 60, prob = 1/6)
-
dbinom(x, size, prob)
計算二項分布的概率質量函數(PMF),即:
P ( X = s ) = ( 60 s ) ( 1 / 6 ) s ( 5 / 6 ) 60 ? s P(X = s) = \binom{60}{s} (1/6)^s (5/6)^{60-s} P(X=s)=(s60?)(1/6)s(5/6)60?s -
size = 60
:表示總試驗次數(即 60 次)。 -
prob = 1/6
:每次試驗的成功概率(如擲骰子得到 1 的概率為 1/6)。
-
2. 用 Base R 繪圖
plot(s, prob, type = "h")
plot()
:繪制散點圖。type = "h"
:表示繪制豎直線條,類似于直方圖。
3. 用 ggplot2 繪圖
dat <- data.frame(x = s, y = prob)
ggplot(dat, aes(x = s, y = y, xend = s, yend = 0)) +geom_segment() + theme_minimal()
代碼解析
-
data.frame(x = s, y = prob)
:創建數據框,包含x
軸的成功次數s
和y
軸的概率prob
。 -
ggplot(dat, aes(x = s, y = y, xend = s, yend = 0))
x = s, y = y
:將s
作為橫坐標,prob
作為縱坐標。xend = s, yend = 0
:繪制從(s, prob)
到(s, 0)
的豎直線段。
-
geom_segment()
:繪制豎線(類似于 Base R 的type = "h"
)。 -
theme_minimal()
:應用簡潔主題,去掉多余背景。
正態分布概率密度計算
dnorm(10, 10, 0.1)
-
用于計算
正態分布的概率密度函數
x
是你想要計算的點。mean
是正態分布的均值(平均值)。sd
是正態分布的標準差。
所以,dnorm(10, 10, 0.1)
計算的是在均值為 10,標準差為 0.1 的正態分布下,點 x = 10
的概率密度值。
數學公式:
正態分布的概率密度函數(PDF)公式為:
f ( x ) = 1 2 π σ 2 exp ? ( ? ( x ? μ ) 2 2 σ 2 ) f(x) = \frac{1}{\sqrt{2\pi \sigma^2}} \exp \left( - \frac{(x - \mu)^2}{2\sigma^2} \right) f(x)=2πσ2?1?exp(?2σ2(x?μ)2?)
其中:
- x 是你要求概率密度的值。
- μ 是正態分布的均值。
- σ 是標準差。
3.989423
pdf是可以大于1的,因為是概率密度而不是概率
生成正態分布密度范圍
x <- seq(from = mu - 4 * sig, to = mu + 4 * sig,length.out = 128)
-
mu
代表正態分布的均值(mean)。 -
sig
代表標準差(standard deviation)。 -
seq(from = ..., to = ..., length.out = ...)
是 R 中用于生成數值序列的函數。
from
是序列的起始值。to
是序列的結束值。length.out
指定生成的序列包含的元素個數。
功能:
- 該代碼生成了一個從
mu - 4 * sig
到mu + 4 * sig
的序列。通常,正態分布的95%數據都落在均值 ± 2倍標準差的范圍內,所以mu ± 4 * sig
給出了一個比 95% 范圍更廣的范圍(約 99.99%)。 length.out = 128
指定生成的序列包含128個點,這些點均勻分布在這個范圍內。
極大似然估計二項分布
n <- 50
y <- 10 neg_log_likelihood <- function(p) {-dbinom(y, n, p, log = TRUE)
}initial_guess <- 0.5result <- optim(initial_guess, neg_log_likelihood, method = "Brent", lower = 0, upper = 1)mle_proportion_boys <- result$par
mle_proportion_boys
詳細解釋:
- 給定的數據:
n <- 50
:總共50個人。y <- 10
:其中10個是男孩。
- 負對數似然函數的定義:
neg_log_likelihood
:該函數定義了給定男孩比例 ppp 下的負對數似然函數,表示為 ?log?(P(y boys)),其中 P(y boys) 是二項分布的概率質量函數dbinom(y, n, p)
。dbinom(y, n, p, log = TRUE)
返回的是概率值的對數。
- 優化:
- 使用
optim()
函數進行最大化,初始猜測是initial_guess <- 0.5
,即假設男孩的比例是50%。 optim()
方法使用的是 “Brent” 方法,這是一個適合一維問題的優化算法,lower = 0
和upper = 1
限制了男孩比例 ppp 的取值范圍在 [0, 1] 之間。
- 使用
- 得到的結果:
result$par
提供了使負對數似然最小的比例,這就是我們想要的最大似然估計值(MLE)。
核密度估計
density.cbd <- density(x = distance.cbd, bw = 1.25, from = 0, to = 50)
代碼解釋:
density(x = distance.cbd, bw = 1.25, from = 0, to = 50)
x = distance.cbd
:distance.cbd
是輸入數據,可能是一個包含觀測值的向量。bw = 1.25
:帶寬(bandwidth)是KDE中的一個重要參數,決定了估計曲線的平滑度。較小的帶寬會使曲線更接近數據點,而較大的帶寬會使曲線更加平滑。bw = 1.25
指定了帶寬為1.25。from = 0
和to = 50
:這些參數定義了估計的范圍,即從0到50的區間內進行核密度估計。