标签: probability-density

从密度函数计算概率

我已经建立了密度函数,现在我想计算一个新数据点"下降"到选定区间的概率(比如,a = 3,b = 7).所以,我正在寻找:

P(a<x<=b)
Run Code Online (Sandbox Code Playgroud)

一些样本数据:

df<- data.frame(x=c(sample(6:9, 50, replace=TRUE), sample(18:23, 25, replace=TRUE)))

dens<- density(df$x)
Run Code Online (Sandbox Code Playgroud)

我会很高兴听到任何解决方案,但最好是在基础r

先感谢您

r probability-density

8
推荐指数
1
解决办法
2917
查看次数

如何在python中绘制概率质量函数

如何创建一个直方图,显示给定数字x的范围为0-1的概率分布?我希望每个条形<= 1,如果我将每个条形的y值相加,它们应该加起来为1.

例如,如果x = [.2,.2,.8],那么我希望图形显示2个条形图,一个在.2处,高度为.66,一个在.8处,高度为.33.

我试过了:

matplotlib.pyplot.hist(x, bins=50, normed=True)
Run Code Online (Sandbox Code Playgroud)

这给了我一个高于1的条形图的直方图.我不是说那是错的,因为这是诺曼底参数根据文档做的,但是没有显示概率.

我也尝试过:

counts, bins = numpy.histogram(x, bins=50, density=True)
bins = bins[:-1] + (bins[1] - bins[0])/2
matplotlib.pyplot.bar(bins, counts, 1.0/50)
Run Code Online (Sandbox Code Playgroud)

这也给了我的y值总和大于1的柱子.

python numpy probability-density

7
推荐指数
1
解决办法
8798
查看次数

如何将距离转换为概率?

有人为我的matlab程序发光吗?我有来自两个传感器的数据,我正在kNN分别对它们进行分类.在这两种情况下,训练集看起来像一组总共42行的向量,如下所示:

[44 12 53 29 35 30 49;

 54 36 58 30 38 24 37;..]
Run Code Online (Sandbox Code Playgroud)

然后我得到一个样本,例如[40 30 50 25 40 25 30],我想将样本分类到最近的邻居.作为接近度的标准,我使用欧几里德度量,sqrt(sum(Y 2)),其中Y是每个元素之间的差异,它给出了Sample和每个训练集类别之间的距离数组.

那么,有两个问题:

  • 是否可以将距离转换为概率分布,如:Class1:60%,Class 2:30%,Class 3:5%,Class 5:1%等.

补充:到目前为止我正在使用公式:probability = distance/sum of distances但我无法绘制正确的cdf或直方图.这给了我一些分布,但我看到了一个问题,因为如果距离很大,例如700,那么最接近的类将获得最大的概率,但它是错的,因为距离太大而不能与任何课程相比.

  • 如果我能够获得两个概率密度函数,我想我会做一些它们的产品.可能吗?

任何帮助或评论都非常感谢.

matlab classification knn euclidean-distance probability-density

7
推荐指数
2
解决办法
5832
查看次数

使用反向采样从分布函数生成随机变量

我有一个特定的密度函数,我想知道密度函数的表达式的随机变量.

例如,密度函数是:

df=function(x) { - ((-a1/a2)*exp((x-a3)/a2))/(1+exp((x-a3)/a2))^2 }
Run Code Online (Sandbox Code Playgroud)

从这个表达式我想生成1000个具有相同分布的随机元素.

我知道我应该使用逆抽样方法.为此,我使用我的PDF的CDF功能,计算如下:

