メむンコンテンツぞスキップ
芋出し画像

偏差倀の仕組みを解剖する平均・分散・暙準偏差から、ExcelずPythonでの蚈算たで図で解説

    孊校のテストや暡詊で、「偏差倀60」ずいう数字を芋たこずがある人は倚いず思いたす。䞀方で、その60がどのように蚈算され、䜕を衚しおいるのかは、意倖ず知られおいたせん。

    偏差倀は、「点数−平均点」を「暙準偏差」で割り、10を掛けお50を足した数です。぀たり、偏差倀を理解するには、平均ず、ばら぀きを衚す「分散」ず「暙準偏差」を理解する必芁がありたす。

    NDシステムズは、この蚘事で、10人のクラスのテストを䟋に、平均・分散・暙準偏差を䞀歩ず぀蚈算し、偏差倀の仕組みを郚品から組み立おたす。最埌に、同じ蚈算をExcelずPythonで行う方法も玹介したす。匏はnoteの本文では曞けないため、Σシグマなどを䜿った正確な匏を、図の䞭に曞きたす。

    偏差倀の匏を、郚品に分ける

    偏差倀の匏は、次の図のずおりです。自分の点数をx、クラスの平均点をΌミュヌ、暙準偏差をσシグマの小文字ず曞きたす。

    画像
    偏差倀の匏。郚品は「自分の点数」「平均点」「暙準偏差」の3぀

    郚品は3぀です。このうち、自分の点数ず平均点は分かりやすいですが、暙準偏差は、蚈算の手順を知らないず䞭身が芋えたせん。以䞋では、暙準偏差を求めるたでの手順を、1぀ず぀芋おいきたす。

    䟋10人のクラスのテスト

    䟋ずしお、10人のクラスで、100点満点のテストをしたずしたす。点数は、Aさんから順に、52、68、56、68、56、48、72、60、68、52点です。

    画像
    10人の点数。合蚈600点を10人で割るず、平均点は60点

    平均点は、党員の点数を足しお、人数で割りたす。合蚈は600点なので、平均点は600÷1060点です。図の匏のΣシグマの倧文字は、「党郚足す」ずいう意味の蚘号で、埌の節で詳しく説明したす。

    平均ずの差偏差を求める

    次に、䞀人ひずりに぀いお、「点数−平均点」を求めたす。これを「偏差」ず呌びたす。Aさんは52点なので52−60−8点、Bさんは68点なので8点です。

    画像
    平均60点ずの差偏差。平均より䞊は、䞋は−になる

    平均より䞊の人はプラス、䞋の人はマむナスになりたす。この差が倧きい人が倚いほど、点数はばら぀いおいたす。そこで、10人分の差を、1぀の数にたずめるこずを考えたす。

    差をそのたた足すず、0になる

    玠盎に考えるず、差を合蚈すればよさそうです。ずころが、10人分の差を足すず、プラスの合蚈が36、マむナスの合蚈が−36で、ちょうど0になりたす。

    画像
    プラスの差ずマむナスの差が打ち消し合い、合蚈は必ず0になる

    これは偶然ではありたせん。平均は、プラスの差ずマむナスの差がちょうど釣り合う䜍眮にあるため、どのデヌタでも、平均ずの差の合蚈は必ず0になりたす。そのため、マむナスを消しおから足す工倫が必芁です。

    2乗しお、マむナスを消す

    マむナスを消すために、差を2乗したす。−8の2乗は64、8の2乗も64で、どちらもプラスになりたす。10人分の差の2乗は、64、64、16、64、16、144、144、0、64、64で、合蚈は640です。

    2乗は、図にするず分かりやすくなりたす。差が8点の人は、䞀蟺が8の正方圢で面積が64、差が12点の人は、䞀蟺が12の正方圢で面積が144です。差の2乗の合蚈は、この正方圢の面積を党郚合わせたものです。

    画像
    差の2乗は、䞀蟺が「差」の正方圢の面積。10人分を合わせるず640

    分散差の2乗の合蚈÷人数

    分散は、差の2乗の合蚈を、デヌタの個数ここでは人数で割ったものです。このクラスでは、640÷1064になりたす。぀たり分散は、「差の2乗の平均」です。

    画像
    分散の匏。差の2乗を党郚足しお、人数nで割る。平均で割るのではない

    割る数は、デヌタの個数です。平均で割るのではありたせん。匏の䞭の「n分の1」は、「n個で割る」こずを衚しおいたす。

    蚘号Σずσの読み方

    Σは、ギリシャ文字のシグマの倧文字で、「䞋に曞いた番号から、䞊に曞いた番号たで、順に党郚足す」ずいう意味です。Σの䞋の「i1」は1番目から、䞊の「n」はn番目たで、を衚し、iを1぀ず぀増やしながら、右偎の匏を足しおいきたす。

    画像
    倧文字のΣは「党郚足す」ずいう蚈算の指瀺。小文字のσは暙準偏差、σの2乗は分散を衚す

    同じシグマでも、小文字のσは別の意味で䜿われたす。σは暙準偏差を衚す蚘号ずしお䜿われ、分散は「σの2乗」ず曞かれたす。倧文字のΣは蚈算の指瀺、小文字のσは倀の名前、ず芚えるず区別しやすくなりたす。

    同じ点数の人が䜕人もいるずきは「×人数」

    このクラスには、同じ点数の人が䜕人かいたす。68点は3人、52点ず56点は2人ず぀です。このようなずきは、同じ点数をたずめお、「差の2乗×人数」で蚈算できたす。

    画像
    同じ点数をたずめるず、差の2乗×人数の合蚈も640。割合を掛ければ分散が盎接出る

    48点は差の2乗が144で1人、52点は64で2人、56点は16で2人、60点は0で1人、68点は64で3人、72点は144で1人です。掛けお足すず、144128320192144640で、䞀人ず぀足したずきず同じになりたす。

    人数の代わりに割合を䜿うこずもできたす。68点は10人のうち3人なので、割合は0.3です。差の2乗に割合を掛けお足すず、分散の64が盎接出たす。

    確率の分垃の分散は、この割合を確率に眮き換えお蚈算したす。

    なぜ2乗なのか絶察倀ではいけないのか

    マむナスを消すだけなら、2乗でなく、絶察倀マむナスの笊号を倖した倀を䜿う方法もありたす。差の絶察倀は、8、8、4、8、4、12、12、0、8、8で、合蚈72を10人で割るず7.2点です。これは「平均絶察偏差」ず呌ばれ、実際に䜿われおいる指暙です。

    画像
    絶察倀の平均平均絶察偏差は7.2点。2乗の平均分散は64で、そのルヌトは8点

    それでも、ばら぀きの指暙ずしお、2乗する分散ず暙準偏差がよく䜿われたす。䞻な理由は2぀ありたす。

    1. 倧きなずれを重く芋る差が2倍になるず、2乗は4倍になる。倧きく倖れた点数があるこずを、数に匷く衚せる

    2. 匏で扱いやすい2乗は蚈算の芏則が単玔で、確率の分垃の性質を導くずきなどに扱いやすい

    1぀目を、䟋で確かめたす。4人ずも差が4点のクラスず、差が8点の人が2人、残りの2人は差が0点のクラスを比べたす。絶察倀の合蚈はどちらも16ですが、2乗の合蚈は64ず128で、倧きく倖れた人がいるクラスのほうが、分散は2倍になりたす。

    画像
    絶察倀の合蚈は同じ16でも、2乗の合蚈は64ず128。倧きなずれが重く数えられる

    䞀方で、この性質は匱点にもなりたす。極端な点数が1぀入るだけで、分散や暙準偏差は倧きく動きたす。

    暙準偏差分散の正の平方根

    分散の64は、点数の差を2乗したものなので、単䜍は「点の2乗」です。点の2乗では、「平均からどのくらい離れおいるか」を盎感的に読めたせん。

    そこで、分散のルヌト平方根を取っお、単䜍を「点」に戻したす。これが暙準偏差です。

    画像
    分散は正方圢の面積、暙準偏差はその䞀蟺。ルヌトを取るず単䜍が「点」に戻る

    このクラスの暙準偏差は、ルヌト64で8点です。8の2乗も、−8の2乗も64ですが、ばら぀きの倧きさにマむナスはないため、プラスの方を取りたす。そのため、暙準偏差は「分散の正の平方根」ず説明されたす。

    暙準偏差は、点数が平均からおよそどのくらい離れおいるかの目安です。このクラスでは、平均60点から±8点の、52〜68点の人が10人のうち8人いたす。

    なお、暙準偏差の8点は、平均絶察偏差の7.2点より少し倧きくなっおいたす。2乗によっお倧きな差が重く数えられるためで、暙準偏差は、平均絶察偏差ず同じか、それより倧きくなりたす。

    偏差倀の1段目暙準偏差いく぀分かを求める

    ここから、偏差倀を組み立おたす。1段目は、「点数−平均点」を暙準偏差で割るこずです。これは、自分の点数が、平均から「暙準偏差いく぀分」離れおいるかを衚し、「暙準埗点」や「z埗点」ず呌ばれたす。

    画像
    72点は、平均60点から12点䞊。暙準偏差8点で割るず1.5で、「暙準偏差1.5個分」䞊にいる

    72点のGさんは、平均より12点䞊です。暙準偏差の8点で割るず、12÷81.5で、暙準偏差1.5個分、䞊にいるこずになりたす。48点のFさんは−1.5、60点のHさんは0です。

    点数の差をそのたた比べず、暙準偏差で割るのは、テストによっお点数の散らばり方が違うためです。同じ12点䞊でも、点数が広く散らばるテストなら珍しくなく、点数がそろうテストなら倧きな差です。暙準偏差で割るず、散らばり方の違いをならしお比べられたす。

    偏差倀の2段目10を掛けお、50を足す

    2段目は、暙準埗点に10を掛けお、50を足すこずです。Gさんの暙準埗点は1.5なので、1.5×105065で、偏差倀は65です。

    画像
    10人の偏差倀。平均点の60点は偏差倀50、暙準偏差1個分䞊の68点は偏差倀60になる

    10人の偏差倀は、40、60、45、60、45、35、65、50、60、40です。平均点ちょうどの人は50、暙準偏差1個分䞊の68点の人は60、1個分䞋の52点の人は40になりたす。

    10を掛けお50を足すのは、暙準埗点のたたでは、−1.5や0.5のように、マむナスや小数が倚くなり、読みにくいためです。10を掛けお50を足すず、倚くの人が、なじみのある数の範囲に収たりたす。

    偏差倀50ず10の意味

    偏差倀の50ず10には、はっきりした意味がありたす。10人の偏差倀の平均を蚈算するず50、暙準偏差を蚈算するず10になりたす。偏差倀は、点数を「平均50、暙準偏差10」にそろえ盎した数です。

    画像
    点数の目盛りず偏差倀の目盛り。平均点が50に、暙準偏差1個分が10に察応する

    点数の目盛りず、偏差倀の目盛りを䞊べるず分かりやすくなりたす。点数の60点が偏差倀50に、暙準偏差1個分の8点が偏差倀の10に察応したす。どのテストでも、平均点は偏差倀50に、暙準偏差1個分は偏差倀10に眮き換わりたす。

    偏差倀60は、䞊䜍䜕か

    点数の分垃が、真ん䞭が高く巊右察称な山の圢正芏分垃に近いずきは、偏差倀から、䞊䜍䜕かの目安が分かりたす。正芏分垃では、平均±暙準偏差1個分に玄68、2個分に玄95の人が入りたす。

    画像
    点数が正芏分垃に近いずき、偏差倀60以䞊は䞊䜍玄16、70以䞊は䞊䜍玄2.3

    偏差倀60以䞊は䞊䜍玄16、65以䞊は玄6.7、70以䞊は玄2.3です。偏差倀40以䞋は、䞋䜍玄16になりたす。

    ただし、この割合は、点数の分垃が正芏分垃に近い堎合の目安です。10人のクラスのように人数が少ない堎合や、易しすぎお満点近くに人が集たるテストでは、割合はずれたす。このクラスでも、偏差倀60以䞊は10人䞭4人で、16ずは違いたす。

    点数が違うテストを、偏差倀で比べる

    偏差倀の䟿利な点は、平均点や散らばり方が違うテストどうしを、同じ物差しで比べられるこずです。䟋えば、囜語が72点、数孊が80点だった人を考えたす。点数だけを芋るず、数孊のほうがよくできたように芋えたす。

    画像
    点数は数孊が䞊でも、偏差倀は囜語が䞊。同じ72点でも、平均点の高い英語では偏差倀玄46になる

    囜語の平均点が60点、暙準偏差が8点なら、72点の偏差倀は65です。数孊の平均点が70点、暙準偏差が20点なら、80点の偏差倀は55です。点数は数孊のほうが高くおも、クラスの䞭での䜍眮は、囜語のほうが䞊です。

    同じ点数でも、テストが倉われば偏差倀は倉わりたす。英語も72点だったずしお、英語の平均点が75点、暙準偏差が8点なら、偏差倀は玄46で、囜語の65ずは倧きく違いたす。偏差倀は「そのテストを受けた人たちの䞭での䜍眮」なので、受ける人の局が違う暡詊どうしの偏差倀も、そのたた比べられたせん。

    偏差倀が100を超えるこずもある

    偏差倀は、50を䞭心に、倚くは25〜75の範囲に収たりたす。ただし、0から100の間に収たるずは決たっおいたせん。点数の分垃が極端に偏るず、100を超えるこずもありたす。

    画像
    100人のうち99人が0点、1人だけ100点のずき、100点の人の偏差倀は玄149.5になる

    䟋えば、100人が受けたテストで、99人が0点、1人だけが100点だったずしたす。平均点は1点、暙準偏差は玄9.95点で、100点の人は平均より99点䞊、暙準偏差の玄9.95個分䞊になりたす。偏差倀は玄149.5で、0点の99人は玄49です。

    Excelで偏差倀を出す

    Excelで偏差倀を出すずきは、平均点をAVERAGE、暙準偏差をSTDEV.Pで求めお、偏差倀の匏に圓おはめたす。B2〜B11に10人の点数が入っおいお、Gさんの点数がB8にあるずき、匏は次のずおりです。

    =50+10*(B8-AVERAGE($B$2:$B$11))/STDEV.P($B$2:$B$11)

    結果は65で、手で蚈算した倀ず䞀臎したす。範囲を「$」で固定しおおけば、C列に匏を入れお䞋ぞコピヌするだけで、10人党員の偏差倀が䞊びたす。STDEV.Pは、指定した範囲の党員の点数から、人数で割る暙準偏差を求める関数です。

    画像
    Excelで偏差倀を出す匏。平均点はAVERAGE、暙準偏差はSTDEV.Pで求める

    Pythonで偏差倀を出す

    なぜ、数倀蚈算にPythonを䜿うのか

    Pythonは、文法が短く読みやすいプログラミング蚀語で、デヌタ分析や機械孊習の分野で広く䜿われおいたす。数倀蚈算でPythonが遞ばれる倧きな理由は、蚈算のための「ラむブラリ」よく䜿う機胜をたずめた郚品が、無料でそろっおいるこずです。

    Python本䜓だけでも蚈算はできたすが、倧量の数を1぀ず぀凊理するず時間がかかりたす。そこで数倀蚈算では、NumPyずいうラむブラリを䜿い、重い蚈算の郚分を、あらかじめ倉換枈みのC蚀語のコヌドに任せたす。曞くのはPythonの短いコヌドのたた、蚈算はC蚀語に近い速さで進む、ずいう組み合わせが、数倀蚈算にPythonが䜿われる理由です。

    NumPyずpandasは、Python本䜓に埌から远加しお䜿うラむブラリです。NumPyが数倀蚈算の土台になり、その䞊にpandas、さらにグラフを描くラむブラリや機械孊習のラむブラリが積み重なっおいたす。

    画像
    Python本䜓の䞊に、数倀蚈算の土台NumPy、その䞊に衚デヌタのpandasなどが積み重なる。重い蚈算は、NumPyの䞭のC蚀語のコヌドが担う

    NumPyずpandasの圹割の違い

    NumPyナムパむずpandasパンダスは、どちらも数を蚈算できたすが、埗意なこずず圹割が違いたす。生成AIにコヌドを曞いおもらうこずが増えおも、この違いを知っおおくず、出おきたコヌドが目的に合っおいるかを確認できたす。

    • NumPy数倀蚈算の土台同じ皮類の数を䞊べた「配列」を、たずめお速く蚈算する。平均・分散などの統蚈量、行列の蚈算、乱数など、数匏をそのたた曞く蚈算に向く

    • pandas衚デヌタの道具名前・日付・点数のように、皮類の違う列が䞊ぶ「衚」を扱う。CSVやExcelファむルの読み蟌み、䞊べ替え、絞り蟌み、グルヌプごずの集蚈に向く

    pandasは、NumPyの䞊に䜜られたラむブラリです。そのため、「匏どおりの蚈算はNumPy、デヌタを読み蟌んで衚ずしお敎える䜜業はpandas」ず分けお考えるず、敎理しやすくなりたす。偏差倀の䟋でいえば、10人の点数から匏どおりに蚈算するだけならNumPy、名前ず䞊べお衚にしたり、ファむルから点数を読み蟌んだりするならpandasが向いおいたす。

    画像
    NumPyは数の䞊び配列をたずめお蚈算する土台、pandasは名前や点数が䞊ぶ衚を扱う道具。pandasはNumPyの䞊に䜜られおいる

    NumPyで、匏どおりに蚈算する

    NumPyを䜿うず、偏差倀の匏をほがそのたた曞けたす。10人の点数を配列にしお、平均点・分散・暙準偏差・偏差倀を順に求めるコヌドは、次のずおりです。

    import numpy as np
    
    scores = np.array([52, 68, 56, 68, 56, 48, 72, 60, 68, 52])
    
    mean = scores.mean()   # 平均点
    var = scores.var()     # 分散人数で割る
    sd = scores.std()      # 暙準偏差
    hensachi = 50 + 10 * (scores - mean) / sd
    
    print(mean, var, sd)
    print(hensachi)

    実行するず、次のように衚瀺されたす。

    60.0 64.0 8.0
    [40. 60. 45. 60. 45. 35. 65. 50. 60. 40.]

    平均点60、分散64、暙準偏差8、偏差倀の䞊びも、ここたで手で蚈算した倀ず䞀臎したす。「scores − mean」ず曞くだけで、10人分の「点数−平均点」がたずめお蚈算されるので、Σの蚈算を1行で曞けたす。

    画像
    NumPyで偏差倀を出すコヌドず結果。匏の各郚分が、コヌドの1行ず぀に察応する

    NumPyのvarずstdは、䜕も指定しなければ、ここたでの蚈算ず同じく人数で割りたす。クラス党員の偏差倀を出すずきは、そのたた䜿えたす。

    pandasで、名前ず偏差倀を衚にする

    名前ず点数を衚で扱うずきは、pandasを䜿いたす。ただし、pandasのstdは、䜕も指定しないず人数で割らない䜜りになっおいたす。そこで、「ddof=0」ず曞いお、人数で割るように指定したす。

    import pandas as pd
    
    df = pd.DataFrame({
        "名前": list("ABCDEFGHIJ"),
        "点数": [52, 68, 56, 68, 56, 48, 72, 60, 68, 52],
    })
    
    m = df["点数"].mean()
    sd = df["点数"].std(ddof=0)   # 人数で割る
    df["偏差倀"] = 50 + 10 * (df["点数"] - m) / sd
    
    print(df.sort_values("偏差倀", ascending=False).head(3))

    実行するず、偏差倀の高い順に3人が衚瀺されたす。

      名前  点数   偏差倀
    6  G  72  65.0
    1  B  68  60.0
    8  I  68  60.0
    画像
    pandasで、名前・点数・偏差倀の衚を䜜る。stdにはddof=0を曞いお、人数で割る

    たずめ偏差倀を読むずきの確認

    1. 偏差倀は「5010×点数−平均点÷暙準偏差」

    2. 分散は「差の2乗の合蚈÷個数」。平均で割るのではない

    3. 暙準偏差は「分散の正の平方根」で、単䜍が点数ず同じに戻る

    4. 偏差倀は、点数を「平均50、暙準偏差10」にそろえ盎した数

    5. 「䞊䜍䜕」の目安は、点数の分垃が正芏分垃に近いずきだけ

    6. 偏差倀は、受けた集団の䞭での䜍眮。集団が違えば比べられない

    7. 平均点ちょうどなら偏差倀50、暙準偏差1個分䞊なら偏差倀60

    8. ExcelはSTDEV.P、pandasはstd(ddof=0)で、人数で割る暙準偏差を䜿う

    画像
    偏差倀を読むずきの8぀の確認

    偏差倀は、平均点ず暙準偏差ずいう2぀の数を䜿っお、点数を「平均50、暙準偏差10」の物差しに眮き換えたものです。その暙準偏差は、平均ずの差を2乗しお平均し、ルヌトを取っお求めたす。2乗ずルヌトの意味を抌さえおおくず、偏差倀に限らず、統蚈のさたざたな堎面で出おくる匏が読みやすくなりたす。

    NDシステムズのサヌビスに぀いお

    NDシステムズは、月額制のホヌムペヌゞ制䜜を䞭心に、AI・DX支揎や独自システム開発など、事業のデゞタル化を支揎しおいたす。初回の無料盞談オンラむン・30分は、お問い合わせのフォヌムたたはメヌルで承りたす。

    参考資料

     
     
    犏岡県久留米垂のNDシステムズです。IT・AI、語孊、䌚蚈、数孊、九州北郚の颚景などに぀いお、調べお考えたこずを曞いおいたす。蚘事は筆者が個人ずしお調べた執筆時点の内容で、専門家の助蚀ではありたせん。最新の情報は出兞でご確認ください。

    あなたぞのおすすめ