提问人:Crimson 提问时间:5/8/2023 最后编辑:Crimson 更新时间:5/8/2023 访问量:55
R |Fisher 测试错误是说超出工作空间?
R | Fisher test error is saying out of workspace?
问:
我正在尝试比较两列的显着关联,因此使用 Fisher 检验,因为大多数单元格值为 0。我做的第一件事是创建一个 2x2 列联表,但它不正确,也不确定它不创建列联表的原因是什么。如何解决这个问题?
错误:
> fisher.test(data_table)
Error in fisher.test(data_table) : FEXACT error 40.
Out of workspace.
法典:
#import Excel file into R
setwd('C:\\Users\\main\\Desktop')
data <- read.csv("Framingham.csv")
diabetes_no <- subset(xx,DIABETES==0)$DIABETES
diabetes_yes <- subset(xx,DIABETES==1)$DIABETES
cursmoke_no <- subset(xx,CURSMOKE==0)$CURSMOKE
cursmoke_yes <- subset(xx,CURSMOKE==1)$CURSMOKE
# create 2x2 table
data_table = matrix(c(diabetes_no,diabetes_yes,cursmoke_no,cursmoke_yes), nrow = 2)
data_table
fisher.test(data_table)
答:
0赞
mfg3z0
5/8/2023
#1
通常,应将数据转换为 2x2 列联表以使用 .有关详细信息,请查看此问题。下面是一个简单的示例,说明如何执行此操作(请注意,此处的数据集太小,无法获得有意义的结果,因此会发出警告):chisq.test
chisq.test
df <- tibble::tribble(
~col1, ~col2,
0, 1,
1, 1,
0, 0,
1, 1,
1, 1,
1, 1,
1, 1,
0, 1,
0, 1,
0, 1,
0, 1,
0, 1,
0, 1
)
a <- df %>% filter(col1 == 0 & col2 == 0) %>%
summarise(n = n()) %>% pull(n)
b <- df %>% filter(col1 == 1 & col2 == 0) %>%
summarise(n = n()) %>% pull(n)
c <- df %>% filter(col1 == 0 & col2 == 1) %>%
summarise(n = n()) %>% pull(n)
d <- df %>% filter(col1 == 1 & col2 == 1) %>%
summarise(n = n()) %>% pull(n)
contingency_table <- data.frame(col1_0 = c(a, c), col1_1 = c(b, d), row.names = c("col2_0", "col2_1"))
contingency_table
#> col1_0 col1_1
#> col2_0 1 0
#> col2_1 7 5
chisq.test(contingency_table)
#> Pearson's Chi-squared test with Yates'
#> continuity correction
#>
#> data: contingency_table
#> X-squared = 7.7448e-32, df = 1, p-value = 1
评论
1赞
thelatemail
5/8/2023
这可能无法说明全部情况 - 将起作用,也会起作用 - 两者都具有相同的结果 AFAIK。chisq.test(df$col1, df$col2)
chisq.test(table(df))
评论