Как создать функцию из вектора чисел c, который принимает значение в качестве входных данных и выдает вероятность того, что значение присутствует в векторе? - PullRequest
0 голосов
/ 10 апреля 2020

Я хотел бы создать функцию или объект из вектора чисел c, который принимает значение чисел c в качестве входных данных и дает вероятность присутствия этого значения в векторе чисел c. Я хотел бы создать объект типа my_object, как показано в коде ниже

numeric_vector = iris$Sepal.Length
# Create a function or object from numeric vector
my_object = generate_function(iris$Sepal.Length)
prob_of_2 = my_object(2)
print(prob_of_2) # outputs probability of presence of 2 in numeric vector

Я пытался использовать функцию stats::density для создания объекта my_object. Но проблема в том, что я не могу использовать одно значение для вывода вероятности.

numeric_vector = iris$Sepal.Length
my_function = data.frame(value = density(numeric_vector)$x, probability = density(numeric_vector)$y)
prob_of_2 = my_function[my_function$value == 2, ]$probability 
print(prob_of_2) # outputs numeric(0)

Мне нужно использовать диапазон, которого я хочу избежать

epsilon = 1.5
prob_of_2 = sum(my_function[my_function$value >= 2 - epsilon & my_function$value <= 2 + epsilon, ]$probability)
print(prob_of_2) # outputs 0.0007896299

Я надеюсь, что вопрос понятно и имеет смысл. Любая помощь очень ценится.

1 Ответ

1 голос
/ 10 апреля 2020

Вы можете использовать approxfun для этого

approx <- function(x, vec=iris$Sepal.Length, ...){
    approxfun(density(vec, ...))(x)
}
approx(4.5)
#>[1] 0.1707666

approx(2, width=4)
#>[1] 0.002516293

см. Также: https://stats.stackexchange.com/questions/78711/how-to-find-estimate-probability-density-function-from-density-function-in-r

...