distance: Switch from median to density estimate

This commit is contained in:
Elias Projahn 2022-08-14 17:50:59 +02:00
parent 98ee52b122
commit aee77e8bb5
5 changed files with 27 additions and 27 deletions

View file

@ -1,27 +1,3 @@
#' Find the densest value in the data.
#'
#' This function assumes that data represents a continuous variable and finds
#' a single value with the highest estimated density. This can be used to
#' estimate the mode of the data. If there is only one value that value is
#' returned. If multiple density maxima with the same density exist, their mean
#' is returned.
#'
#' @param data The input data.
#'
#' @return The densest value of data.
#'
#' @export
densest <- function(data) {
as.numeric(if (length(data) <= 0) {
NULL
} else if (length(data) == 1) {
data
} else {
density <- stats::density(data)
mean(density$x[density$y == max(density$y)])
})
}
#' Score genes based on their proximity to the reference genes.
#'
#' In this case, the distance data that is available for one gene is first

View file

@ -16,7 +16,7 @@
distance <- function(id = "distance",
name = "Distance",
description = "Distance to telomeres",
summarize = stats::median) {
summarize = densest) {
method(
id = id,
name = name,

View file

@ -40,6 +40,30 @@ num <- function(number, digits) {
format(round(number, digits = digits), nsmall = digits)
}
#' Find the densest value in the data.
#'
#' This function assumes that data represents a continuous variable and finds
#' a single value with the highest estimated density. This can be used to
#' estimate the mode of the data. If there is only one value that value is
#' returned. If multiple density maxima with the same density exist, their mean
#' is returned.
#'
#' @param data The input data.
#'
#' @return The densest value of data.
#'
#' @export
densest <- function(data) {
as.numeric(if (length(data) <= 0) {
NULL
} else if (length(data) == 1) {
data
} else {
density <- stats::density(data)
mean(density$x[density$y == max(density$y)])
})
}
# This is needed to make data.table's symbols available within the package.
#' @import data.table
NULL

View file

@ -1,5 +1,5 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/method_adjacency.R
% Please edit documentation in R/utils.R
\name{densest}
\alias{densest}
\title{Find the densest value in the data.}

View file

@ -8,7 +8,7 @@ distance(
id = "distance",
name = "Distance",
description = "Distance to telomeres",
summarize = stats::median
summarize = densest
)
}
\arguments{