本文简要介绍 python 语言中 scipy.stats.rv_continuous.fit
的用法。
用法:
rv_continuous.fit(data, *args, **kwds)#
从数据中返回对形状(如果适用)、位置和比例参数的估计。默认估计方法是最大似然估计 (MLE),但也可以使用矩量法 (MM)。
拟合的起始估计由输入参数给出;对于未提供初始估计的任何参数,调用
self._fitstart(data)
来生成此类参数。通过传入关键字参数
f0
、f1
、...、fn
(用于形状参数)和floc
和fscale
(分别用于位置和比例参数),可以将某些参数固定为特定值。- data: 数组 或
CensoredData
实例 用于估计分布参数的数据。
- arg1, arg2, arg3,…: 浮点数,可选
任何 shape-characterizing 参数的起始值(未提供的将通过调用
_fitstart(data)
来确定)。没有默认值。- **kwds: 浮点数,可选
loc:分布位置参数的初始猜测。
尺度:分布尺度参数的初始猜测。
特殊关键字参数被认为是固定某些参数:
f0…fn :保持各自的形状参数固定。或者,可以通过名称指定要修复的形状参数。例如,如果
self.shapes == "a, b"
、fa
和fix_a
等效于f0
,并且fb
和fix_b
等效于f1
。floc:将位置参数固定为指定值。
fscale:将比例参数固定为指定值。
优化器:要使用的优化器。优化器必须将
func
和起始位置作为前两个参数,加上args
(用于传递给要优化的函数的额外参数)和disp=0
以抑制作为关键字参数的输出。方法:使用的方法。默认为“MLE”(最大似然估计); “MM”(矩量法)也可用。
- data: 数组 或
- parameter_tuple: 浮点数元组
估计任何形状参数(如果适用),然后是位置和比例。对于大多数随机变量,将返回形状统计信息,但也有例外(例如
norm
)。
- 类型错误,ValueError
如果输入无效
FitError
如果拟合失败或产生的拟合无效
参数 ::
返回 ::
抛出 ::
注意:
使用
method="MLE"
(默认),通过最小化负对数似然函数来计算拟合。对于超出分布支持的观测值,应用较大的有限惩罚(而不是无限负对数似然)。和
method="MM"
,通过最小化第一个之间的相对误差的 L2 范数来计算拟合k原始(大约为零)数据矩和相应的分布矩,其中k是非固定参数的数量。更准确地说,目标函数是:(((data_moments - dist_moments) / np.maximum(np.abs(data_moments), 1e-8))**2).sum()
其中常数
1e-8
避免在数据矩消失的情况下被零除。通常,这个误差范数可以减少到零。请注意,标准矩量法可能会产生一些数据超出拟合分布支持的参数;这个实现并没有阻止这种情况。对于任何一种方法,都不能保证返回的答案是全局最优的;它可能只是局部最优的,或者优化可能完全失败。如果数据包含
np.nan
、np.inf
或-np.inf
中的任何一个,则fit
方法将引发RuntimeError
。例子:
生成一些数据来拟合:从
beta
分布中抽取随机变量>>> from scipy.stats import beta >>> a, b = 1., 2. >>> x = beta.rvs(a, b, size=1000)
现在我们可以拟合所有四个参数(
a
、b
、loc
和scale
):>>> a1, b1, loc1, scale1 = beta.fit(x)
我们还可以使用一些有关数据集的先验知识:让我们保持
loc
和scale
固定:>>> a1, b1, loc1, scale1 = beta.fit(x, floc=0, fscale=1) >>> loc1, scale1 (0, 1)
我们还可以使用
f
-keywords 来固定形状参数。要保持 zero-th 形状参数a
等于 1,请使用f0=1
或等效的fa=1
:>>> a1, b1, loc1, scale1 = beta.fit(x, fa=1, floc=0, fscale=1) >>> a1 1
并非所有分布都返回形状参数的估计值。例如,
norm
仅返回位置和规模的估计值:>>> from scipy.stats import norm >>> x = norm.rvs(a, b, size=1000, random_state=123) >>> loc1, scale1 = norm.fit(x) >>> loc1, scale1 (0.92087172783841631, 2.0015750750324668)
相关用法
- Python SciPy rv_continuous.entropy用法及代码示例
- Python SciPy rv_continuous.expect用法及代码示例
- Python SciPy rv_histogram.fit用法及代码示例
- Python SciPy rv_histogram.expect用法及代码示例
- Python SciPy rv_histogram.entropy用法及代码示例
- Python SciPy rv_discrete.entropy用法及代码示例
- Python SciPy interpolate.make_interp_spline用法及代码示例
- Python SciPy stats.anderson用法及代码示例
- Python SciPy ClusterNode.pre_order用法及代码示例
- Python SciPy stats.iqr用法及代码示例
- Python SciPy FortranFile.read_record用法及代码示例
- Python SciPy ndimage.correlate用法及代码示例
- Python SciPy special.exp1用法及代码示例
- Python SciPy special.expn用法及代码示例
- Python SciPy signal.czt_points用法及代码示例
- Python SciPy interpolate.krogh_interpolate用法及代码示例
- Python SciPy ndimage.morphological_gradient用法及代码示例
- Python SciPy distance.sokalmichener用法及代码示例
- Python SciPy linalg.eigvalsh_tridiagonal用法及代码示例
- Python SciPy linalg.cdf2rdf用法及代码示例
- Python SciPy csc_array.diagonal用法及代码示例
- Python SciPy fft.idctn用法及代码示例
- Python SciPy linalg.LaplacianNd用法及代码示例
- Python SciPy linalg.solve_circulant用法及代码示例
- Python SciPy hierarchy.ward用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.stats.rv_continuous.fit。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。