r2dtable列联表太集中了

时间:2016-05-18 20:14:01

标签: 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   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

因此,最小左上角值为36,最大值为10,000次模拟中的62。

有没有办法实现稍微不那么集中的矩阵?

2 个答案:

答案 0 :(得分:2)

您需要考虑到任何给定的随机抽取都不太可能具有35和左上角的值.1e4尝试可能不足以实现这样的事件。看一下理论上的预测(今天早上在Rhelp名单上由P. Dalgaard提供。):

var scrollViewer = VisualTreeHelper.GetChild(ConversationItemsControl, 0) as ScrollViewer;
scrollViewer.ChangeView(null, double.MaxValue, 1f, true);

如果你增加绘制数量,单个值1&#34;的概率就会扩大&#34;:

 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 

答案 1 :(得分:1)

要获得较少集中的矩阵,您必须在列数/行数,总数和矩阵数之间找到平衡点。请考虑以下几组:

m2rep <- r2dtable(1e4, rep(100,2), rep(100,2))
m2seq <- r2dtable(1e4, seq(50,100,50), seq(50,100,50))

给出了唯一值数量的差异:

> length(unique(unlist(m2rep)))
[1] 29
> length(unique(unlist(m2seq)))
[1] 58

用以下方式绘制:

par(mfrow = c(1,2))
plot(table(unlist(m2rep)))
plot(table(unlist(m2seq)))

给出:

enter image description here

现在考虑:

m20rep <- r2dtable(1e4, rep(100,20), rep(100,20))
m20seq <- r2dtable(1e4, seq(50,1000,50), seq(50,1000,50))

给出:

> length(unique(unlist(m20rep)))
[1] 20
> length(unique(unlist(m20seq)))
[1] 130

用以下方式绘制:

par(mfrow = c(1,2))
plot(table(unlist(m20rep)))
plot(table(unlist(m20seq)))

给出:

enter image description here

如您所见,使用参数有帮助。

HTH