R Under development (unstable) (2024-08-28 r87069 ucrt) -- "Unsuffered Consequences" Copyright (C) 2024 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > # Test data from: > # Circular statistics in biology, Batschelet, E (1981) > # ยง6.2, p99 > # > > suppressMessages(library("circular")) > # ?watson.williams.test > > angles <- circular( c(rep(c(-20, -10, 0), c(1,7,2)), rep(c(-10, 0, 10, 20), c(3,3,3,1))), units="degrees", template="geographics") > group <- factor(rep(c("exp", "control"), each=10)) > > # expect this: > # F = 8.7329, df1 = 1, df2 = 18, p-value = 0.003108 > # mean of control mean of exp > # 1.988969 -9.000615 > > # Test interfaces > xn <- angles > watson.williams.test(xn, group) Watson-Williams test for homogeneity of means data: xn by group F = 8.7329, df1 = 1, df2 = 18, p-value = 0.008472 sample estimates: Circular Data: Type = angles Units = degrees Template = geographics Modulo = asis Zero = 1.570796 Rotation = clock mean of control mean of exp 1.988969 -9.000615 > > xl <- split(xn, group) > watson.williams.test(xl) Watson-Williams test for homogeneity of means data: control and exp F = 8.7329, df1 = 1, df2 = 18, p-value = 0.008472 sample estimates: Circular Data: Type = angles Units = degrees Template = geographics Modulo = asis Zero = 1.570796 Rotation = clock mean of control mean of exp 1.988969 -9.000615 > > xl <- split(xn, group) > names(xl) <- NULL > watson.williams.test(xl) Watson-Williams test for homogeneity of means data: 1 and 2 F = 8.7329, df1 = 1, df2 = 18, p-value = 0.008472 sample estimates: Circular Data: Type = angles Units = degrees Template = geographics Modulo = asis Zero = 1.570796 Rotation = clock mean of 1 mean of 2 1.988969 -9.000615 > > xd <- data.frame(group=group, angles=angles) > watson.williams.test(angles ~ group, xd) Watson-Williams test for homogeneity of means data: angles by group F = 8.7329, df1 = 1, df2 = 18, p-value = 0.008472 sample estimates: Circular Data: Type = angles Units = degrees Template = geographics Modulo = asis Zero = 1.570796 Rotation = clock mean of control mean of exp 1.988969 -9.000615 > > # Test the influence of ordering the groups > id <- c(9, 8, 7, 4, 6, 5, 12, 18, 10, 17, 1, 19, 3, 20, 2, 16, 15, 14, 13, 11) > angles <- angles[id] > group <- group[id] > > xn <- angles > watson.williams.test(xn, group) Watson-Williams test for homogeneity of means data: xn by group F = 8.7329, df1 = 1, df2 = 18, p-value = 0.008472 sample estimates: Circular Data: Type = angles Units = degrees Template = geographics Modulo = asis Zero = 1.570796 Rotation = clock mean of control mean of exp 1.988969 -9.000615 > xl <- split(xn, group) > watson.williams.test(xl) Watson-Williams test for homogeneity of means data: control and exp F = 8.7329, df1 = 1, df2 = 18, p-value = 0.008472 sample estimates: Circular Data: Type = angles Units = degrees Template = geographics Modulo = asis Zero = 1.570796 Rotation = clock mean of control mean of exp 1.988969 -9.000615 > xd <- data.frame(group=group, angles=angles) > watson.williams.test(angles ~ group, xd) Watson-Williams test for homogeneity of means data: angles by group F = 8.7329, df1 = 1, df2 = 18, p-value = 0.008472 sample estimates: Circular Data: Type = angles Units = degrees Template = geographics Modulo = asis Zero = 1.570796 Rotation = clock mean of control mean of exp 1.988969 -9.000615 > > # Test NAs > angles[length(angles)+1] <- NA > levels(group) <- c("exp", "control", "bar") > group[length(group)+1] <- "bar" > xn <- angles > watson.williams.test(xn, group) Watson-Williams test for homogeneity of means data: xn by group F = 8.7329, df1 = 1, df2 = 18, p-value = 0.008472 sample estimates: Circular Data: Type = angles Units = degrees Template = geographics Modulo = asis Zero = 1.570796 Rotation = clock mean of exp mean of control 1.988969 -9.000615 > > proc.time() user system elapsed 0.28 0.12 0.32