岡竜之介のブログ

岡竜之介のブログです。

標準誤差の計算方法

統計の質問です。例えば、培養条件をAまたはBの2パターン設定し、各条件で培養している微生物が3サンプルずつある(e.g.各条件で3本のフラスコ、合計6本のフラスコで培養)とします。各サンプルにおける微生物の濃度を3回ずつ測定し、条件AとBそれぞれにおける濃度の平均値を比較する際、標準誤差はどう求めれば良いでしょうか?すなわち、測定値が2条件×3サンプル×3回測定=18個あり、サンプル毎の平均値や標準誤差などが求められる場合、条件毎の標準誤差を求める方法を教えてください。


僕のask.fmに来てた質問です。


これの解答を考えていたらそこそこ時間がかかってしまったので、


せっかくなので記事にまとめてみます。

標準誤差


Wikipediaによると

標準誤差(ひょうじゅんごさ)は、母集団からある数の標本を選ぶとき、選ぶ組み合わせに依って統計量がどの程度ばらつくかを、全ての組み合わせについての標準偏差で表したものをいう。

統計量を指定せずに単に「標準誤差」と言った場合、標本平均の標準誤差(standard error of the mean、SEM)のことを普通は指す。

なるほど?


例えば、母集団が{1,2,3}で、ここから標本を2つ選ぶ場合、標本のパターンは{1,2}{1,3}{2,3}で、各パターンの標本平均はそれぞれ1.5, 2, 2.5。
標本平均の平均値は2なので、標準偏差{\sqrt{\frac{(1.5-2)^2+(2-2)^2+(2.5-2)^2}{3}}=\frac{\sqrt{6}}{6}}で、約0.41。これが標準誤差です。


「標準誤差」は、母集団分布と、取る標本数から決定されるんですね。

でも多くの場合、母集団分布なんてわからないので、これを推定するわけです。

普段何気なく「標準誤差」なんて呼んでる数値は、あくまで「標準誤差の推定値」もしくは「標準誤差を点推定した値」なんですね。

今回の問題の標準誤差

では始めの問題に戻って考えてみましょう。

条件はAとBの2パターンあるということですが、それぞれの条件についての標準誤差を求めればいいので、パターンの数は一つだけ考えればOKです。

サンプル数と測定回数は一般化して、こんな感じにしてみます。

同じ条件に基づいてサンプルをn本作り、それぞれm回ずつ測定した。この時の測定値の標準誤差を推定せよ。

考え方1 サンプルの違いは無視する

単純に、同じ条件に基づいてnm回測定した、と考えてみます。N=mnとします。N個の測定値が手元にあるわけですね。


ここでいくつか記号を定義します。

{w_1,w_2,...,w_N}:N個の測定値。具体的な値ではなく、確率変数とします。それぞれが平均と分散を持ちます。あと、全部独立とします。

{V}:分散。

{SD}標準偏差。分散の平方根です。

{\displaystyle
V(w_1)=V(w_2)=...=V(w_N)
}
みたいに関数として表記することにします。ちなみに、測定値は全て同じ確率分布に従うので、この式は正しいです。

{\displaystyle
V(w) = V(w_1)
}

としておきます。


さて、求める標準誤差はどう表されるでしょうか?


標準誤差は、標本平均が従う確率分布の標準偏差です。

ということは、{SD\left(\cfrac{w_1+w_2+...+w_N}{N}\right)}が、求めたい標準誤差です。

計算すると
{\displaystyle
SD\left(\cfrac{w_1+w_2+...+w_N}{N}\right)\\
=\sqrt{V\left(\cfrac{w_1+w_2+...+w_N}{N}\right)}\\
=\sqrt{\cfrac{1}{N^2} V(w_1+w_2+...+w_N)}\\
=\sqrt{\cfrac{1}{N^2} (V(w_1)+V(w_2)+...+V(w_N))}\\
=\sqrt{\cfrac{1}{N^2} NV(w)}\\
=\sqrt{\cfrac{V(w)}{N}}\\
=\cfrac{SD(w)}{\sqrt{N}}
}

となります。

SD(w)には、標本標準偏差を推定値として代入しておけば良いでしょう。

考え方2 サンプルの違いを考慮する

サンプルの違いをきちんと考慮するとどうなるでしょうか。

ここで、また記号を定義します。

{u_{kl}}:k個目のサンプルから得られた、l個目の測定値。これも具体的な値じゃなくて確率変数とします。

同じサンプルから測定値を得る時は、同じ確率分布に従うものとします。サンプルの時間変化は考慮しないってことですね。


{V(u_k) = V(u_{k1}) = V(u_{k2}) = ... = V(u_{km})}とします。


{\displaystyle SD\left(\frac{1}{nm}\sum_{k=1}^n \sum_{l=1}^m u_{kl}\right)} が求めたい標準誤差です。

SD()の中身は一見わかりにくいですが、測定値の平均をとってるだけです。

計算すると


{\displaystyle
SD\left(\frac{1}{nm}\sum_{k=1}^n \sum_{l=1}^m u_{kl}\right)\\
\displaystyle =\sqrt{V \left(\frac{1}{nm}\sum_{k=1}^n \sum_{l=1}^m u_{kl}\right)}\\
\displaystyle =\sqrt{\frac{1}{n^2m^2}V \left(\sum_{k=1}^n \sum_{l=1}^m u_{kl}\right)}\\
\displaystyle =\sqrt{\frac{1}{n^2m^2} \sum_{k=1}^n \sum_{l=1}^m V(u_{kl})}\\
\displaystyle =\sqrt{\frac{1}{n^2m^2} \sum_{k=1}^n m V(u_{k})}\\
\displaystyle =\sqrt{\frac{1}{n^2m} \sum_{k=1}^n V(u_{k})}\\
\displaystyle =\frac{1}{n\sqrt{m}}\sqrt{ \sum_{k=1}^n (SD(u_{k}))^2}\\
}


