Правильная таблица пропорций и chisq.test() в R

Я все еще новичок в 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 

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


person Mads Lumholdt    schedule 23.11.2018    source источник
comment
К сожалению, это все еще беспокоит меня. Является ли chisq.test() подходящим статистическим методом для решения этой задачи? Суммарные пропорции внутри каждой группы (зеленый, желтый, оранжевый, красный) составляют › 100% для некоторых групп, поскольку у некоторых субъектов имеется несколько состояний. Влияет ли это на тест? Могу ли я только посмотреть на подсчет состояний и каким-то образом сообщить chisq.test() общее количество субъектов в каждой группе?   -  person Mads Lumholdt    schedule 31.01.2019


Ответы (1)


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

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

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

Итак, создайте matrix только с numeric векторами и сохраните «условие» в качестве имен строк.

df <- cbind(green, yellow, orange, red)
row.names(df) <- condition
chisq.test(df)
person akrun    schedule 23.11.2018
comment
О мой Бог. Такое элегантное решение. Спасибо. Я боролся с этой проблемой уже несколько часов. - person Mads Lumholdt; 23.11.2018
comment
@MadsLumholdt Рад узнать, что решение полезно. - person akrun; 23.11.2018