r-如何从一个数字向量中创建一个函数,该向量将一个值作为输入,并输出该值出现在向量中的概率



我想从一个数字向量创建一个函数或对象,该向量将一个数值作为输入,并给出该值在数字向量中存在的概率。我想在下面的代码中创建一个类似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

我希望这个问题是清楚和有意义的。非常感谢您的帮助。

您可以将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

最新更新