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]。- 参数:
- 数据array_like
输入数组。
- nint, {1, 2, 3, 4}, 可选
默认值等于 2。
- 轴int 或 None, 默认: None
如果是一个整数,表示输入数据中要计算统计量的轴。输入数据的每个轴切片(例如行)的统计量将出现在输出的相应元素中。如果为
None
,则在计算统计量之前会将输入数据展平。- nan_policy{‘propagate’, ‘omit’, ‘raise’}
定义如何处理输入的 NaN。
propagate
: 如果在计算统计量的轴切片(例如行)中存在 NaN,则输出的相应条目将为 NaN。omit
: 在执行计算时,NaN 将被省略。如果在计算统计量的轴切片中剩余的数据不足,则输出的相应条目将为 NaN。raise
: 如果存在 NaN,将引发ValueError
。
- keepdimsbool, 默认值: False
如果设置为True,被减少的轴将作为尺寸为1的维度保留在结果中。通过此选项,结果将正确地与输入数组进行广播。
- 返回:
- kstat浮动
第 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