加權離散型隨機變量,我有以下的數據幀:計算均值和方差爲R中
dat <- read.table(text=" X prob
1 1 0.1
2 2 0.2
3 3 0.4
4 4 0.3", header=TRUE)
是否有任何內置函數或calulate均值和方差爲R中離散型隨機變量優雅的方式?
加權離散型隨機變量,我有以下的數據幀:計算均值和方差爲R中
dat <- read.table(text=" X prob
1 1 0.1
2 2 0.2
3 3 0.4
4 4 0.3", header=TRUE)
是否有任何內置函數或calulate均值和方差爲R中離散型隨機變量優雅的方式?
在R中有一個weighted.mean
函數,而Hmisc包中有一堆wtd。*函數。
> with(dat, weighted.mean(X, prob))
[1] 2.9
require(Hmisc)
> wtd.var(x=dat$X, weights=dat$prob)
[1] Inf
# Huh ? On investigation the weights argument is suppsed to be replicate weights
# So it's more appropriate to use normwt=TRUE
> wtd.var(x=dat$X, weights=dat$prob, normwt=TRUE)
[1] 1.186667
Thomas Lumley的調查包提供的不僅僅是這個簡單化的例子。它具有處理複雜的加權方案爲各種統計建模程序的機制:
require(survey)
> dclus1<-svydesign(id=~1, weights=~prob, data=dat)
> v<-svyvar(~X, dclus1)
> v
variance SE
X 1.1867 0.7011
這些樣本的統計數據,而不是將抽象隨機變量來計算方差。這個結果似乎對於統計系統來說似乎是適當的,但可能不是一個概率作業問題的正確答案。
爲什麼這個方差與E(x^2) - E(x)^ 2'不同? –
那麼不同?由於概率權重被轉移到(),所以它低於'var(X)=> mean(dat $ X^2) - mean(dat $ X)^ 2 = [1] 1.25'就不足爲奇了。分配。 –
請閱讀幫助頁面。使用'normwt'運行正是你的建議。 –
我改變了行的名稱,使它們是唯一的,這是R中數據框的一個要求。 –