DataFrameを使ったクロス図より、比率の信頼区間(95%の信頼性)のヒゲを描写したいのですが、
どうすれば良いでしょうか。よろしく、お願いいたします。
(データは「統計学が最強の学問である 実践編」(p125)より抜粋)
python
1a=[[63,237,300],[37,163,200],[100,400,500]] 2import pandas as pd 3df=pd.DataFrame(a,index=['体育会出身','その他','合計'],columns=['主任以上','役職なし','合計']) 4df
python
1# 「体育会出身」「その他」それぞれの「主任以上」の比率を求めるため、必要な列と行を抽出し、再構築する 2df=df.loc[['体育会出身','その他'],['主任以上','合計']] 3df
python
1# 体育会系/その他、それぞれの比率を求める 2rate=(df['主任以上']/df['合計'])*100 3print('体育会系が主任になる比率は',rate[0],'%') 4print('その外が主任になる比率は',rate [1],'%') 5 6# 体育会系が主任になる比率は 21.0% 7# その外が主任になる比率は 18.5%
python
1# 棒グラフにしてみる 2import matplotlib.pyplot as plt 3plt.rcParams['font.family'] = 'IPAPGothic' 4 5rate.plot.bar() 6plt.title('体育会系/その他の、主任以上になる比率')
python
1# 割合の場合の標準誤差の式は以下の通り 2from IPython.display import Image 3fileName='標準誤差_割合.png' 4Image(fileName)
python
1# 体育出身者の出世の割合の標準誤差&信頼区間 2import numpy as np 3athe_se=(np.sqrt(((rate[0]/100)*(1-(rate[0]/100))/300)))*100 4print('体育出身者の出世する割合の標準誤差は',athe_se) 5print('上記の信頼区間は',rate[0]-2*athe_se,'〜',rate[0]+2*athe_se) 6 7#体育出身者の出世する割合の標準誤差は 2.351595203260969 8#上記の信頼区間は 16.296809593478063 〜 25.703190406521937 9 10 11# その他の出世の割合の標準誤差&信頼区間 12etc_se=(np.sqrt(((rate[1]/100)*(1-(rate[1]/100))/200)))*100 13print('その他の出世する割合の標準誤差は',athe_se) 14print('上記の信頼区間は',rate[1]-2*athe_se,'〜',rate[1]+2*athe_se) 15 16#その他の出世する割合の標準誤差は 2.351595203260969 17#上記の信頼区間は 13.796809593478063 〜 23.203190406521937 18
◎ここまで、やってみましたが...グラフの上に、信頼区間を示すヒゲを乗せる方法が分からず、断念しました。
◎Seabornを使い、違うアプローチで描こうと試みましたが、こちらも、うまくいかず。
python
1# クロス図の列と行を入れ替える 2df= df.T
python
1import seaborn as sns 2sns.barplot(data=df)
あなたの回答
tips
プレビュー