偏相関係数の導出

概要

x,y,zの3変数を考える。目的変数をy、説明変数をxとし、背後にzがあると想定する。ここではzの影響を取り除いたxy相関係数、すなわち偏相関係数r_{xy,z}を導出することを目的とする。

導出

まず、x,zでの回帰を考える。x=az+bへ回帰するものとすると、係数a,bは次のとおりである。

f:id:nishiru3:20190429135539p:plain

ここに、\bar{x},\bar{z}は平均値である。この回帰式から求められるxの推定値を\hat{x}とすると残差x^{\prime}は、

f:id:nishiru3:20190429135852p:plain

である。同様にy,zでの回帰を考え、y=az+bへ回帰するものとすると、残差y^{\prime}は、

f:id:nishiru3:20190429140107p:plain

である。zの影響を取り除いたxy相関係数r_{xy,z}は上記の残差x^\primey^\prime相関係数を取ればよい。
定義式より変形して整理すると、

f:id:nishiru3:20190429140318p:plain


残差X^\primeY^\primeの平均は0であるので、

f:id:nishiru3:20190429140505p:plain

となり、E[X^\prime Y^\prime]E[X^{\prime 2}]およびE[Y^{\prime 2}]を求めればよい。

E[X^\prime Y^\prime]の計算

f:id:nishiru3:20190429140927p:plain

E[X^{\prime 2}]およびE[Y^{\prime 2}]の計算

f:id:nishiru3:20190429141159p:plain

相関係数の導出

f:id:nishiru3:20190429141313p:plain

f:id:nishiru3:20190429141350p:plain

重ね書き

よく忘れる

重ね書きをよく忘れるので、簡単な事例を書いておく。

ソース

# 重ね書き
library(ggplot2)
x <- -10:10
# 係数
a <- 0.5
b <- 1.0
# 線形関数
linear <- a * x + b
# 2次関数
quadratic <- (x - a)^2 + b
# data.frameに入れる
result <- data.frame(x,linear,quadratic)
# 可視化
ggplot(result, aes(x)) + # x軸
  geom_line(aes(y = linear,    colour = "Linear")) +
  geom_line(aes(y = quadratic, colour = "Quadratic"))

f:id:nishiru3:20181222121600p:plain

ガンマ関数の整理

1. \Gamma(x+1) = x \Gamma(x)

\Gamma(x+1) = \int_0^\infty t^{(x+1)-1} e^{-t} dt
= \int_0^\infty t^{x} e^{-t} dt

部分積分によって整理する。

= \int_0^{\infty} t^{x} \left(- e^{-t}\right)^{\prime} dt
=\left[-t^x e^{-t}\right]_0^{\infty} + x\int_0^{\infty} t^{x-1} e^{-t} dt
=x\int_0^{\infty} t^{x-1} e^{-t} dt = x \Gamma(x)

2. \Gamma(1) = 1

x=1として計算する。
\Gamma(1) = \int_0^{\infty} t^0 e^{-t} dt
=-[e^{-t}]_0^{\infty} = -[0-1]=1

3. \Gamma(n) = (n-1)! (nは自然数)

1.の性質を使って整理する。
\Gamma(n) = (n-1) \Gamma(n-1) = (n-1)(n-2) \Gamma(n-2)
=(n-1)(n-2) \cdots 1\Gamma(1) = (n-1)!

4. \Gamma(1/2) = \sqrt(\pi)

置換積分ガウス積分を使う。

t=y^2と置換すると積分区間t:0 \sim \infty y:0 \sim \inftyであり、dt = 2y dyであるので、
\int_0^{\infty} y^{-1} e^{-y^2} 2y dy=2 \int_0^{\infty} e^{-y^2} dy
積分はちょうとガウス積分の半分であるので、
=2 \dfrac{1}{2} \sqrt{\pi} = \sqrt{\pi}

参考文献

統計学のための数学入門30講 (科学のことばとしての数学)

統計学のための数学入門30講 (科学のことばとしての数学)

再生性(ポアソン分布)

ポアソン分布の再生性

f:id:nishiru3:20180721115951p:plain

ポアソン分布について

ポアソン分布については次の記事を参照。

nishiru3.hatenablog.com

参考文献

数理統計学 (数学シリーズ)

数理統計学 (数学シリーズ)

Doxygenコメント例(PHP)

プログラムのメモ

  • 個人的には良いコードはそれだけで理解できるものだと思っているが、そんな会心なコードをかけるわけでもない。
  • 自分ひとりで書いてても忘れていることもあるので、可能であればメモは残しておいたほうが良い。

Doxygen

  • Javadocは業務で使ったことはあるが、その他の言語でも使えるとなるとDoxygenかなと。
  • インストールは特に難しくなかった(Windows 10)。

事例

  • 覚えることは大してないが、少しだけ事例を残しておく。
<?php
/**
 * @brief 足し算結果を返す
 * @details 詳細について記載
 * @param a 第一項
 * @param b 第二項
 * @return 足し算結果
 */
function add($a,$b) {
    return $a + $b;
}
$x = 1;
$y = 2;
echo add($x,$y);
/**
 * @brief Doxygen用クラス
 */
class Sample {

    /**
     * @fn minus($a,$b)
     * @param a 第一項
     * @param b 第二項
     * @return 引き算結果
     */
    function minus($a,$b) {
        return $a - $b;
    }
}

リダイレクトでPOSTの確認

入力値の確認

POST値の確認を別ページにせずに現在のページで処理する方法である。

ソース

入力および確認のページのソースは次のとおりである。

<?php
/**
 * POST値が記入されていない場合、このページに戻る。
 */
session_start();
if(!empty($_POST)){
    if($_POST['name'] == '') {
        $error['name']='blank';
    }
    // エラーがない場合、sessionに変数を保存して、
    // headerで次のページに飛ばす。
    if(empty($error)) {
        $_SESSION['join'] = $_POST;
        header('Location: check.php');
        exit();
    }
}
?>
<form action="" method="post" enctype="multipart/form-data">
    名前:<br />
    <input type="text" name="name" size="50" />
    <?php if($error['name']=='blank'): ?>
    <br />名前を記入してください。<br />
    <?php endif; ?>
    <input type="submit" value="送信" />
</form>

入力値を確認してOKだった場合のページの遷移先は次の「check.php」である。

<?php
session_start();
echo '無事記入されています。';
$name = $_SESSION['join']['name'];
echo '名前:'.$name;

再生性(二項分布)

二項分布の再生性

f:id:nishiru3:20180721114346p:plain

二項分布のモーメント母関数

二項分布のモーメント母関数は次の記事を参照。
nishiru3.hatenablog.com

参考文献

数理統計学 (数学シリーズ)

数理統計学 (数学シリーズ)