python PR

【pythonで統計学】95%信頼区間の求め方〜サンプルコード付き〜

python 統計学 95%信頼区間
記事内に商品プロモーションを含む場合があります

これまでt検定要約統計量などの求め方を解説してきました

また、ヒストグラムの作図代表値などについても触れてきました

今回の記事では、論文投稿の際に求められることが増えてきていると言われている「 95%信頼区間」をpythonで求めていきたいと思います

Rを使用すれば、t値とp値の他にも信頼区間が算出されますが、pythonでは別にコードを入力しないと、95%信頼区間は算出できません

要約

pythonで95%信頼区間を算出する場合には、

stats.norm.interval()

を使用する

95%信頼区間とは

95%信頼区間とは、

母集団から標本を取ってきて、その平均から95%信頼区間を求める、という作業を100回やったときに、95回はその区間の中に母平均が含まれる

ということを示しています

信頼区間は区間推定、平均値などの代表値を使用したものは点推定と呼ばれています

95%信頼区間

信頼区間の求め方

信頼区間はRやpythonを使用しなくても算出することができます

信頼区間の求め方

しかし、標本平均を求めたり普遍分散を求めたりと、作業が大変になります

pythonやRを使用すれば、簡単に算出することが可能です

pythonで95%信頼区間を算出する

では、ここからは実際にpythonを操作しながら、95%信頼区間を算出していきたいと思います

ライブラリのインポート

まずは95%信頼区間を算出し、グラフ化するために必要なライブラリをインポートしていきます

import pandas as pd
import seaborn as sns
sns.set()

今回は無料配布されているirisのデータをpandasからインポートして使用していきますので、そちらも合わせてインポートしておきましょう

iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
sepal_length=iris.iloc[:,0]
print(sepal_length)

今回はirisデータのsepal_lengthを使用していきたいと思います

分布の確認

ひとまず分布の確認をしておきます

import pandas as pd
import seaborn as sns
sns.set()

iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
sepal_length=iris.iloc[:,0]
print(sepal_length)

sns.displot(sepal_length)
sepal_length

正規分布かどうかが視覚的にわからない場合には、正規性の検定を用います

python 正規性の検定
【pythonで統計学】正規性の検定(シャピロウィルク検定etc)のかけ方~サンプルコード付き~t検定などの統計手法をかける場合には、まずそのデータが正規分布しているかを調べなくてはいけません。正規性を確認する方法の一つに、ヒストグラムを書いて目視で確認する、という方法がありますが、これだけでは正確ではありません。 そこで、「Q-Qプロット」や「シャピロウィルク検定」「コルモゴロフスミルノフ検定」などを使用して、正規性を確認していきます。 実際に統計をかける場合には、csvやexcelデータなどを読み込んで、統計にかけることが多いと思います。そこで今回は、pythonを使ってcsvから取り込んだデータで正規性の検定を行う方法について、解説していきたいと思います。...

信頼区間を算出する場合、平均値を用いるため基本的には正規分布でしか使用しないと考えています

母平均を算出する

今回は上記のsepal_length150件を母集団としておき、母集団の平均である母平均を算出します

(※本来であれば、母集団はわかりません。それを推定するのが区間推定になります)

iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
sepal_length=iris.iloc[:,0]
print(sepal_length.mean())

#結果5.84

母集団の平均は「5.84」であることがわかりました

標本の作成

では、ここからはsepal_lengthからランダムで50件抽出した標本で話を進めていきたいと思います

import pandas as pd
import seaborn as sns
sns.set()

iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
sepal_length=iris.iloc[:,0]
print(sepal_length.mean())

n=50
sample_df = sepal_length.sample(n=n)
print(sample_df.mean())

.sample(n)を使用すれば、n件のデータをランダムで選択することができます

ランダムで50件抽出したら標本平均も算出します

母集団の平均は5.84

標本の平均は5.77

ということがわかります

95%信頼区間を算出する

では95%信頼区間を算出していきたいと思います

import numpy as np
from scipy import stats
import pandas as pd
import seaborn as sns
sns.set()

iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
sepal_length=iris.iloc[:,0]

n=50
sample_df = sepal_length.sample(n=n)

sample_mean = np.mean(sepal_length)
sample_var = stats.tvar(sepal_length)
print(stats.norm.interval(alpha=0.95, loc=sample_mean, scale=np.sqrt(sample_var/n)))

結果は「(5.613809330617545, 6.0728573360491245)」になるかと思います

このことから95%の確からしさで母平均は5.61〜6.07の間に含まれる、ということになります

実際の母平均は「5.84」なので、この信頼区間は正しいといってもよさそうです

まとめ

  • 信頼区間とは母集団から標本を取ってきて、その平均から95%信頼区間を求める、という作業を100回やったときに、95回はその区間の中に母平均が含まれる
  • pythonではstats.norm.interval()で算出できる
  • 母集団の平均は未知である

pythonで統計学を学ぶ上で必須書籍

スクールに通わずにpythonを学習するためには?

Python学習を進めていく上で、

「ひとまず何かしらの書籍に目を通したい」

「webで調べても全くわからない」

という状況が何度も何度でも出てくるかと思います。

そういう時に便利なのが、kindleとテラテイルです。

Kindleはご存知の通り、電子書籍です。

Kindleには多くのpython学習本が用意されており、無料で読むことができます。(たまに有料もあります)

ひとまずどういった書籍があるのか?

もしものために、書籍に目を通しておこう

という場合には、kindleの利用がおすすめです。

kindleでpythonの書籍を無料で読んでみる

おすすめプログラミングスクール

DMMWEBCAMP
  • WEBCAMPはコスパ最強
  • WEBCAMPは初心者に優しい充実したサポート付き
  • 16週間プランを選択して、返金してもらおう
WEBCAMPの公式ページはこちら WEBCAMPの口コミ・評価はこちら
テックアカデミー  
  • テックアカデミーは費用対効果抜群
  • テックアカデミーのサポートは個人の能力に応じつつ、python初心者に優しい
  • まずは無料体験でテックアカデミーを知ってから受講を決める
テックアカデミーの公式ページはこちら テックアカデミーの口コミ・評価はこちら
キカガク
  • 多種多様なスキルコース
  • 初心者から専門家まで対象
  • 給付金利用で費用を抑えられる
キカガクの公式ページはこちら キカガクの口コミ・評価はこちら
Aidemy Premium
  • 完全オンラインで、時間や場所に縛られず学習したい
  • マンツーマン学習サポートにより実践に近い経験をしたい
  • 未経験から機械学習エンジニアになりたい
Aidemy Premiumの公式ページはこちら Aidemy Premiumの口コミ・評価はこちら
My Agile Privacy
This website uses technical and profiling cookies. Clicking on "Accept" authorises all profiling cookies. Clicking on "Refuse" or the X will refuse all profiling cookies. By clicking on "Customise" you can select which profiling cookies to activate.