首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将正态分布与正态分布相结合?

如何将正态分布与正态分布相结合?
EN

Stack Overflow用户
提问于 2021-03-06 04:33:55
回答 1查看 446关注 0票数 0

试图整合正态分布

代码语言:javascript
复制
import numpy as np
import scipy

这不起作用,引发类型错误:

代码语言:javascript
复制
def f_np(x):
  return np.random.normal(size=x)

integrate.quad(f_manual, -np.inf, np.inf)

mtrand.pyx in numpy.random.mtrand.RandomState.normal()

_common.pyx in numpy.random._common.cont()

TypeError: 'float' object cannot be interpreted as an integer

但如果我手动输入pdf:

代码语言:javascript
复制
def f_manual(x):
   return 1/(1 * np.sqrt(2 * np.pi)) * np.exp(-(x - 0)**2 / (2 * 1**2) )

integrate.quad(f_manual, -np.inf, np.inf)

(0.9999999999999997, 1.017819145094224e-08)

知道为什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-06 04:45:03

这里发生了几件事。

np.random.normal从正态分布中提取样本。size参数指定所需的样本数。如果指定10,就会得到一个包含10个样本的数组。如果指定一个元组(如(4, 5) ),您将得到一个4x5数组。另外,np.inf是一个浮点数,而np.random.normal需要一个整数或整数元组作为大小参数。

您在f_manual中拥有的是一个确定性函数(即PDF),它以x值返回PDF的值。

这是两件不同的事情。

scipy有一个函数来返回高斯:scipy.stats.norm.pdf的PDF。

代码语言:javascript
复制
import scipy.stats
scipy.integrate.quad(scipy.stats.norm.pdf, -np.inf, np.inf)
# (0.9999999999999998, 1.0178191320905743e-08)

scipy还有一个CDF函数,它将从-inf到x的积分返回:

代码语言:javascript
复制
scipy.stats.norm.cdf(np.inf)
# 1.0

scipy.stats.norm.cdf(0)
# 0.5
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66502401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档