scipy.stats.
kstat#
- scipy.stats.kstat(data, n=2, *, axis=None, nan_policy='propagate', keepdims=False)[源代码]#
- 返回第 n 个 k 统计量 (目前 - 1<=n<=4)。- 第 n 个 k 统计量 - k_n是第 n 个累积量 \(\kappa_n\) 的唯一对称无偏估计量 [1] [2]。- 参数:
- dataarray_like
- 输入数组。 
- nint, {1, 2, 3, 4}, 可选
- 默认值为 2。 
- axisint 或 None,默认值: None
- 如果为 int,则为计算统计量的输入轴。输入的每个轴切片(例如,行)的统计量将出现在输出的相应元素中。如果为 - None,则在计算统计量之前将展开输入。
- nan_policy{‘propagate’, ‘omit’, ‘raise’}
- 定义如何处理输入 NaN。 - propagate: 如果在计算统计量的轴切片(例如,行)中存在 NaN,则输出的相应条目将为 NaN。
- omit: 执行计算时将省略 NaN。如果计算统计量的轴切片中剩余的数据不足,则输出的相应条目将为 NaN。
- raise: 如果存在 NaN,则将引发- ValueError。
 
- keepdimsbool,默认值: False
- 如果设置为 True,则将减少的轴保留在结果中,作为大小为 1 的维度。使用此选项,结果将针对输入数组正确广播。 
 
- 返回:
- kstatfloat
- 第 n 个 k 统计量。 
 
 - 备注 - 对于样本大小 \(n\),前几个 k 统计量由下式给出 \[\begin{split}k_1 &= \frac{S_1}{n}, \\ k_2 &= \frac{nS_2 - S_1^2}{n(n-1)}, \\ k_3 &= \frac{2S_1^3 - 3nS_1S_2 + n^2S_3}{n(n-1)(n-2)}, \\ k_4 &= \frac{-6S_1^4 + 12nS_1^2S_2 - 3n(n-1)S_2^2 - 4n(n+1)S_1S_3 + n^2(n+1)S_4}{n (n-1)(n-2)(n-3)},\end{split}\]- 其中 \[S_r \equiv \sum_{i=1}^n X_i^r,\]- 且 \(X_i\) 是第 \(i\) 个数据点。 - 从 SciPy 1.9 开始,在执行计算之前, - np.matrix输入(不建议用于新代码)将转换为- np.ndarray。在这种情况下,输出将是标量或具有适当形状的- np.ndarray,而不是 2D- np.matrix。同样,虽然忽略了屏蔽数组的屏蔽元素,但输出将是标量或- np.ndarray,而不是- mask=False的屏蔽数组。- 参考文献 - 示例 - >>> from scipy import stats >>> from numpy.random import default_rng >>> rng = default_rng() - 随着样本量的增加,第 n 个矩和第 n 个 k 统计量收敛到相同的数字(尽管它们并不相同)。在正态分布的情况下,它们收敛到零。 - >>> for i in range(2,8): ... x = rng.normal(size=10**i) ... m, k = stats.moment(x, 3), stats.kstat(x, 3) ... print(f"{i=}: {m=:.3g}, {k=:.3g}, {(m-k)=:.3g}") i=2: m=-0.631, k=-0.651, (m-k)=0.0194 # random i=3: m=0.0282, k=0.0283, (m-k)=-8.49e-05 i=4: m=-0.0454, k=-0.0454, (m-k)=1.36e-05 i=6: m=7.53e-05, k=7.53e-05, (m-k)=-2.26e-09 i=7: m=0.00166, k=0.00166, (m-k)=-4.99e-09 i=8: m=-2.88e-06 k=-2.88e-06, (m-k)=8.63e-13