Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Is there a way in R to specify which column in my data is groups and which is blocks in order to do a Friedman's test? I am comparing results to SPSS

I will give a sample below of how my data is organized but every time I run Friedman’s using frieman.test(y =, groups = , blocks= ) it gives me an error that my data is not from an unreplicated complete block design despite the fact that it is.

score treatment day
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 <- as.factor(sample_data$treatment) #setting treatment as categorical independent variable

sample_data$day <- as.factor(sample_data$day) #setting day as categorical independent variable

summary(sample_data)

friedman3 <- friedman.test(y = sample_data$score, groups = sample_data$treatment, blocks = sample_data$day)

summary(friedman3)

the code above gives me the error I described earlier.

However when I convert the csv data to a matrix, Friedman’s works but the answer seems wrong as SPSS gives a different result for the degrees of freedom.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

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

Any idea what I am doing incorrectly?

I am aware that Friedman’s gives me chi-square but I am also wondering how can I get the test statistic instead of the chi-square value.

I am using Rstudio and I am new to R. And I want to know how to specify groups as treatment and day as blocks.

>Solution :

We could summarise the data by taking the mean of the ‘score’ and then use that summarised data in friedman.test

sample_data1 <- aggregate(score ~ ., sample_data, FUN = mean)
friedman.test(sample_data1$score, groups = sample_data1$treatment, 
    blocks = sample_data1$day)
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading