ITの隊長のブログ

ITの隊長のブログです。Pythonを使って仕事しています。最近は機械学習をさわりはじめたお(^ω^ = ^ω^)

いい加減ちゃんと覚えたい統計学 幹葉図

bellcurve.jp

人生で初めて出会いました(統計学の問題集で)

↑のリンクの通り、概要把握すればそんなに難しくないですが、平均や四分位数を求めるときがとてもめんどくさく、序盤にでてくるくせに電卓うちなれていないと無限に時間を消費してしまう中ボス的な存在です。問題自体は愚直に計算すれば解は求まるので、一旦チェックいれて時間が余れば解く or 点数少しでも稼ぎたいから残り5分になったらチェックした問題に戻って解くでもいいのかなって思いました。

ただ、仕事では使わなそうな雰囲気を感じているのでこいつ得意になったところで「で?」ってなりそうな気はしている。(わからないけどね)

いい加減ちゃんと覚えたい統計学 四分位数編

bellcurve.jp

これを読んだあとのちゃんと理解しているか説明を並べる.

  • 四分位数
    • 代表値の一種
    • データを小さい順から並べて、4つに分割する
      • 1/4の位置のデータ → 第一四分位数 → 最小値から25%の位置
      • 2/4の位置のデータ → 第二四分位数 → 最小値から50%の位置 → 中央値
      • 3/4の位置のデータ → 第三四分位数 → 最小値から75%の位置
  • 奇数・偶数で求め方が違う
    • 求め方1つ!
      • 4k + 1のとき
        • 4の倍数+1のとき、各分点に対応する点があるので計算が簡単
        • データ数が5, 9, 13...
      • データ数が4k + 3のとき
        • 分点が、例えばa地点のデータからa + 1地点のデータの中点をとるので、近い2点のデータの重み付け平均を取るのが一般的な考え方
        • データ数が7, 11, 15...
        • 中央値以外は対応する点がないので、中央値で区切る → 中央値を含む左、右のグループで中央値を求める
      • データ数が偶数のとき
        • 区間幅が3/4などが登場する(ややこしい)
        • データ数が4,6,8,10...
        • 例えばデータが4つ(3,4,9,10)あった場合、幅の数は3なので区間幅は0.75となる
          • 第一四分位数は3 * 0.25 + 4 * 0.75
          • 第二四分位数は9 * 0.75 + 10 * 0.25
          • 分点から遠い側は0.25、近いのは0.75を重み付け平均としてかける
    • 2つめ(ヒンジ)
      • 中央で上半分と下半分に分けて,下半分の中央値を第1四分位数,上半分の中央値を第3四分位数とするといった考え方
      • pandas.quantileで試すと結果があわない・・・なぜ・・・・?(実装を見る元気がないので一旦終了)

追記

pandas.quantileで試すと結果があわない・・・なぜ・・・・?(実装を見る元気がないので一旦終了)

ドキュメントみたら把握した

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.quantile.html

f:id:aipacommander:20200630101538p:plain

linear: i + (j - i) * fraction, where fraction is the fractional part of the index surrounded by i and j.

データの位置が該当しない位置にあった場合どうやって保管する?オプションがあった。で、デフォルトが linear だったので調べたところ、データが10あれば、前半部分が1,2,3,4,5だったとき、i=3,j=4,faction=0.25として計算する。後半部分は6,7,8,9.10だったとき、i=7,j=8,faction=0.75として計算する。こうしたら結果があった。

もやもやが晴れた

ssh-agentを使ったsshログイン

macです。簡単です。

$ ssh-add -K ${登録したい鍵ファイルパス}
Enter passphrase for ${登録したい鍵ファイルパス}:

パスワードを入力してあげます。

その鍵を使ってログインするサーバへログインしてみます。

$ ssh ${configに設定したHOST名}

多段sshとかするときに毎回パスワード入力がだるいのでこれやるとスッキリおすすめ

時系列勉強雑メモ

  • 定常過程が分析しやすいデータである理由
    • 無数に存在する2020年1月1日という気温の特徴を手元にあるたった1つの2020年1月1日のデータで推測しなければならない → これは難しい
    • しかしデータが定常と仮定すると分析が楽
      • 期待値や分散の推定量が時点によって変化しない → 複数時点のデータの平均と分散をとればそのまま推定量として利用できる → これは簡単
  • 対数変換とその解釈
    • 対数変換したものはデータのばらつきがほぼ一定になる
      • ばらつきと指しているのはおそらく上下の振り幅
      • 対数についておさらい
        • log_a ap = p
        • log_2 8 = 3 <-> 23 = 8
        • log_a M = P <-> ap = M
    • Pythonのmath.logはdefaultの底は自然数
      • math.log(math.e) # 1.0
  • 移動平均モデル
    • 同じ値を使うことで自己相関を表現する
      • なんで自己相関を表現したかったんだっけ?
  • ARモデルとMAモデルの関係
    • 係数<1であるAR(1)モデルは∞次数のMAモデルで表現することができる
    • ほーん
  • MAモデルの反転可能性
    • 予測誤差(ε_t)の大小は過去データから判断することができる → ホワイトノイズって予測誤差だっけ???

Ubuntuにrpy2を入れたい

AnacondaがインストールされたUbuntuでrpy2を使いたいのでpipで入れようとした。

$ pip install rpy2

# ...
    ERROR: Complete output from command python setup.py egg_info:
    ERROR: cffi mode: CFFI_MODE.ANY
    Error: rpy2 in API mode cannot be built without R in the PATH or R_HOME defined. Correct this or force ABI mode-only by defining the environment variable RPY2_CFFI_MODE=ABI
    ----------------------------------------
ERROR: Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-33y9jj0x/rpy2/

調べてみるとRがインストールされていないからだと。

$ apt install r-base -y

このあと再度pipを実行したらうまくいった。