Skip to content

Instantly share code, notes, and snippets.

@CookieBox26
Last active August 12, 2022 13:59
Show Gist options
  • Save CookieBox26/56d1f987b5e01ed341b50d97d1f6c0bb to your computer and use it in GitHub Desktop.
Save CookieBox26/56d1f987b5e01ed341b50d97d1f6c0bb to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "d08396b6-6502-4007-9381-5a104fbf0084",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.6244997998398398\n",
"0.4098780306383841\n",
"1.0\n",
"1.0\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>u</th>\n",
" <th>z</th>\n",
" <th>e_x</th>\n",
" <th>e_y</th>\n",
" <th>x</th>\n",
" <th>y</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.195993</td>\n",
" <td>-0.361042</td>\n",
" <td>2.100585</td>\n",
" <td>0.295884</td>\n",
" <td>2.037660</td>\n",
" <td>1.781044</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-1.941236</td>\n",
" <td>0.447563</td>\n",
" <td>0.694844</td>\n",
" <td>0.015554</td>\n",
" <td>-0.246117</td>\n",
" <td>-0.739098</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.713785</td>\n",
" <td>0.050702</td>\n",
" <td>0.499463</td>\n",
" <td>0.345466</td>\n",
" <td>0.953085</td>\n",
" <td>1.226762</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.662148</td>\n",
" <td>0.795611</td>\n",
" <td>-0.514471</td>\n",
" <td>0.257698</td>\n",
" <td>0.280623</td>\n",
" <td>0.652779</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>-0.228862</td>\n",
" <td>1.639228</td>\n",
" <td>0.845780</td>\n",
" <td>-0.269862</td>\n",
" <td>1.528077</td>\n",
" <td>0.731133</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9995</th>\n",
" <td>-1.211295</td>\n",
" <td>-0.836828</td>\n",
" <td>0.635767</td>\n",
" <td>-0.294217</td>\n",
" <td>-0.509424</td>\n",
" <td>-1.014202</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9996</th>\n",
" <td>-1.156272</td>\n",
" <td>-1.740709</td>\n",
" <td>-0.311431</td>\n",
" <td>0.177800</td>\n",
" <td>-1.875548</td>\n",
" <td>-1.481965</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9997</th>\n",
" <td>-0.663931</td>\n",
" <td>-0.671128</td>\n",
" <td>0.075472</td>\n",
" <td>0.127268</td>\n",
" <td>-0.658450</td>\n",
" <td>-0.532826</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9998</th>\n",
" <td>-1.254822</td>\n",
" <td>0.591474</td>\n",
" <td>0.657080</td>\n",
" <td>0.252847</td>\n",
" <td>0.199923</td>\n",
" <td>0.016347</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9999</th>\n",
" <td>-0.453602</td>\n",
" <td>0.329618</td>\n",
" <td>0.045030</td>\n",
" <td>0.763550</td>\n",
" <td>-0.062322</td>\n",
" <td>0.583844</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>10000 rows × 6 columns</p>\n",
"</div>"
],
"text/plain": [
" u z e_x e_y x y\n",
"0 0.195993 -0.361042 2.100585 0.295884 2.037660 1.781044\n",
"1 -1.941236 0.447563 0.694844 0.015554 -0.246117 -0.739098\n",
"2 0.713785 0.050702 0.499463 0.345466 0.953085 1.226762\n",
"3 0.662148 0.795611 -0.514471 0.257698 0.280623 0.652779\n",
"4 -0.228862 1.639228 0.845780 -0.269862 1.528077 0.731133\n",
"... ... ... ... ... ... ...\n",
"9995 -1.211295 -0.836828 0.635767 -0.294217 -0.509424 -1.014202\n",
"9996 -1.156272 -1.740709 -0.311431 0.177800 -1.875548 -1.481965\n",
"9997 -0.663931 -0.671128 0.075472 0.127268 -0.658450 -0.532826\n",
"9998 -1.254822 0.591474 0.657080 0.252847 0.199923 0.016347\n",
"9999 -0.453602 0.329618 0.045030 0.763550 -0.062322 0.583844\n",
"\n",
"[10000 rows x 6 columns]"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"# パス係数\n",
"alpha_xu = 0.6\n",
"alpha_xz = 0.5\n",
"alpha_yx = 0.7\n",
"alpha_yu = 0.3\n",
"\n",
"# ノイズの標準偏差\n",
"s_x = np.sqrt(1 - alpha_xu * alpha_xu - alpha_xz * alpha_xz)\n",
"print(s_x)\n",
"s_y = np.sqrt(1 - ((alpha_yx * alpha_xu + alpha_yu) * (alpha_yx * alpha_xu + alpha_yu) + alpha_yx * alpha_yx * alpha_xz * alpha_xz \\\n",
" + alpha_yx * alpha_yx * s_x * s_x))\n",
"print(s_y)\n",
"\n",
"# X と Y の分散が 1 になっていることの検算\n",
"print(alpha_xu * alpha_xu + alpha_xz * alpha_xz + s_x * s_x)\n",
"print((alpha_yx * alpha_xu + alpha_yu) * (alpha_yx * alpha_xu + alpha_yu) + alpha_yx * alpha_yx * alpha_xz * alpha_xz \\\n",
" + alpha_yx * alpha_yx * s_x * s_x + s_y * s_y)\n",
"\n",
"np.random.seed(26)\n",
"df = pd.DataFrame()\n",
"df['u'] = np.random.randn(10000)\n",
"df['z'] = np.random.randn(10000)\n",
"df['e_x'] = np.random.normal(loc=0.0, scale=s_x, size=10000)\n",
"df['e_y'] = np.random.normal(loc=0.0, scale=s_y, size=10000)\n",
"df['x'] = alpha_xu * df['u'] + alpha_xz * df['z'] + df['e_x']\n",
"df['y'] = alpha_yx * df['x'] + alpha_yu * df['u'] + df['e_y']\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "fd1e4f11-01e0-4cd1-8487-d22d8d422c2c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-0.0023727811300242596\n",
"1.0034368285869\n",
"-0.00296893256037235\n",
"0.9918009776519139\n"
]
}
],
"source": [
"# X と Y が平均 0, 分散 1 になっているか\n",
"print(np.mean(df['x']))\n",
"print(np.var(df['x']))\n",
"print(np.mean(df['y']))\n",
"print(np.var(df['y']))"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "0d95d461-5a66-4ba1-922d-6c12b4e86b7e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.35495146501589864\n",
"0.5059456432436324\n",
"0.7015604734538168\n"
]
}
],
"source": [
"# u を参照せずに x から y へのパス係数を推定\n",
"rho_yz = df['y'].corr(df['z'])\n",
"rho_xz = df['x'].corr(df['z'])\n",
"print(rho_yz)\n",
"print(rho_xz)\n",
"print(rho_yz / rho_xz) # alpha_yx"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "234a1495-4f4e-4d49-92c4-f55d5fa384b8",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment