library(Deducer)
n.players <- 17
weight <- c(84,92,22,12,12,15,11,22,16,1,12,15,26,20,9,29,4)
quota <- sum(weight)/2+1
p <-n.players
n.cases <-factorial(p)
tab <- perm(1:p)
critical <- rep(0,n.cases)
for (i in 1:n.cases){
weight.sum <- cumsum(weight[tab[i,]])
critical[i] <- tab[i,which.max(weight.sum >= quota)]
}
table(critical)
power <- table(critical)/n.cases
round(power,3)
如果您需要有关Shapley Shubik力量指数的更多信息,请访问此处“http://en.wikipedia.org/wiki/Shapley%E2%80%93Shubik_power_index”
在这种情况下,我收到一条错误消息,因为代码基于大样本。我想通过以下两种方式解决问题:
计算一种与我的个人计算机一样多的案例(5年前我买了我的电脑。当时表现不佳)我检查处理时间(这很简单。我只是用程序“proc.time”)
通过使用MonteCarlo,我想近似索引,在这种情况下我也检查处理时间。
此外,我想比较way1和way2之间的索引和处理时间。
我该如何解决这个问题? (我无法找到扩大计算内存限制的包。即使我知道montecarlo的基本级别,我也不能将机制应用于R代码)
答案 0 :(得分:1)
您可以使用sample
生成随机排列,而不是枚举所有17个!他们。
n.cases <- 1e6
critical <- rep(0,n.cases)
for (i in 1:n.cases){
random_permutation <- sample( 1:n.players )
weight.sum <- cumsum( weight[ random_permutation ] )
critical[i] <- random_permutation[ which.max(weight.sum >= quota) ]
}
table(critical)
power <- table(critical) / n.cases
round(power, 3)