scipy.stats.

kstat#

scipy.stats.kstat(данные, n=2, *, ось=None, nan_policy='propagate', keepdims=False)[источник]#

Возвращает n k-статистика ( 1<=n<=4 до сих пор).

The 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, оси, которые были сокращены, остаются в результате как размерности с размером один. С этой опцией результат будет корректно транслироваться относительно входного массива.

Возвращает:
kstatfloat

The n k-статистика.

Смотрите также

kstatvar

Возвращает несмещённую оценку дисперсии k-статистики

moment

Возвращает n-й центральный момент относительно среднего для выборки.

Примечания

Для размера выборки \(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