統計学

The Two-Stage Least Squares Estimation(二段階最小二乗法)

操作変数法のアプローチの一つとして、二段階最小二乗法が存在している。これは、操作変数法の推定量の計算方法を代替することで、予測精度を上げることを期待している。 ↓ PDF http://www3.grips.ac.jp/~yamanota/Lecture%20Note%208%20to%2010%202SLS%20&%…

機械学習のモデルの比較について

精度の標本平均の差と、McMemar検定をすることで効果測定できそう。 machinelearningmastery.com hs-www.hyogo-dai.ac.jp

傾向スコアのATTについて

傾向スコアについて、IPWのATTの計算式について詳しく書いていたので、抜粋。 ATTのときの、 ATT = E[Y_1 | Z=1] - E[Y_0 | Z=1]は公式に入れるとき、Z=1のみに限定されていない。ATEの公式と見比べるとわかる。 https://waidai-csc.jp/updata/2018/08/semin…

ノンパラメトリックの検定

各水準の母分布が正規分布の場合は、分散分析による有意差検定が可能だが、ノンパラメトリックと仮定した場合は以下の検定がある。 swdrsker.hatenablog.com swdrsker.hatenablog.com

statsmodels の summary の t について

どうやら、tは 標本分布を t分布と仮定した際の coef=0 の T の値っぽい。 t が 0から遠ければ遠いほど、coef が 0でない確率が高い。要は相関がある。 from patsy import dmatrices import statsmodels.api as sm df = sm.datasets.get_rdataset("Guerry", …

Python の線形回帰(信頼区間95 %)

アットマーク@ は .dot() の代わりらしい(内積)。 np.array([1,2]) @ np.array([2,3]) 単回帰について from sklearn.linear_model import LinearRegression X = np.array([167, 168, 168, 183, 170, 165, 163, 173, 177, 170]) y = np.array([59, 58, 65, …

χ二乗検定と独立性の検定

from scipy import stats, integrate l = np.array([4,4,22,26,36,45,39,21,16,4]) score_l = np.arange(5, 105, 10) # 標本平均と不変標本分散 mu = (l * score_l).sum() / l.sum() sigma2 = ((l * ((score_l-mu)**2)).sum() / (l.sum()-1)) # 確率プロット…

python の仮説検定

a = np.array([70, 69, 72, 74, 66, 68, 69, 70, 71, 69, 73, 72, 68, 72, 67]) b = np.array([69, 72, 71, 74, 68, 67, 72, 72, 72, 70, 75, 73, 71, 72, 69]) a.mean(), b.mean() # (70.0, 71.13333333333334) sgm = (a.var() * len(a) + b.var() * len(b)…

信頼区間の コード

import numpy as np from scipy import stats import statsmodels as sms # 例 a = np.array([12.7,6.6,5.6,14.3,11.4,10.8,13.8,11.2,10.0,12.8,7.1,14.0]) # 正規分布の標本と仮定したときの、母平均の信頼区間 sigma = np.sqrt(dev / len(a)) stats.norm.…

アクセスログの統計処理

httpd.apache.org LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D" from datetime import (datetime, date, timedelta) import re import pandas as pd import numpy as np from IPython.display import display, HTML from p…

標本平均と不偏標本分散とか信頼区間をpythonでする

train.loc[train.paytype == 1, :].pa.sum() # pa人数 # cash (paytype=1) で払った人 train_iscash = train.paytype == 1 # cash 出払った人の割合の平均値の信頼区間 99% from statsmodels.stats.proportion import proportion_confint proportion_confint…