cdf=function(x) { 1 - a1/(1+exp((x-a3)/a2))
Run Code Online (Sandbox Code Playgroud)

我们的想法是生成均匀分布的样本,然后使用我的CDF函数映射它们以获得逆映射.像这样的东西:

random.generator<-function(n) sapply(runif(n),cdf) 
Run Code Online (Sandbox Code Playgroud)

然后用所需数量的随机变量调用它来生成.

random.generator(1000) 
Run Code Online (Sandbox Code Playgroud)

这种方法是否正确?

random r probability-density

7
推荐指数
1
解决办法
2444
查看次数

密度估计曲线下的计算面积,即概率

density对我的数据有一个密度估计(使用函数)learningTime(见下图),我需要找到概率Pr(learningTime > c),即从给定数字c(红色垂直线)到曲线末端的密度曲线下面积.任何的想法?

在此输入图像描述

r probability kernel-density density-plot probability-density

7
推荐指数
2
解决办法
4357
查看次数

什么是scipy.stats.norm上下文中的概率密度函数?

这是一个非常基本的问题,但我似乎无法找到一个好的答案.scipy究竟为什么计算

scipy.stats.norm(50,10).pdf(45)
Run Code Online (Sandbox Code Playgroud)

据我所知,高斯平均50和标准差10的特定值(如45)的概率为0.那么究竟什么是pdf计算?它是高斯曲线下的面积,如果是这样,x轴上的值范围是多少?

scipy probability-density

7
推荐指数
1
解决办法
1万
查看次数

Julia - 使用 mvNormal 生成具有给定均值和协方差矩阵的多元高斯样本

我需要生成 2000 个 2D 多元高斯分布样本,其平均值为 [2;3] 且协方差 C = [0.2 0; 0 0.3]在朱莉娅。是否可以使用 Distributions 包中的 MvNormal 函数来做到这一点?

提前致谢。

gaussian multidimensional-array julia probability-density

7
推荐指数
1
解决办法
3475
查看次数

使用标准库的概率密度函数?

能够使用它std <random>来生成不同概率分布的随机数很好......现在,有没有办法使用标准库计算给定分布及其参数的一组数字的概率?

我知道我可以为我自己的任何发行版编写概率密度和质量函数(参见下面的单个随机变量示例),但如果可以,我宁愿使用标准库.

long double exponential_pdf(long double x, long double rate) {

    if ( x < 0.0 ) {
        return 0.0;
    }
    if ( rate < 0.0 ) {
        return NOT_A_NUMBER;
    }
    auto    pdf = rate * exp( - rate * x);
    return  pdf;
}
Run Code Online (Sandbox Code Playgroud)

c++ boost stl c++11 probability-density

6
推荐指数
1
解决办法
6058
查看次数

geom_density y 轴大于 1

我认为这可能部分是一个 R 问题,部分是一个统计问题,所以如果有更好的地方,请原谅(如果是这样,请告诉我在哪里)。

假设我有一个my_measurements这样的数据集:

> glimpse(my_measurements)
Observations: 200
Variables: 2
$ sample_id <int> 18, 22, 30, 59, 74, 126, 133, 137, 147, 186, 189, 195, 203, 248, 294, 303, 320, 324, 353, 3...
$ value     <dbl> 0.9565217, 1.0000000, 0.7500000, 0.7142857, 1.0000000, 0.8571429, 1.0000000, 1.0000000, 0.8...
Run Code Online (Sandbox Code Playgroud)

其中每个sample_id都有相应的测量值,该测量值value介于 0 和 1 之间(例如,它们可能是某物的比例)。

它的完整dput()输出是:

structure(list(sample_id = c(18L, 22L, 30L, 59L, 74L, 126L, 133L, 
137L, 147L, 186L, 189L, 195L, 203L, 248L, 294L, 303L, 320L, 324L, 
353L, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 density-plot probability-density

6
推荐指数
2
解决办法
8313
查看次数

使用 scipy 的 gaussian_kde 和 sklearn 的 KernelDensity 进行核密度估计会导致不同的结果

我从两个叠加的正态分布创建了一些数据,然后应用sklearn.neighbors.KernelDensityscipy.stats.gaussian_kde来估计密度函数。然而,使用相同的带宽 (1.0) 和相同的内核,两种方法都会产生不同的结果。有人可以向我解释一下原因吗?感谢帮助。

您可以在下面找到重现该问题的代码:

import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import gaussian_kde
import seaborn as sns
from sklearn.neighbors import KernelDensity

n = 10000
dist_frac = 0.1
x1 = np.random.normal(-5,2,int(n*dist_frac))
x2 = np.random.normal(5,3,int(n*(1-dist_frac)))
x = np.concatenate((x1,x2))
np.random.shuffle(x)
eval_points = np.linspace(np.min(x), np.max(x))

kde_sk = KernelDensity(bandwidth=1.0, kernel='gaussian')
kde_sk.fit(x.reshape([-1,1]))
y_sk = np.exp(kde_sk.score_samples(eval_points.reshape(-1,1)))

kde_sp = gaussian_kde(x, bw_method=1.0)
y_sp = kde_sp.pdf(eval_points)

sns.kdeplot(x)
plt.plot(eval_points, y_sk)
plt.plot(eval_points, y_sp)
plt.legend(['seaborn','scikit','scipy'])
Run Code Online (Sandbox Code Playgroud)

scipy 和 scikit 的 bandwith=1.0

如果我将 scipy bandwith 更改为 0.25,则两种方法的结果看起来大致相同。

scipy 带宽=0.25 和 scikit 带宽=1.0

python scipy kernel-density scikit-learn probability-density

6
推荐指数
1
解决办法
1万
查看次数