通过响应频率减少交叉表大小

时间:2012-03-02 02:12:50

标签: r

请原谅我的新手问题 - 我是R的新手并且在统计数据方面一点也没有。

我有一个简单的列联表,表示在一段时间内收集的一组网页的每个用户的查询数。总观察量约为15,000。这适用于查看50组页面的大约100个用户的表格。

由于50x100矩阵难以可视化,我想呈现此表的一个子集,按最大聚合排序 - 列(页组),行(用户),甚至可能是最大的逐行计数。例如,我可能会选择前20个用户和前10个组,或者前99%的逐行计数。

理想情况下,我最终得到的表仍然代表了代表性最高的用户与页面组之间的主要互动。

这是一种合理的方法吗?我会失去一些大的统计意义吗?并且,有没有办法比较之前和之后的意义。

我必须承认,我仍然不知道如何根据两个因素对表进行排序和子集,而不需要逐行操作。

1 个答案:

答案 0 :(得分:0)

S <- trunc(10*runif(1000) )
R <- trunc(10*runif(1000))
RStab <- table(R, S)
str(RStab)
# 'table' int [1:10, 1:10] 6 12 10 13 10 7 8 6 9 10 ...
# - attr(*, "dimnames")=List of 2
#  ..$ R: chr [1:10] "0" "1" "2" "3" ...
#  ..$ S: chr [1:10] "0" "1" "2" "3" ...
 rowSums( RStab[ order(rowSums(RStab)) , order(colSums(RStab) ) ]) 
#  8   0   1   3   2   5   9   4   6   7 
# 90  94  96  99 100 101 101 103 107 109 
colSums( RStab[ order(rowSums(RStab)) , order(colSums(RStab) ) ])
  6   0   3   5   7   2   4   8   9   1 
 80  91  94  96  98 100 106 109 112 114 

行和列的5个最高边距:

RStab[ order(rowSums(RStab)) , order(colSums(RStab) ) ][ 6:10, 6:10]
#-------------
   S
R    2  4  8  9  1
  5 14 10 12 10 12
  9  6  8  9 10 13
  4 10 10  8  8 18
  6  9 12 12 17  8
  7 14 10 14 12  9

听起来好像你在统计问题上可能有些不确定。你能更充分地解释“失去大量意义”的意思吗?您在考虑什么样的统计测试?