有没有一个函数可以把这个表的变量变成各列的百分比?

问题描述 投票:0回答:1

我有一张这样的表格。

     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不工作,因为它使总的百分比,而不是分成三组。

r datatable percentage
1个回答
0
投票

这里有几个问题。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

警告表明有些预期值太小了。

© www.soinside.com 2019 - 2024. All rights reserved.