簡體   English   中英

如何使用 R 將紙上定義的統計模型“翻譯”到計算機上?

[英]How can I “translate” a statistical model defined on paper to the computer using R?

我最初在stats.stackexchange.com上發布了這個問題,但由於專注於編程而被關閉。 希望我能在這里得到任何幫助。

為了簡單起見,我不會在這里放很多理論細節,但我的最終目標是使用R實現一個隱馬爾可夫模型。

雖然我對理論模型構建很好,但當我嘗試實現它時,我意識到我不了解計算統計的基本知識。 我的問題是朝着這個方向發展的。

$X$ $Y$ 是隨機變量,使得在此處輸入圖片說明 $Y|X \\sim \\mathcal{N}(x, \\sigma^2)$ , 和$p \\in [0, 1]$ $\\sigma^2 \\in [0, +\\infty)$ . 如果$\\pi(\\cdot)$ 表示分布我如何計算

在此處輸入圖片說明

使用R ?

我的意思是,這些分布(一種離散和一種連續)乘法的確切含義是什么? 我怎樣才能使用R做到這一點? 答案顯然是一個函數$x$ ,但它是如何在我的代碼中表示的?

如果有什么變化$Y|X$ 也是離散的? 例如, 在此處輸入圖片說明 , 和$q \\in [0, 1]$ . 它將如何影響已實現的代碼?

我知道我的問題不是很具體,但我對如何開始感到非常迷茫。 我對這個問題的目標是了解如何將我寫在紙上的內容“翻譯”到計算機上。

翻譯

這些方程描述了如何計算X的概率分布,給定Y=y的觀測值以及參數psigma值。 最終,您希望實現一個函數p_X_given_Y ,該函數采用Y值並返回X的概率分布。 一個好的開始是實現表達式的 RHS 中使用的兩個函數。 就像是,

p_X <- function (x, p=0.5) { switch(as.character(x), "0"=p, "1"=1-p, 0) }

p_Y_given_X <- function (y, x, sigma=1) { dnorm(y, x, sd=sigma) }

請注意,這里psigma是任意選取的。 然后可以使用這些函數來定義p_X_given_Y函數:

p_X_given_Y <- function (y) {
  # numerators: for each x \in X
  ps <- sapply(c("0"=0,"1"=1), 
               function (x) { p_X(x) * p_Y_given_X(y, x) })

  # divide out denominator
  ps / sum(ps)
}

可以像這樣使用:

> p_X_given_Y(y=0)
#         0         1 
# 0.6224593 0.3775407

> p_X_given_Y(y=0.5)
#   0   1 
# 0.5 0.5 

> p_X_given_Y(y=2)
#         0         1 
# 0.1824255 0.8175745 

這些數字應該具有直觀意義(假設p=0.5 ): Y=0更有可能來自X=0Y=0.5同樣可能來自X=0X=1等。這只是一種方式實現它,其中的想法是返回“X 的分布”,在這種情況下,它只是一個命名的數字向量,其中名稱(“0”、“1”)對應於 X 的支持,以及值對應於概率質量。

一些替代實現可能是:

  • 一個p_X_given_Y(x,y)也為x取值並返回相應的概率質量
  • 一個p_X_given_Y(y)返回另一個函數,該函數接受一個x參數並返回相應的概率質量(即概率質量函數)

暫無
暫無

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

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