How to find the statistical mode?

前端 未结 30 1633
时光取名叫无心
时光取名叫无心 2020-11-21 07:00

In R, mean() and median() are standard functions which do what you\'d expect. mode() tells you the internal storage mode of the objec

30条回答
  •  一向
    一向 (楼主)
    2020-11-21 07:52

    It seems to me that if a collection has a mode, then its elements can be mapped one-to-one with the natural numbers. So, the problem of finding the mode reduces to producing such a mapping, finding the mode of the mapped values, then mapping back to some of the items in the collection. (Dealing with NA occurs at the mapping phase).

    I have a histogram function that operates on a similar principal. (The special functions and operators used in the code presented herein should be defined in Shapiro and/or the neatOveRse. The portions of Shapiro and neatOveRse duplicated herein are so duplicated with permission; the duplicated snippets may be used under the terms of this site.) R pseudocode for histogram is

    .histogram <- function (i)
            if (i %|% is.empty) integer() else
            vapply2(i %|% max %|% seqN, `==` %<=% i %O% sum)
    
    histogram <- function(i) i %|% rmna %|% .histogram
    

    (The special binary operators accomplish piping, currying, and composition) I also have a maxloc function, which is similar to which.max, but returns all the absolute maxima of a vector. R pseudocode for maxloc is

    FUNloc <- function (FUN, x, na.rm=F)
            which(x == list(identity, rmna)[[na.rm %|% index.b]](x) %|% FUN)
    
    maxloc <- FUNloc %<=% max
    
    minloc <- FUNloc %<=% min # I'M THROWING IN minloc TO EXPLAIN WHY I MADE FUNloc
    

    Then

    imode <- histogram %O% maxloc
    

    and

    x %|% map %|% imode %|% unmap
    

    will compute the mode of any collection, provided appropriate map-ping and unmap-ping functions are defined.

提交回复
热议问题