#author("2019-11-07T09:47:18+00:00","","") #mynavi() #setlinebreak(on) #html(<script async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML"></script>) * 目次 [#gbdcb128] #contents() - 関連 -- [[機械学習の為の数学の基礎]] -- [[numpy入門]] -- [[pandas入門]] - 参考 -- [[統計Web>https://bellcurve.jp/statistics/]] * 平均値 [#h483edc5] #html(<div style="padding-left: 10px;">) #html(){{ 数式では μ(ミュー) や <math> <mover> <mo>x</mo> <mo>-</mo> </mover> </math> として表される。 }} #html(){{ <div style="padding-left: 10px;"> <math> <mrow> <mfrac> <mi>1</mi> <mo>n</mo> </mfrac> </mrow> <munderover> <mi>∑</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <msub> <mo>x</mo> <mi>1</mi> </msub> </math> </div> }} #html(</div>) //** トリム平均 [#d316d1d2] //外れ値を除いた平均 * 中央値 [#d619971c] #html(<div style="padding-left: 10px;">) データを小さい順に並べたとき中央に位置する値。 #html(</div>) * 最頻値 [#yf66f31a] #html(<div style="padding-left: 10px;">) 最も頻繁に出現する値。 #html(</div>) * 四分位範囲(IQR) [#bc1ef84e] #html(<div style="padding-left: 10px;">) 散らばりの程度を表す尺度の一つ。 四分位範囲(IQR) = 75パーセンタイル(第三四分位数) - 25パーセンタイル(第一四分位数) #mycode2(){{ data = np.array([2,69,67,75,84,92,80,77,65,78,84,95,71]) # 四分位点を求める q25, q75 = np.percentile(data, [25 ,75]) # 四分位範囲 iqr = q75 - q25 print(q25, q75 ) print(iqr) }} ** 外れ値について [#d31cf194] #html(<div style="padding-left: 10px;">) 外れ値の定義は扱われるデータによって変わるが、一般的には、値 < (Q1 - 1.5 * IQR) または 値 > (Q3 + 1.5 * IQR) を外れ値として扱う。 例1) 上記のデータから外れ値を除外する例 #mycode2(){{ print(data[(data >= q25 - 1.5 * iqr) & (data <= q75 + 1.5 * iqr)]) }} 結果 #myterm2(){{ [69 67 75 84 92 80 77 65 78 84 95 71] # 2 が除外されている }} 例2) 平均 ±Nσ の範囲外を外れ値として扱う場合 ※ 平均 ± 標準偏差 * N #mycode2(){{ # 平均 ±2σ を外れ値として扱う場合 N = 2 s_plus = data.mean() + (N * data.std()) s_minus = data.mean() - (N * data.std()) print(data[(data >= s_minus) & (data <= s_plus)]) }} 結果 #myterm2(){{ [69 67 75 84 92 80 77 65 78 84 95 71] # 2 が除外されている }} #html(</div>) #html(</div>) * 分散 ( variance ) [#td2ef10c] #html(<div style="padding-left: 10px;">) データのばらつきを表す値。 #html(<div style="display: inline-block; vertical-align: top;">) 1. 各データと平均値の差を求める 2. 1で求めた値を2乗する 3. 2で求めた値をすべて足す 4. 3で求めた値をデータ数で割る #html(</div>) #html(<div style="display: inline-block; vertical-align: top; padding: 30px;"> → </div>) #html(<div style="display: inline-block; vertical-align: top; padding: 20px;">) #html(){{ <math> <mrow> <mfrac> <mi>1</mi> <mo>n</mo> </mfrac> </mrow> <munderover> <mi>∑</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <mrow> <msup> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>-</mo> <mover> <mi>x</mi> <mo>-</mo> </mover> <mo>)</mo> </mrow> <mi>2</mi> </msup> </mrow> </math> }} #html(</div>) 例) #mycode2(){{ import numpy as np x = [1,2,3,4,5] np.sum((x - np.mean(x)) ** 2) / len(x) # 2.0 }} #html(</div>) * 標準偏差 [#nb151669] #html(<div style="padding-left: 10px;">) 標準偏差を求めるには、分散の平方根(ルート)をとる。 #html(){{ <div> <math> <mo>標準偏差</mo> <mo>=</mo> <msqrt> <mrow> <mfrac> <mi>1</mi> <mo>n</mo> </mfrac> </mrow> <munderover> <mi>∑</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <mrow> <msup> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>-</mo> <mover> <mi>x</mi> <mo>-</mo> </mover> <mo>)</mo> </mrow> <mi>2</mi> </msup> </mrow> </msqrt> </math> </div> }} #mycode2(){{ import numpy as np x = [1,2,3,4,5] np.std(x) # 1.4142135623730951 np.sqrt(np.sum((x - np.mean(x)) ** 2) / len(x)) # 1.4142135623730951 }} ** 不偏分散と標本標準偏差 [#o9973d89] #html(<div style="padding-left: 10px;">) 不偏分散の平方根をとる事で標本標準偏差を求める事ができる。 ※不偏分散は、標本分散から母分散を推測するための分散で全標本数-1で割る。 #html(){{ <math> <mo>標本標準偏差</mo> <mo>=</mo> <msqrt> <mfrac> <mo>1</mo> <mo>(n - 1)</mo> </mfrac> <munderover> <mi>∑</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <mrow> <msup> <mrow> <mo>(</mo> <mo>x</mo> <mo>-</mo> <mover> <mo>x</mo> <mo>-</mo> </mover> <mo>)</mo> </mrow> <mi>2</mi> </msup> </mrow> </msqrt> </math> }} #mycode2(){{ data = np.array([...]) np.sqrt(np.sum((data - m) ** 2) / (len(data) - 1)) }} #html(</div>) ** 偏差値の求め方 [#hbfb6d02] #html(<div style="padding-left: 10px;">) 偏差値は、元のデータを平均が50、標準偏差が10となるように変換した値。 #html(){{ <math> <mo>偏差値</mo> <mo>=</mo> <mfrac> <mrow> <mo>x</mo> <mo>-</mo> <mover> <mo>x</mo> <mo>-</mo> </mover> </mrow> <mo>s</mo> </mfrac> <mo>*</mo> <mi>10</mi> <mo>+</mo> <mi>50</mi> </math> }} ※ s: 標準偏差 #mycode2(){{ score = np.array([82, 95, 74, 65, 77, 88]) # 標準偏差 s = np.sqrt(((score - score.mean()) ** 2).sum() / (len(score))) # 偏差値 print((score - score.mean()) / s * 10 + 50) }} 結果 #myterm2(){{ [51.89289775 65.31526361 43.6329803 34.34057317 46.73044934 58.08783584] }} #html(</div>) #html(</div>) * Z得点(z値、z-score、z-value) [#ha83d6c4] #html(<div style="padding-left: 10px;">) 平均が0、標準偏差(SD)が1になるように変換した得点。 ※平均から標準偏差何個ぶん離れているか。 ※ z = (データ - 平均) / 標準偏差 #html(){{ <math> <mo>z</mo> <mo>=</mo> <mfrac> <mo>x - μ</mo> <mo>σ</mo> </mfrac> </math> }} #html(</div>) * 相関係数 [#xc2ec0e9] #html(<div style="padding-left: 10px;">) #TODO #html(</div>) * 標準化係数 [#rabe09ac] #html(<div style="padding-left: 10px;">) (データ - 平均) / 標準偏差 ※標準偏差何個分離れているか (平均を1とする) ※±1 以内は全体の 68% に含まれる #html(</div>) * P値 [#n9dbf60c] #html(<div style="padding-left: 10px;">) #html(</div>) * 有意水準 [#i8cc1bb0] #html(<div style="padding-left: 10px;">) #html(</div>) * 効果量 [#he47c768] #html(<div style="padding-left: 10px;">) #html(</div>) * 検出力 [#x0752a31] #html(<div style="padding-left: 10px;">) #html(</div>) * t検定 [#vf10a21a] #html(<div style="padding-left: 10px;">) #html(</div>) * 加重平均 [#db3031bc] #html(<div style="padding-left: 10px;">) 異なる母数を持つ複数の平均の平均を求める #html(</div>) * 平均 ±Nσ [#e5547bf0] #html(<div style="padding-left: 10px;">) 平均 ± 標準偏差 * N (範囲外は外れ値として扱う。等) #html(</div>) * その他 [#p6afe4da] #html(<div style="padding-left: 10px;">) ** 正規分布の「68-95-99.7ルール」 [#kcffce6a] #html(<div style="padding-left: 10px;">) #TODO #html(</div>) ** 標準正規分布表(Zテーブル)を使用した分布率の算出 [#gb7ced3a] #html(<div style="padding-left: 10px;">) #TODO #html(</div>) #html(</div>) // その他