王富民awaw: Very nice. The Levene function, though, is confusingly named. The Levene test is distinct from the Brown-Forsthe test, so mixing up the names seems odd.[1]
[1] quoting https://www.statisticshowto.com/brown-forsythe-test/#:~:text=The%20Levene%20test%20uses%20deviations,a%20test%20that's%20more%20robust. below: (see the underlined sentence, underline and bold there is mine) How the Test Works Both the Levene and B-F tests transform dependent variables <https://www.statisticshowto.com/dependent-variable-definition/> for use in an ANOVA <https://www.statisticshowto.com/probability-and-statistics/hypothesis-testing/anova/>test. The only difference between the two tests is in how those transformed variables are constructed. The Levene test uses deviations from group means <https://www.statisticshowto.com/mean/>, which usually results in a highly-skewed set of data; This violates the assumption of normality <https://www.statisticshowto.com/assumption-of-normality-test/>.* The Brown-Forsythe test attempts to correct for this skewness <https://www.statisticshowto.com/probability-and-statistics/descriptive-statistics/skewness/>by using deviations from group medians <https://www.statisticshowto.com/probability-and-statistics/statistics-definitions/mean-median-mode/#median>.* The result is a test that’s more robust <https://www.statisticshowto.com/robust-statistics/>. In other words, the B-F test is less likely than the Levene test to incorrectly declare that the assumption of equal variances has been violated. The test works as follows: - The median is calculated for each factor level group. - The median value is subtracted from each dependent variable in the group. - An ANOVA <https://www.statisticshowto.com/probability-and-statistics/hypothesis-testing/anova/> is run with the transformed variables. If a factor’s p-value <https://www.statisticshowto.com/probability-and-statistics/statistics-definitions/p-value/> is less than the significance level <https://www.statisticshowto.com/probability-and-statistics/statistics-definitions/what-is-an-alpha-level/> (usually 5%), the population variances are not equal. W or F statistic? The test statistic used in a regular ANOVA is an F-statistic <https://www.statisticshowto.com/probability-and-statistics/f-statistic-value-test/>. The statistic used in an ANOVA with transformed variables is sometimes called a W-Statistic — but it’s really just an F-Statistic with a different name. It should not be confused with the coefficient of concordance W-statistic <https://www.statisticshowto.com/concordance-correlation-coefficient/>, which is used to assess agreement between raters. Cautions For the most part, the B-F test is thought to perform as well as or better than other available tests for equal variances. However, Glass and Hopkins (1996 p. 436) state that the Levene and B-F tests are “fatally flawed”; It isn’t clear how robust they are when there is significant differences in variances and unequal sample sizes. Hill et. al (2006) advise repeating the test using a non-parametric <https://www.statisticshowto.com/probability-and-statistics/statistics-definitions/parametric-and-non-parametric-data/> method. On Monday, October 30, 2023 at 1:08:19 AM UTC 王富民awaw wrote: > Hi Jan, Martin, and Jason > > Thanks for your tips and encouragement for rolling our sleeves. > I have put together a small statistics library: > > stat package - github.com/fumin/stat - Go Packages > <https://pkg.go.dev/github.com/fumin/stat> > > For my own needs, in addition to Brown-Forsythe, I also needed the Welch > t-test and tools for multiple testing, so these are what's in the above > package. > > On Monday, 30 October 2023 at 07:25:50 UTC+8 Jason E. Aten wrote: > >> For the ANOVA, I usually just call from Go into R for such things -- at >> least until I >> can validate if its the right thing to do/ meets the sensitivity/power >> needs of the analysis. >> >> https://statsandr.com/blog/anova-in-r/ >> >> >> https://github.com/glycerine/rmq#and-the-reverse-embedding-r-inside-your-golang-program >> >> >> On Wednesday, October 25, 2023 at 6:48:56 AM UTC+1 Jan wrote: >> >>> So cool! >>> On Monday, October 23, 2023 at 5:44:29 PM UTC+2 Martin Schnabel wrote: >>> >>>> Hi, >>>> >>>> I attempted to translate the linked JS implementation for fun. Maybe >>>> someone can use it as a starting point and correct or verify its >>>> correctness. >>>> >>>> https://go.dev/play/p/Wrw2yDRof0z >>>> >>>> Have fun! >>>> >>>> On 10/23/23 07:38, Jan wrote: >>>> > hi, I did a quick search and I didn't find anything in Go. But >>>> looking >>>> > at the definition and at one implementation in JS >>>> > < >>>> https://github.com/lukem512/brown-forsythe-test/blob/master/src/brown-forsythe.js>, >>>> >>>> it sounds something relatively easy to write and share :) You can use the >>>> R implementation to create some test datasets. Maybe gonum/stat < >>>> https://godocs.io/gonum.org/v1/gonum/stat> would be a potential home >>>> for such a function ? What do you think ? >>>> > >>>> > cheers >>>> > On Friday, October 20, 2023 at 10:54:55 AM UTC+2 王富民awaw wrote: >>>> > >>>> > Hi follow Gophers >>>> > >>>> > I wonder is there a canonical, verifiably correct Go package for >>>> > statistics? >>>> > In particular, Go code that does the Brown-Forsythe test of equal >>>> > variance. >>>> > Ideally in pure Go, but linking with CGo is OK. >>>> > >>>> > A search on Google and pkg.go.dev <http://pkg.go.dev> does not >>>> > return helpful results. >>>> > I wonder is there anything that the community could share? >>>> > >>>> > -- >>>> > You received this message because you are subscribed to the Google >>>> > Groups "golang-nuts" group. >>>> > To unsubscribe from this group and stop receiving emails from it, >>>> send >>>> > an email to golang-nuts...@googlegroups.com >>>> > <mailto:golang-nuts...@googlegroups.com>. >>>> > To view this discussion on the web visit >>>> > >>>> https://groups.google.com/d/msgid/golang-nuts/7ee10c0f-8af6-4b31-baaf-ce2ccb9c0211n%40googlegroups.com >>>> >>>> < >>>> https://groups.google.com/d/msgid/golang-nuts/7ee10c0f-8af6-4b31-baaf-ce2ccb9c0211n%40googlegroups.com?utm_medium=email&utm_source=footer>. >>>> >>>> >>>> >>> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/1ab79e74-d780-49b9-b5e3-6d56dece97acn%40googlegroups.com.