Таблица правильных пропорций и chisq.test () в R - PullRequest
0 голосов
/ 23 ноября 2018

Я все еще очень плохо знаком с R (Версия 1.1.383 для Mac), поэтому я прошу прощения, если этот вопрос является основным.Я искал решение в Интернете и на этой странице, но не смог найти ни одного.

Я хочу сделать таблицу пропорций, на которой я могу использовать chisq.test(), чтобы проверить, есть ли разница между 4 группами пациентов в распределении доли пациентов с 5 различными состояниями.

Данные, которые я имею, содержат процент пациентов с заболеваниями (CHF, DM, S, MI и CHF) и группы пациентов (зеленый, желтый, оранжевый и красный).В 4 группах соответственно 238, 196, 158 и 20 пациентов, и у некоторых пациентов может быть более одного состояния.Поэтому я использую пропорции, а не фактическое количество пациентов.

Примерно так:

condition <- c("CHF", "DM", "S", "MI", "CHF")
green <- c(30,33,35,17,15)/238*100
yellow <- c(47,32,25,21,19)/196*100
orange <- c(48,24,27,27,25)/158*100
red <- c(10,2,4,1,6)/20*100

Где 30, 47, 48 и 10 пациентов в четырех группах имеют ЗСН.У 33, 32, 24 и 2 пациентов есть СД и т. Д. ...

Используя cbind() Я получаю эту матрицу:

df <- cbind(condition, green, yellow, orange, red )
df
condition     green   yellow   orange   red    #I only included 1 decimal. 
[1,] "CHF"    "12.6"  "24.9"   "30.4"   "50"
[2,] "DM"     "13.9"  "16.3"   "15.2"   "10"
[3,] "S"      "14.7"  "12.8"   "17.1"   "20"
[4,] "MI"     "7.1"   "10.7"   "17.1"   "5" 
[5,] "CHF"    "6.3"   "9.7"    "15.8"   "30"

Это выглядит почти так, как я хочу, но ""заставляет меня подозревать, что он закодирован как символы, а не как таблица правильных пропорций.Также это происходит, когда я использую chisq.test():

chisq.test(df)
Error in sum(x) : invalid 'type' (character) of argument 

Я очень надеюсь, что вы можете помочь.Как правильно составить таблицу пропорций и проверить разницу в распределении условий в четырех группах?

1 Ответ

0 голосов
/ 23 ноября 2018

Мы создали матрицу с cbind, и матрица может иметь только один класс.Наличие 'условия' в качестве столбца изменяет числовые столбцы на character, и это создает проблему в chisq.test.

В соответствии с ?chisq.test, входной аргумент 'x' может быть vector или matrix, но допустимым классом является numeric или factor.

x - числовой вектор или матрица.x и y также могут быть факторами.

Итак, создайте matrix только с numeric векторами и оставьте 'condition' в качестве имени строки.

df <- cbind(green, yellow, orange, red)
row.names(df) <- condition
chisq.test(df)
...