Как запустить Kruskal и опубликовать HOC для нескольких переменных в R? - PullRequest
1 голос
/ 13 мая 2019

Пожалуйста, извините, если я неправильно отформатировал свой код, так как я новичок на сайте.Я также не знаю, как правильно предоставить пример данных.

У меня есть набор данных 42 шт.и 37 переменных (первый столбец - группа, 3 группы) ненормальных распределенных данных;Я хочу сравнить все свои 36 параметров между 3 группами и сделать последующий пост-разбор (pairwise.wilcox?).

Данные представляют собой количество проточных клеток для трех разных групп пациентов.Я был в состоянии выполнить начальное сравнение, создав формулу и запустив aov (хотя я хотел бы сделать Kruskal), но не нашел способа выполнить post hoc для всех переменных одним и тем же способом.

#Data
    Type   Neutrophils  Monocytes   NKC .....
    ------------------------------------------
    IN       546          2663      545
    IN       0797         7979      008
    OUT      0899         3899      345
    OUT      6868         44533     689
    HC       9898         43443     563


#Cbind all variable together to run model on all
    formula <- as.formula(paste0("cbind(", paste(names(LessCount)[-1], 
       collapse = ","), ") ~ Type"))
    print(formula)

#Run test on model
    fit <- aov(formula, data=LessCount)

#Print results
    summary(fit)

 Response Neutrophils :
            Df    Sum Sq Mean Sq F value Pr(>F)
Type         2  18173966 9086983  1.8099 0.1771
Residuals   39 195806220 5020672               

 Response Monocytes :
            Df   Sum Sq Mean Sq F value Pr(>F)
Type         2   694945  347472  0.7131 0.4964
Residuals   39 19004809  487303               

 Response Mono.Classic :
            Df   Sum Sq Mean Sq F value  Pr(>F)  
Type         2  1561778  780889  2.5842 0.08833 .
Residuals   39 11785116  302182  

###export anova####
    capture.output(summary(fit),file="test1.csv")

#If Significant,Check which# (currently doing by hand individually)
    pairwise.wilcox.test(LessCount$pDCs, LessCount$Type,
                     p.adjust.method = "BH")

Я получаю таблицу результатов для aov для каждой переменной в моей консоли, но хотел бы сделать то же самое для post-hoc, поскольку мне нужно каждое значение p.

Заранее спасибо.

1 Ответ

0 голосов
/ 13 мая 2019

Возможно, вы можете напрямую использовать функцию kruskal.test() и получить значения p.values.

Вот пример с набором данных радужной оболочки. Я использую функцию apply(), чтобы применить функцию kruskal.test к каждой переменной (кроме Species, которая является переменной с информацией о группе).

data(iris)
apply(iris[-5], 2, function(x) kruskal.test(x = x, g = iris$Species)$p.value)

# Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
# 8.918734e-22 1.569282e-14 4.803974e-29 3.261796e-29 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...