[Rd] rhyper has too high variance (PR#7314)
Bob Wheeler
bwheeler at echip.com
Tue Oct 26 14:38:33 CEST 2004
If one has phyper(x,m,n,k) then pghyper(x,k,m,m+n).
oehl_list at gmx.de wrote:
> Dear all,
>
> it looks like rhyper() gives wrong results compared to theory and compared
> to sample() and rghyper(SuppDists).
>
> Best regards
>
>
> Jens
>
>
>
> K <- 100
> J <- 60
> N <- K+J
> p <- K/N
> n <- 50
>
> nn <- 100000
>
> urn <- rep(0:1, c(J,K))
> x <- sapply(1:nn, function(i){
> sum(sample(urn, n))
> })
> y <- rhyper(nn, K,J, n)
>
> require(SuppDists)
> z <- rghyper(nn, a=K, k=n, N=N)
>
>
> # hypergeometric mean and variance
> p*n
> p*(1-p)*n*(N-n)/(N-1)
>
> # check we have parametrized ghyper correctly
> sghyper(a=K, k=n, N=N)[c("Mean", "Variance")]
>
> var(x)
> var(y) # wrong
> var(z)
>
> version
>
>
>
>
>>K <- 100
>>J <- 60
>>N <- K+J
>>p <- K/N
>>n <- 50
>>
>>nn <- 100000
>>
>>urn <- rep(0:1, c(J,K))
>>x <- sapply(1:nn, function(i){
>
> + sum(sample(urn, n))
> + })
>
>>y <- rhyper(nn, K,J, n)
>>
>>require(SuppDists)
>
> [1] TRUE
>
>>z <- rghyper(nn, a=K, k=n, N=N)
>>
>>
>># hypergeometric mean and variance
>>p*n
>
> [1] 31.25
>
>>p*(1-p)*n*(N-n)/(N-1)
>
> [1] 8.107311
>
>># check we have parametrized ghyper correctly
>>sghyper(a=K, k=n, N=N)[c("Mean", "Variance")]
>
> $Mean
> [1] 31.25
>
> $Variance
> [1] 8.107311
>
>
>>var(x)
>
> [1] 8.060095
>
>>var(y) # wrong
>
> [1] 8.61289
>
>>var(z)
>
> [1] 8.150472
>
>>version
>
> _
> platform i386-pc-mingw32
> arch i386
> os mingw32
> system i386, mingw32
> status
> major 2
> minor 0.0
> year 2004
> month 10
> day 04
> language R
>
>
>
>
>
>
> --
>
> ______________________________________________
> R-devel at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
--
Bob Wheeler --- http://www.bobwheeler.com/
ECHIP, Inc. ---
Randomness comes in bunches.
More information about the R-devel
mailing list