我有一张这样的表格。
JUV SUB AD
A 137 19 46
B 0 0 46
C 16 10 1
F 23 2 9
IN 27 9 29
IS 3 3 25
M 8 0 27
R 1 0 66
S 145 47 189
T 17 6 9
我想做一个齐次方检验 以便找到三列中各组之间的相关性 但为了做到这一点,我需要将三列的数值分成百分比。 Prob. table不工作,因为它使总的百分比,而不是分成三组。
这里有几个问题。Chi Square测量的是关联性,而不是相关性,并且只能对频率(计数)数据进行计算,而不是百分比或比例。在这里有几个问题。chisq.test()
函数将为你处理所有的计算。此外, prop.table
函数完全按照你的要求来做(参见手册中的 ?prop.table
特别是对 margin=
参数)。) 在发布时,您应该使用 dput()
来提供你的数据。这就保留了你数据的重要细节--在这种情况下,你是有一个数据框架还是一个表。假设有一个数据框架。
tbl <- structure(list(JUV = c(137L, 0L, 16L, 23L, 27L, 3L, 8L, 1L, 145L,
17L), SUB = c(19L, 0L, 10L, 2L, 9L, 3L, 0L, 0L, 47L, 6L), AD = c(46L,
46L, 1L, 9L, 29L, 25L, 27L, 66L, 189L, 9L)), class = "data.frame", row.names = c("A",
"B", "C", "F", "IN", "IS", "M", "R", "S", "T"))
要按列获取百分比,使用
pct <- prop.table(as.matrix(tbl), 2) * 100
print(addmargins(pct), digits=3)
# JUV SUB AD Sum
# A 36.340 19.79 10.291 66.42
# B 0.000 0.00 10.291 10.29
# C 4.244 10.42 0.224 14.88
# F 6.101 2.08 2.013 10.20
# IN 7.162 9.38 6.488 23.02
# IS 0.796 3.12 5.593 9.51
# M 2.122 0.00 6.040 8.16
# R 0.265 0.00 14.765 15.03
# S 38.462 48.96 42.282 129.70
# T 4.509 6.25 2.013 12.77
# Sum 100.000 100.00 100.000 300.00
对于chi平方检验。
chisq.test(tbl)
#
# Pearson's Chi-squared test
#
# data: tbl
# X-squared = 256.14, df = 18, p-value < 2.2e-16
#
# Warning message:
# In chisq.test(tbl) : Chi-squared approximation may be incorrect
警告表明有些预期值太小了。