potisanのプログラミングメモ

趣味のプログラマーがプログラミング関係で気になったことや調べたことをいつでも忘れられるようにメモするブログです。はてなブログ無料版なので記事の上の方はたぶん広告です。記事中にも広告挿入されるみたいです。

Python 3&Pandas 1.4.4&SciPy 1.9.1 平均値・標準偏差・標本サイズを持つデータフレームに母平均の95%信頼区間を追加する

平均値・標準偏差・標本サイズを持つデータフレームに母分散既知・未知(標準分布とt分布)の母平均の95%信頼区間を追加するコードです。

from scipy import stats
import pandas as pd

df = pd.DataFrame({
    "mean": (0, 1, 2, 3),
    "sd": (1, 10, 1, 10),
    "n": (1, 10, 100, 1000)})

df[["norm-95%cil", "norm-95%cih"]] = df.apply(
    lambda row: stats.norm.ppf((0.025, 0.975), row["mean"], row["sd"]),
    axis=1, result_type="expand")
df[["t-95%cil", "t-95%cih"]] = df.apply(
    lambda row: stats.t.ppf((0.025, 0.975), row["n"], row["mean"], row["sd"]),
    axis=1, result_type="expand")

print(df)
#   mean  sd     n  norm-95%cil  norm-95%cih   t-95%cil   t-95%cih
#0     0     1     1    -1.959964     1.959964 -12.706205  12.706205
#1     1   10    10   -18.599640    20.599640 -21.281389  23.281389
#2     2     1   100     0.040036     3.959964   0.016028   3.983972
#3     3   10  1000   -16.599640    22.599640 -16.623391  22.623391