r2dtable列联表过于集中
我使用R的r2dtable列联表过于集中,r,categorical-data,contingency,R,Categorical Data,Contingency,我使用R的r2dtable函数生成具有给定边距的列联表。但是,在检查结果表时,值似乎过于集中于中点。例如: set.seed(1) matrices <- r2dtable(1e4, c(100, 100), c(100, 100)) vec.vals <- vapply(matrices, function(x) x[1, 1], numeric(1)) > table(vec.vals) vec.vals 36 37 38 39 40 41 4
r2dtable
函数生成具有给定边距的列联表。但是,在检查结果表时,值似乎过于集中于中点。例如:
set.seed(1)
matrices <- r2dtable(1e4, c(100, 100), c(100, 100))
vec.vals <- vapply(matrices, function(x) x[1, 1], numeric(1))
> table(vec.vals)
vec.vals
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
1 1 1 7 25 49 105 182 268 440 596 719 954 1072 1152 1048
52 53 54 55 56 57 58 59 60 61 62
1022 775 573 404 290 156 83 50 19 6 2
set.seed(1)
矩阵要获得较少集中的矩阵,必须在列/行数、总数和矩阵数之间找到平衡。考虑下面的集合:
m2rep <- r2dtable(1e4, rep(100,2), rep(100,2))
m2seq <- r2dtable(1e4, seq(50,100,50), seq(50,100,50))
使用以下内容绘制此图:
par(mfrow = c(1,2))
plot(table(unlist(m2rep)))
plot(table(unlist(m2seq)))
par(mfrow = c(1,2))
plot(table(unlist(m20rep)))
plot(table(unlist(m20seq)))
给出:
现在考虑:
m20rep <- r2dtable(1e4, rep(100,20), rep(100,20))
m20seq <- r2dtable(1e4, seq(50,1000,50), seq(50,1000,50))
使用以下内容绘制此图:
par(mfrow = c(1,2))
plot(table(unlist(m2rep)))
plot(table(unlist(m2seq)))
par(mfrow = c(1,2))
plot(table(unlist(m20rep)))
plot(table(unlist(m20seq)))
给出:
正如您所看到的,使用参数会有所帮助
Hth
< P>你需要考虑的是,任何给定的随机抽取几乎都不可能有35的左上角值。1e4尝试可能不足以实现此类事件。看看理论预测(由Rhelp名单上的P.Dalgaard今早提供):
如果增加绘图次数,则单个值为1“的概率将增大:
我想保留边距为c(100100),c(100100)
。我不明白你的解决方案是如何做到这一点的。@paljenczy我的解决方案确实没有做到这一点。但因为您在问题中没有具体说明该要求,所以我不知道;-)“有什么办法可以做到这一点吗?@paljenczy我会在这个周末看看
round(dhyper(0:100,100,100,100)*1e4)
[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[18] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[35] 0 0 0 1 4 9 21 45 88 160 269 417 596 787 959 1081 1124
[52] 1081 959 787 596 417 269 160 88 45 21 9 4 1 0 0 0 0
[69] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[86] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
vec.vals <- vapply(matrices, function(x) x[1, 1], numeric(1)); table(vec.vals)
vec.vals
33 34 35 36 37 38 39 40 41 42 43 44 45
1 3 8 47 141 359 864 2148 4515 8946 15928 27013 41736
46 47 48 49 50 51 52 53 54 55 56 57 58
59558 78717 96153 108322 112524 107585 96042 78054 60019 41556 26848 16134 8627
59 60 61 62 63 64 65 66 68
4580 2092 933 351 138 42 11 4 1
round(dhyper(0:100,100,100,100)*1e6)
[1] 0 0 0 0 0 0 0 0 0 0 0 0
[13] 0 0 0 0 0 0 0 0 0 0 0 0
[25] 0 0 0 0 0 0 0 0 0 1 4 13
[37] 43 129 355 897 2087 4469 8819 16045 26927 41700 59614 78694
[49] 95943 108050 112416 108050 95943 78694 59614 41700 26927 16045 8819 4469
[61] 2087 897 355 129 43 13 4 1 0 0 0 0
[73] 0 0 0 0 0 0 0 0 0 0 0 0
[85] 0 0 0 0 0 0 0 0 0 0 0 0
[97] 0 0 0 0 0