在R中模拟样本,存储样本并计算检验统计量
我使用蒙特卡罗算法,使用反演采样生成几何分布大小为100的数据样本:在R中模拟样本,存储样本并计算检验统计量,r,montecarlo,resampling,chi-squared,R,Montecarlo,Resampling,Chi Squared,我使用蒙特卡罗算法,使用反演采样生成几何分布大小为100的数据样本: gi.cdf.geom <- function(p,u){ k <- c() k <- ceiling(log(1-u)/log(1-p)) - 1 return(k) } gi.cdf.geom使用replicate。例如: (x <- replicate(3,rgeom(10,50/239))) [,1] [,2] [,3] [1,] 5 3 12 [2,] 1
gi.cdf.geom <- function(p,u){
k <- c()
k <- ceiling(log(1-u)/log(1-p)) - 1
return(k)
}
gi.cdf.geom使用replicate
。例如:
(x <- replicate(3,rgeom(10,50/239)))
[,1] [,2] [,3]
[1,] 5 3 12
[2,] 15 2 3
[3,] 5 5 0
[4,] 4 2 1
[5,] 13 0 8
[6,] 0 3 0
[7,] 3 1 6
[8,] 0 6 2
[9,] 0 4 4
[10,] 8 4 1
但是我怎样才能在表达式参数中放入两个表达式呢?因为我需要它每次从均匀分布中随机抽取100个样本,并使用每个样本计算函数gi.cdf.geom您可以将runif
放入您的函数调用中:gi.cdf.geom(p,runif(n))
。否则,可以将多个表达式放在大括号中,并用分号分隔
for(i in 1:1000){
n=100
p=50/239
{
u=runif(n)
values <- gi.cdf.geom(p,u)
}
print(values)
(x <- replicate(3,rgeom(10,50/239)))
[,1] [,2] [,3]
[1,] 5 3 12
[2,] 15 2 3
[3,] 5 5 0
[4,] 4 2 1
[5,] 13 0 8
[6,] 0 3 0
[7,] 3 1 6
[8,] 0 6 2
[9,] 0 4 4
[10,] 8 4 1
apply(x,2,chisq.test)
[[1]]
Chi-squared test for given probabilities
data: newX[, i]
X-squared = 47.566, df = 9, p-value = 3.078e-07
[[2]]
Chi-squared test for given probabilities
data: newX[, i]
X-squared = 10, df = 9, p-value = 0.3505
[[3]]
Chi-squared test for given probabilities
data: newX[, i]
X-squared = 37.3243, df = 9, p-value = 2.303e-05
Warning messages:
1: In FUN(newX[, i], ...) : Chi-squared approximation may be incorrect
2: In FUN(newX[, i], ...) : Chi-squared approximation may be incorrect