0

次のデータフレームがあります。

dat <- read.table(text="  X prob
1 1  0.1
2 2  0.2
3 3  0.4
4 4  0.3", header=TRUE)

Rの離散確率変数の平均と分散を計算する組み込み関数またはエレガントな方法はありますか?

4

1 に答える 1

3

ベースRにはweighted.mean関数があり、Hmiscパッケージにはw​​td.*関数がたくさんあります。

> 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

これらは、抽象的なランダム変数に対して計算される分散ではなく、標本統計です。この結果は、統計システムには適しているように見えますが、確率の宿題の質問に対する正しい答えではない可能性があります。

于 2013-01-06T22:39:42.573 に答える