Есть ли способ в R указать, какой столбец в моих данных является группами, а какой-блоками, чтобы выполнить тест Фридмана? Я сравниваю результаты с SPSS

#r

#r

Вопрос:

Ниже я приведу пример того, как организованы мои данные , но каждый раз, когда я запускаю Frieman с помощью frieman.test(y=, группы=, блоки=), это выдает мне ошибку, что мои данные не являются результатом неупорядоченного полного блочного дизайна, несмотря на то, что это так.

счет лечение день
10 1 1
20 1 1
40 1 1
7 2 1
100 2 1
58 2 1
98 3 1
89 3 1
40 3 1
70 4 1
10 4 1
28 4 1
86 5 1
200 5 1
40 5 1
77 1 2
100 1 2
90 1 2
33 2 2
15 2 2
25 2 2
23 3 2
54 3 2
67 3 2
1 4 2
2 4 2
400 4 2
16 5 2
10 5 2
90 5 2
 library(readr)  sample_data$treatment lt;- as.factor(sample_data$treatment) #setting treatment as categorical independent variable  sample_data$day lt;- as.factor(sample_data$day) #setting day as categorical independent variable  summary(sample_data)  friedman3 lt;- friedman.test(y = sample_data$score, groups = sample_data$treatment, blocks = sample_data$day)  summary(friedman3)  

приведенный выше код выдает мне ошибку, которую я описал ранее.

Однако, когда я конвертирую данные csv в матрицу, Фридман работает, но ответ кажется неправильным, поскольку SPSS дает другой результат для степеней свободы.

 sample_data$treatment lt;- as.factor(sample_data$treatment) #converting to categorical independent variable sample_data$day lt;- as.factor(sample_data$day) #converting to categorical independent variable data = as.matrix(sample_data) friedman.test(data) friedman2 lt;- friedman.test(y = data$score, groups = data$treatment, blocks = data$day) summary(friedman2)  

Есть идеи, что я делаю неправильно?

Я знаю, что Фридман дает мне хи-квадрат, но мне также интересно, как я могу получить статистику теста вместо значения хи-квадрат.

Я использую Rstudio, и я новичок в R. И я хочу знать, как указать группы в качестве лечения и день в качестве блоков.

Комментарии:

1. Вы хотите сказать, что SPSS результаты верны?

2. В коде вы преобразуете в matrix ( data ), а затем извлекаете $ , что, однако, не работает с матрицей

3. Проблема в коде заключается в преобразовании в matrix после изменения «лечения» и «дня» на фактор. matrix может содержать только один класс. Возможно, вы сможете это сделать friedman.test(sample_data$score, groups = sample_data$treatment, blocks = sample_data$day)

4. Я не получаю никаких ошибок с данными, которые вы опубликовали. Пожалуйста, используйте тот же код, что я показал sample_data1 lt;- aggregate(score ~ ., sample_data, FUN = mean); friedman.test(sample_data1$score, groups = sample_data1$treatment, blocks = sample_data1$day)

5. Это сработало!!! Большое вам спасибо @akrun!!!! Я действительно ценю вашу помощь! Я использовал последний код, который вы мне прислали, и увидел, что раньше я ввел его неправильно, но теперь он работает!

Ответ №1:

Мы могли бы обобщить данные, взяв mean «оценку», а затем использовать эти обобщенные данные в friedman.test

 sample_data1 lt;- aggregate(score ~ ., sample_data, FUN = mean) friedman.test(sample_data1$score, groups = sample_data1$treatment,   blocks = sample_data1$day)