#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)