LoginSignup
1
0

More than 1 year has passed since last update.

scipy.stats: 記述統計 describe

Posted at

記述統計 describe

サンプルサイズ,最小値,最大値,平均値,分散,歪度,尖度を求める。

describe(a, axis=0, ddof=1, bias=True, nan_policy='propagate')

from scipy.stats import describe
x = [1.2, 3.1, 4.6, 2.2, 5.7]
describe(x)
DescribeResult(nobs=5, minmax=(1.2, 5.7), mean=3.3599999999999994, variance=3.2729999999999997, skewness=0.14460191499270095, kurtosis=-1.3684571122281206)

表示される variance は,デフォルトで ddof=1numpy.var(x, ddof=1) すなわち,不偏分散である。

np.var(x, ddof=1)
3.2729999999999997

ddof=0 を指定すれば,不偏でない分散を表示する。

describe(x, ddof=0)
DescribeResult(nobs=5, minmax=(1.2, 5.7), mean=3.3599999999999994, variance=2.6184, skewness=0.14460191499270095, kurtosis=-1.3684571122281206)
np.var(x)
2.6184

表示される skewness,kurtosis は,デフォルトで bias=True であり,, scipy.statsskew(x), kurtosis(x) で計算されるものである。

from scipy.stats import skew, kurtosis
skew(x), kurtosis(x)
(0.14460191499270095, -1.3684571122281206)

biase=False を指定すれば,不偏推定量を表示する。

describe(x, bias=False)
DescribeResult(nobs=5, minmax=(1.2, 5.7), mean=3.3599999999999994, variance=3.2729999999999997, skewness=0.2155598077335502, kurtosis=-1.4738284489124838)
skew(x, bias=False), kurtosis(x, bias=False)
(0.2155598077335502, -1.4738284489124838)

多重代入して,必要なものだけを取り出すこともできる。

n, minmax, mean, variance, skewness, kurtosis = describe(x)
minmax[1]
5.7

2 次元以上の配列の場合には,axis で計算軸を指定できる。1

A = [[1.0, 2.0, 3.0],
     [4.0, 5.0, 6.0]]

axis=0 で各列に対して集計される。

describe(A, axis=0)
DescribeResult(nobs=2, minmax=(array([1., 2., 3.]), array([4., 5., 6.])), mean=array([2.5, 3.5, 4.5]), variance=array([4.5, 4.5, 4.5]), skewness=array([0., 0., 0.]), kurtosis=array([-2., -2., -2.]))

axis=1 で各行に対して集計される。

describe(A, axis=1)
DescribeResult(nobs=3, minmax=(array([1., 4.]), array([3., 6.])), mean=array([2., 5.]), variance=array([1., 1.]), skewness=array([0., 0.]), kurtosis=array([-1.5, -1.5]))

NaN 具体的には np.nan を含む場合には統計量はすべて nan になる。

x = [1.2, 3.1, 4.6, 2.2, 5.7, np.nan]
describe(x)
DescribeResult(nobs=6, minmax=(nan, nan), mean=nan, variance=nan, skewness=nan, kurtosis=nan)

NaN を除いて統計量を求めるためには,事前に NaN を除くか,nan_policy='omit' を指定する。

y = np.array(x)[~np.isnan(x)]
describe(y)
DescribeResult(nobs=5, minmax=(1.2, 5.7), mean=3.3599999999999994, variance=3.2729999999999997, skewness=0.14460191499270095, kurtosis=-1.3684571122281206)
describe(x, nan_policy='omit')
DescribeResult(nobs=5, minmax=(masked_array(data=1.2,
             mask=False,
       fill_value=1e+20), masked_array(data=5.7,
             mask=False,
       fill_value=1e+20)), mean=3.3599999999999994, variance=3.2729999999999997, skewness=masked_array(data=0.14460191,
             mask=False,
       fill_value=1e+20), kurtosis=-1.3684571122281206)
  1. scipy.stats の統計関数に共通

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0