はい。これが標準誤差です。


あとは、SDに標本標準偏差でも推定値として突っ込んで、計算すれば良いでしょう。


ちなみに質問文に「サンプル毎の標準誤差が求められる」とあるので、それをsdkとして使うとすると

サンプル毎の標準誤差
{
\displaystyle = sd_k\\
\displaystyle = SD\left(\frac{u_{k1}+u_{k2}+...+u_{km}}{m}\right)\\
\displaystyle = \sqrt{\frac{1}{m^2}V\left(u_{k1}+u_{k2}+...+u_{km}\right)}\\
\displaystyle = \sqrt{\frac{1}{m}V\left(u_k\right)}\\
}

なので、求める標準誤差は

{\displaystyle
SD\left(\frac{1}{nm}\sum_{k=1}^n \sum_{l=1}^m u_{kl}\right)\\
\displaystyle =\sqrt{\frac{1}{n^2m} \sum_{k=1}^n V(u_{k})}\\
\displaystyle =\sqrt{\frac{1}{n^2} \sum_{k=1}^n \frac{1}{m}V(u_{k})}\\
\displaystyle =\frac{1}{n}\sqrt{ \sum_{k=1}^n sd_k^2}\\
}

となります。これを使うこともできますね。

で、どっちを使えばいいの?


はい。サンプルの違いを無視するバージョンと考慮するバージョンを考えましたが


結局どっちを使えば良いのか。これを考えます。


当然どちらも同じ値を指してるんですが、


推定結果に違いが出てくるんですね。


理想としては、求められる標準誤差の推定値が、小さい方がいいです。


ではここで、具体的に得られた測定値を

{x_{11},x_{12},...,x_{1m},x_{21},...,x_{nm}}とします。

これらは確率変数じゃないです。具体的な値です。


まずは、サンプルの違いを考慮したパターンの
{ \displaystyle \frac{1}{n\sqrt{m}}\sqrt{ \sum_{k=1}^n (SD(u_{k}))^2}\\
}

を使うため、SD(uk)を推定しましょう。

標本標準偏差、つまり、不偏分散の平方根を使います。「バー」は平均としますね。

{\displaystyle
SD(u_k) \gets \sqrt{\frac{1}{m-1}\sum_{l=1}^{m}(x_{kl}-\bar{x_k})^2}
}

引き算している平均は、サンプル毎の平均です。

代入して

{ \displaystyle \frac{1}{n\sqrt{m}}\sqrt{ \sum_{k=1}^n (SD(u_{k}))^2}\\
\displaystyle = \frac{1}{n\sqrt{m}}\sqrt{ \sum_{k=1}^n \cfrac{1}{m-1}\sum_{l=1}^m (x_{kl} - \bar{x_k})^2}\\
\displaystyle = \frac{1}{n\sqrt{m(m-1)}}\sqrt{ \sum_{k=1}^n \sum_{l=1}^m (x_{kl} - \bar{x_k})^2}\\
}


次に、サンプルの違いを考慮しないパターンで同じ事をしましょう。

SD(w)には、{\displaystyle \sqrt{\cfrac{1}{nm-1}\sum_{k=1}^{n}\sum_{l=1}^{m}(x_{kl}-\bar{x})^2}} を推定値として代入します。

引き算している平均値が、サンプル毎の平均ではなく全体の平均になっていることに注意してください。

{\displaystyle
\cfrac{SD(w)}{\sqrt{N}}\\
\displaystyle =\frac{1}{\sqrt{nm(nm-1)}} \sqrt{\sum_{k=1}^{n}\sum_{l=1}^{m}(x_{kl}-\bar{x})^2}
}


ということで、今、2つの推定値が得られました。


{
\displaystyle  \frac{1}{n\sqrt{m(m-1)}}\sqrt{ \sum_{k=1}^n \sum_{l=1}^m (x_{kl} - \bar{x_k})^2}\\
\displaystyle \frac{1}{\sqrt{nm(nm-1)}} \sqrt{\sum_{k=1}^{n}\sum_{l=1}^{m}(x_{kl}-\bar{x})^2}\\
}

上はサンプルによる違いを考慮していて、下はそれを考慮していません。


実は、このルートの中は、上の式の方が小さくなることが言えます。

「2次のモーメントは、引き算に平均値を使った時に最小になる」という性質から

{\displaystyle
\sum_{l=1}^{m}(x_{kl}-\bar{x_k})^2 \leq \sum_{l=1}^{m}(x_{kl}-\bar{x})^2
}

が言えるからです。

詳しくはこちらの動画を御覧ください。


平均は2次のモーメントを最小化する


さて。では、サンプル数を考慮した方がより小さい標準誤差が得られるのか。


これがそうはいかなくてですね。


でかいルートの前の係数部分。ここの大小が逆なんですね。



結局、どっちがいいかわからない!!!


両方計算してみて、小さい方を使えばいいんじゃ…ないかな…。


ちなみに、
・サンプル毎の測定回数が多い時
・サンプル毎の平均値がバラついている時

は、サンプルの違いを考慮した方が良いですね。

まとめ

2つ計算して小さい方を使ってください。(?)

ちなみに

母分散(母標準偏差)を推定する際に、不偏分散ではなく普通の分散(n-1ではなくnで割る奴)を使うと、係数部分はまったく同じになるので、いつでも「サンプルの違いを考慮すべき」ということになります。

でもそれじゃ正しくないよなあ…?