r - 如何在 R 中创建 2 路列联表
问题描述
(免责声明:抱歉,我之前确实问过类似的问题。它没有得到任何答案,它已关闭。)
我想创建不同大小的 2 路列联表,例如,从 3x3 到 10x15,其中一些应该显示显着的关联(使用chisq.test()
或类似),而另一些则没有。我已经跑到可能相关的帖子中,但我看不到连接所有点的方法。例如,这篇文章讨论了如何使用r2dtable()
. 接下来,有关于生成随机整数的帖子,这些整数总和为特定值,here和here,这对于定义行和列边缘可能很有用r2dtable()
。
然而,它使我无法生成此类表的列表。此外,似乎r2dtable()
总是返回显示没有关联的表。鉴于表格是随机的,我想这是可以预料的。
有人可以帮忙吗?
解决方案
您的问题中缺少的信息是如何在表格中定义关联或缺乏关联。这将是任何通用解决方案的特定案例部分。
我假设您最终要分析的“表格”由汇总数据组成,按两个因素分类。
generateData <- function(nRow, nCol, f, ...) {
df <- tibble() %>%
expand(
Row=1:nRow,
Col=1:nCol
)
df <- df %>%
f(...) %>%
pivot_wider(
names_from=Col,
values_from=Value,
names_prefix="Col"
)
return(df)
}
在这里,nCol
andnRow
具有明显的含义,并且f
是一个必须定义的函数,它使用名为 and 的列填充长Value
标题中名为的列。如果需要,省略号允许您传递任意附加参数。Row
Col
...
f
要生成在行和列之间没有关联的表,只需填充Value
随机数据。例如:
randomCells <- function(df, ...){
df %>% mutate(Value=5 + floor(runif(df %>% nrow(), max=10)))
}
以便
x <- generateRawData(3, 5, randomCells)
x
# A tibble: 3 x 6
Row Col1 Col2 Col3 Col4 Col5
<int> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 9 11 11 14 8
2 2 13 11 12 5 14
3 3 8 11 14 13 10
和
chisq.test(as.matrix(x))
Pearson's Chi-squared test
data: as.matrix(x)
X-squared = 8.8907, df = 10, p-value = 0.5425
现在假设您想要跨列的线性趋势,但行之间没有关联:
linearColumns <- function(df, ...){
df %>% mutate(Value=4*Col + floor(runif(df %>% nrow(), max=25)))
}
x <- generateRawData(3, 6, linearColumns)
x
# A tibble: 3 x 6
Row Col1 Col2 Col3 Col4 Col5
<int> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 20 12 31 24 46
2 2 9 25 39 46 38
3 3 6 20 35 36 49
给予
chisq.test(as.matrix(x))
Pearson's Chi-squared test
data: as.matrix(x)
X-squared = 22.63, df = 10, p-value = 0.0122
你只需要定义f
给你想要的模式。在更复杂的情况下,在实验单元级别定义响应可能更容易,然后聚合观察到的数据以形成您的模拟数据。
set.seed()
抱歉,在生成示例之前我忘记了。
推荐阅读
- python-3.x - 如何用字符串联系表情符号
- django - Nginx 路由 Django Web App 链接到错误的路径
- c++ - EASTL 和 libc++ 的 std::tuple 之间是否存在重大差异?
- python - Python Azure Databrick:“DataFrame”对象不支持项目分配
- angular - 在Angular Material中将焦点设置在表单字段上的正确方法是什么?ViewChild(使用 MatInput 或 ElementRef)对我不起作用
- vue.js - 如何在vue中获得不止一个类
- python - 在python中如何获得三个或更多圆的交点有或没有错误
- rust - 错误[E0597]:借用值在 While 循环中的生存时间不够长
- php - 我的直播 php 脚本中有错误
- javascript - 将映射加载到不同的变量名称