{
"cells": [
{
"cell_type": "code",
"execution_count": 27,
"id": "892b0838-f370-4759-9e57-100e31b415e6",
"metadata": {},
"outputs": [],
"source": [
"# 패키지 로딩하기\n",
"import pandas as pd\n",
"import numpy as np\n",
"import scipy.stats as stats\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "9afc2ba4-df12-494d-a6f8-f74d658419f4",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" group | \n",
" income | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" A | \n",
" 10000 | \n",
"
\n",
" \n",
" 1 | \n",
" 2 | \n",
" A | \n",
" 50000 | \n",
"
\n",
" \n",
" 2 | \n",
" 3 | \n",
" A | \n",
" 30000 | \n",
"
\n",
" \n",
" 3 | \n",
" 4 | \n",
" A | \n",
" 25000 | \n",
"
\n",
" \n",
" 4 | \n",
" 5 | \n",
" B | \n",
" 28000 | \n",
"
\n",
" \n",
" 5 | \n",
" 6 | \n",
" B | \n",
" 50000 | \n",
"
\n",
" \n",
" 6 | \n",
" 7 | \n",
" B | \n",
" 37000 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id group income\n",
"0 1 A 10000\n",
"1 2 A 50000\n",
"2 3 A 30000\n",
"3 4 A 25000\n",
"4 5 B 28000\n",
"5 6 B 50000\n",
"6 7 B 37000"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 데이터 읽어오기 : Excel\n",
"payment = pd.read_excel(io = \"./payment.xlsx\",\n",
" sheet_name = 0,\n",
" header = 0)\n",
"\n",
"payment"
]
},
{
"cell_type": "markdown",
"id": "42d40734-239d-499c-b32a-48a27225d23a",
"metadata": {},
"source": [
"### 1. 독립 2표본 검정(Two sample test)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "304214aa-828b-4e7d-a9c8-8d9d15bef473",
"metadata": {},
"outputs": [],
"source": [
"# 귀무가설 : 두 집단의 연봉에는 차이가 없다(muA == muB).\n",
"# 대립가설 : 두 집단의 연봉에는 차이가 있다(muA != muB)."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "30243c2d-481e-4c41-8942-c8143f4c46e7",
"metadata": {},
"outputs": [],
"source": [
"# 1단계 : 정규성 검정(Normality Test)\n",
"# 귀무가설 : 정규분포를 따른다.\n",
"# 대립가설 : 정규분포를 따르지 않는다.\n",
"\n",
"# n : 데이터의 개수 = 표본크기(sample size)\n",
"# n < 5000 : Shapiro-Wilk Normality Test\n",
"# n >= 5000 : Anderson-Darling Normality Test\n",
"\n",
"# nA = 4 < 5000 : Shapiro-Wilk Normality Test\n",
"# nB = 3 < 5000 : Shapiro-Wilk Normality Test"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "b9f9d40c-640f-4486-a356-cbd864c9d5e9",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ShapiroResult(statistic=0.9797252425638964, pvalue=0.9004051114411608)\n",
"ShapiroResult(statistic=0.9891008174386918, pvalue=0.8002483284602546)\n"
]
}
],
"source": [
"print(stats.shapiro(payment.loc[payment.group == \"A\" , \"income\"]))\n",
"print(stats.shapiro(payment.loc[payment.group == \"B\" , \"income\"])) "
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "352e8e12-6502-4b66-9454-9b7b5562caee",
"metadata": {},
"outputs": [],
"source": [
"# A 집단\n",
"# statistic = 0.980 : 검정통계량(Test Statistic) : W\n",
"# p-value = 0.900 : 유의확률\n",
"# p-value(0.900) > 유의수준(0.05) : 귀무가설 : 정규분포를 따른다.\n",
"\n",
"# B 집단\n",
"# statistic = 0.989 : 검정통계량(Test Statistic) : W\n",
"# p-value = 0.800 : 유의확률\n",
"# p-value(0.800) > 유의수준(0.05) : 귀무가설 : 정규분포를 따른다."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "c1988aeb-c7c3-4dd9-ab8b-555724ad78dd",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"LeveneResult(statistic=0.32273617158051604, pvalue=0.59452929634726)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 2단계 : 등분산 검정\n",
"# 귀무가설 : 등분산이다.\n",
"# 대립가설 : 이분산이다.\n",
"\n",
"# scipy.stats.levene(data1, data2)\n",
"\n",
"stats.levene(payment.loc[payment.group == \"A\", \"income\"],\n",
" payment.loc[payment.group == \"B\", \"income\"])"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "39684f94-6ac3-4c55-b424-abdfd0f7f5e6",
"metadata": {},
"outputs": [],
"source": [
"# statistic = 0.323 : 검정통계량 : F\n",
"# p-value = 0.595 : 유의확률\n",
"# p-value(0.595) > 유의수준(0.05) : 귀무가설 : 등분산이다."
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "c85c449f-5c60-4439-a8a7-01e1ea16e4b7",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"TtestResult(statistic=-0.8603823015597681, pvalue=0.42889519858937336, df=5.0)"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 3단계 : 등분산이 가정된 독립 2표본 t검정(Two sample t-test)\n",
"# scipy.stats.ttest_ind(data1, data2, equal_var = True, alternative = \"two-sided\")\n",
"\n",
"stats.ttest_ind(payment.loc[payment.group == \"A\", \"income\"],\n",
" payment.loc[payment.group == \"B\", \"income\"],\n",
" equal_var = True,\n",
" alternative = \"two-sided\")"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "95936cb8-e4a1-45c9-8baa-f416d0db0cd9",
"metadata": {},
"outputs": [],
"source": [
"# statistic = -0.860 : 검정통계량 : t\n",
"# p-value = 0.429 : 유의확률\n",
"# df = 5 : 자유도(degree of freedom) : nA + nB - 2 = 4 + 3 - 2 = 5\n",
"\n",
"# p-value(0.429) > 유의수준(0.05) : 귀무가설 : 두 집단 간에 연봉에 차이가 없다.\n",
"# 유의확률이 0.429이므로 유의수준 0.05에서\n",
"# 두 집단 간의 연봉에 통계적으로 유의한 차이는 없는 것으로 나타났다."
]
},
{
"cell_type": "markdown",
"id": "8e6b1809-d569-4230-8b27-7f22ba36d14a",
"metadata": {},
"source": []
},
{
"cell_type": "code",
"execution_count": 14,
"id": "c633ac9d-74b8-45e7-a83c-fd948b710e61",
"metadata": {},
"outputs": [],
"source": [
"# 귀무가설 : Ideal과 NonIdeal 간에 가격에 차이가 없다(muA == muB).\n",
"# 대립가설 : Ideal이 NonIdeal보다 가격이 높다(muA > muB)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "ec95bb7d-c961-4714-aba5-8438128889bf",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" carat | \n",
" cut | \n",
" color | \n",
" clarity | \n",
" depth | \n",
" table | \n",
" price | \n",
" x | \n",
" y | \n",
" z | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" 0.23 | \n",
" Ideal | \n",
" E | \n",
" SI2 | \n",
" 61.5 | \n",
" 55.0 | \n",
" 326 | \n",
" 3.95 | \n",
" 3.98 | \n",
" 2.43 | \n",
"
\n",
" \n",
" 1 | \n",
" 2 | \n",
" 0.21 | \n",
" Premium | \n",
" E | \n",
" SI1 | \n",
" 59.8 | \n",
" 61.0 | \n",
" 326 | \n",
" 3.89 | \n",
" 3.84 | \n",
" 2.31 | \n",
"
\n",
" \n",
" 2 | \n",
" 3 | \n",
" 0.23 | \n",
" Good | \n",
" E | \n",
" VS1 | \n",
" 56.9 | \n",
" 65.0 | \n",
" 327 | \n",
" 4.05 | \n",
" 4.07 | \n",
" 2.31 | \n",
"
\n",
" \n",
" 3 | \n",
" 4 | \n",
" 0.29 | \n",
" Premium | \n",
" I | \n",
" VS2 | \n",
" 62.4 | \n",
" 58.0 | \n",
" 334 | \n",
" 4.20 | \n",
" 4.23 | \n",
" 2.63 | \n",
"
\n",
" \n",
" 4 | \n",
" 5 | \n",
" 0.31 | \n",
" Good | \n",
" J | \n",
" SI2 | \n",
" 63.3 | \n",
" 58.0 | \n",
" 335 | \n",
" 4.34 | \n",
" 4.35 | \n",
" 2.75 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id carat cut color clarity depth table price x y z\n",
"0 1 0.23 Ideal E SI2 61.5 55.0 326 3.95 3.98 2.43\n",
"1 2 0.21 Premium E SI1 59.8 61.0 326 3.89 3.84 2.31\n",
"2 3 0.23 Good E VS1 56.9 65.0 327 4.05 4.07 2.31\n",
"3 4 0.29 Premium I VS2 62.4 58.0 334 4.20 4.23 2.63\n",
"4 5 0.31 Good J SI2 63.3 58.0 335 4.34 4.35 2.75"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"diamonds = pd.read_excel(io = \"./diamonds.xlsx\",\n",
" sheet_name = 0,\n",
" header = 0)\n",
"diamonds.head()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "b0de0356-5a6a-4c5c-a7e7-1a095aa7087e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"21551\n",
"32389\n"
]
}
],
"source": [
"# 1단계 : 정규성 검정\n",
"# 귀무가설 : 정규분포를 따른다.\n",
"# 대립가설 : 정규분포를 따르지 않는다.\n",
"\n",
"print(len(diamonds.loc[diamonds.cut == \"Ideal\", \"price\"]))\n",
"print(len(diamonds.loc[diamonds.cut != \"Ideal\", \"price\"]))"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "7aa64e9c-c8a8-46b3-b9e7-feb3a2c36fdb",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"AndersonResult(statistic=1865.0905557672377, critical_values=array([0.576, 0.656, 0.787, 0.918, 1.092]), significance_level=array([15. , 10. , 5. , 2.5, 1. ]), fit_result= params: FitParams(loc=3457.541970210199, scale=3808.4011723490116)\n",
" success: True\n",
" message: '`anderson` successfully fit the distribution to the data.')\n",
"\n",
"AndersonResult(statistic=1725.8414161971668, critical_values=array([0.576, 0.656, 0.787, 0.918, 1.092]), significance_level=array([15. , 10. , 5. , 2.5, 1. ]), fit_result= params: FitParams(loc=4249.026830096638, scale=4074.939682658545)\n",
" success: True\n",
" message: '`anderson` successfully fit the distribution to the data.')\n"
]
}
],
"source": [
"# nA = 21,551 > 5000 : Anderson-Darling Normality Test\n",
"# nB = 32,389 > 5000 : Anderson-Darling Normality Test\n",
"\n",
"print(stats.anderson(diamonds.loc[diamonds.cut == \"Ideal\", \"price\"], dist = \"norm\"))\n",
"print()\n",
"print(stats.anderson(diamonds.loc[diamonds.cut != \"Ideal\", \"price\"], dist = \"norm\"))"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "0a4e0852-86a2-4c0e-b03f-e8384a3f317c",
"metadata": {},
"outputs": [],
"source": [
"# Ideal\n",
"# statistic = 1865.091 : 검정통계량 : A\n",
"# critical_values = 0.787 : 임계값\n",
"\n",
"# 검정통계량 > 임계값 : 대립가설, 검정통계량 <= 임계값 : 귀무가설\n",
"# 검정통계량(1,865.091) > 임계값(0.787) : 대립가설 : 정규분포를 따르지 않는다.\n",
"\n",
"# NonIdeal\n",
"# statistic = 1725.841 : 검정통계량 : A\n",
"# critical_values = 0.787 : 임계값\n",
"\n",
"# 검정통계량 > 임계값 : 대립가설, 검정통계량 <= 임계값 : 귀무가설\n",
"# 검정통계량(1,725.841) > 임계값(0.787) : 대립가설 : 정규분포를 따르지 않는다."
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "1a22ad81-e957-4e94-8a6c-c28147ae2724",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"RanksumsResult(statistic=-27.277266218787283, pvalue=1.0)"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 2단계 : 윌콕슨의 순위합 검정(Wilcoxon's rank sum test)\n",
"# scipy.stats.ranksums(data1, data2, alternative = )\n",
"stats.ranksums(diamonds.loc[diamonds.cut == \"Ideal\", \"price\"], \n",
" diamonds.loc[diamonds.cut != \"Ideal\", \"price\"],\n",
" alternative = \"greater\")"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "c7dda7b6-7c2d-4f52-a904-3e45db57a526",
"metadata": {},
"outputs": [],
"source": [
"# statistic = -27.277 : 검정통계량 : Z\n",
"# p-value = 1.000 : 유의확률\n",
"# p-value(1.000) > 유의수준(0.05) : 귀무가설 : Ideal와 NonIdeal 간에 price에 차이가 없다.\n",
"# 유의확률이 1.000 이므로 유의수준 0.05에서\n",
"# Ideal과 NonIdeal 간에 price에는 통계적으로 유의한 차이는 없는 것으로 나타났다."
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "cf430761-9d5f-4e40-a0c4-677f3d350bf4",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" count | \n",
" mean | \n",
" std | \n",
" min | \n",
" 25% | \n",
" 50% | \n",
" 75% | \n",
" max | \n",
"
\n",
" \n",
" cut2 | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" Ideal | \n",
" 21551.0 | \n",
" 3457.54197 | \n",
" 3808.401172 | \n",
" 326.0 | \n",
" 878.0 | \n",
" 1810.0 | \n",
" 4678.5 | \n",
" 18806.0 | \n",
"
\n",
" \n",
" NonIdeal | \n",
" 32389.0 | \n",
" 4249.02683 | \n",
" 4074.939683 | \n",
" 326.0 | \n",
" 1050.0 | \n",
" 2923.0 | \n",
" 5708.0 | \n",
" 18823.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" count mean std min 25% 50% 75% \\\n",
"cut2 \n",
"Ideal 21551.0 3457.54197 3808.401172 326.0 878.0 1810.0 4678.5 \n",
"NonIdeal 32389.0 4249.02683 4074.939683 326.0 1050.0 2923.0 5708.0 \n",
"\n",
" max \n",
"cut2 \n",
"Ideal 18806.0 \n",
"NonIdeal 18823.0 "
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 기술통계량\n",
"diamonds[\"cut2\"] = diamonds[\"cut\"].apply(lambda x : \"Ideal\" if x == \"Ideal\" else \"NonIdeal\")\n",
"diamonds.groupby(\"cut2\").price.describe()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "da869070-05ac-4c35-82b3-9aa14b8aea2d",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.violinplot(data = diamonds,\n",
" y = \"price\",\n",
" x = \"cut2\",\n",
" hue = \"cut2\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "ad47ea1b-960b-48c6-8a81-6a47096569bb",
"metadata": {},
"source": [
"### 2. 대응 2표본 검정(Paired test)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "4e3ced3f-9f2b-4d8c-a303-81521173ecfc",
"metadata": {},
"outputs": [],
"source": [
"# 귀무가설 : 이부일 강사의 강의는 효과가 없다(muA == muB).\n",
"# 대립가설 : 이부일 강사의 강의는 효과가 있다(muA < muB)."
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "9e6766bd-1477-473a-9424-3c3e45584939",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" pre | \n",
" post | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" 3 | \n",
" 5 | \n",
"
\n",
" \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 5 | \n",
"
\n",
" \n",
" 2 | \n",
" 3 | \n",
" 4 | \n",
" 5 | \n",
"
\n",
" \n",
" 3 | \n",
" 4 | \n",
" 3 | \n",
" 4 | \n",
"
\n",
" \n",
" 4 | \n",
" 5 | \n",
" 4 | \n",
" 5 | \n",
"
\n",
" \n",
" 5 | \n",
" 6 | \n",
" 2 | \n",
" 5 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id pre post\n",
"0 1 3 5\n",
"1 2 3 5\n",
"2 3 4 5\n",
"3 4 3 4\n",
"4 5 4 5\n",
"5 6 2 5"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"satisfy = pd.read_excel(io = \"./satisfy.xlsx\",\n",
" sheet_name = 0,\n",
" header = 0)\n",
"satisfy"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "50ee196e-3f41-4caf-ada2-bca7c759e868",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" pre | \n",
" post | \n",
" difference | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" 3 | \n",
" 5 | \n",
" -2 | \n",
"
\n",
" \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 5 | \n",
" -2 | \n",
"
\n",
" \n",
" 2 | \n",
" 3 | \n",
" 4 | \n",
" 5 | \n",
" -1 | \n",
"
\n",
" \n",
" 3 | \n",
" 4 | \n",
" 3 | \n",
" 4 | \n",
" -1 | \n",
"
\n",
" \n",
" 4 | \n",
" 5 | \n",
" 4 | \n",
" 5 | \n",
" -1 | \n",
"
\n",
" \n",
" 5 | \n",
" 6 | \n",
" 2 | \n",
" 5 | \n",
" -3 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id pre post difference\n",
"0 1 3 5 -2\n",
"1 2 3 5 -2\n",
"2 3 4 5 -1\n",
"3 4 3 4 -1\n",
"4 5 4 5 -1\n",
"5 6 2 5 -3"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"satisfy[\"difference\"] = satisfy[\"pre\"] - satisfy[\"post\"]\n",
"satisfy"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "46b85bf8-f302-4f50-9771-160355182145",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"ShapiroResult(statistic=0.8216155622835087, pvalue=0.09113502185141942)"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 1단계 : 정규성 검정\n",
"# 귀무가설 : (difference) 정규분포를 따른다.\n",
"# 대립가설 : (difference) 정규분포를 따르지 않는다.\n",
"\n",
"# n = 6 < 5000 : Shapiro-Wilk Normality Test\n",
"\n",
"stats.shapiro(satisfy.difference)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "3626ce4e-b352-4131-9809-d2a155f752f5",
"metadata": {},
"outputs": [],
"source": [
"# statistic = 0.822 : 검정통계량 : W\n",
"# p-value = 0.091 : 유의학률\n",
"# p-value(0.091) > 유의수준(0.05) : 귀무가설 : 정규분포를 따른다."
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "45744bb7-8d5e-4b54-9d90-7b630d2c18d8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"TtestResult(statistic=-5.000000000000001, pvalue=0.0020523579900266595, df=5)"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 2단계 : 대응 2표본 t검정(Paired t-test)\n",
"# scipy.stats.ttest_rel(data.pre, data.post, alternative = )\n",
"\n",
"stats.ttest_rel(satisfy.pre,\n",
" satisfy.post,\n",
" alternative = \"less\")"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "c55d0a76-9181-43d6-b415-881df81ce4fd",
"metadata": {},
"outputs": [],
"source": [
"# statistic = -5.000 : 검정통계량 : t\n",
"# p-value = 0.002 : 유의학률\n",
"# df = 5 : 자유도(degree of freedom) : n - 1 = 6 - 1 = 5\n",
"\n",
"# p-value(0.002) < 유의수준(0.05) : 대립가설 : 이부일 강사의 강의는 효과가 있다.\n",
"# 유의확률이 0.002이므로 유의수준 0.05에서\n",
"# 이부일 강사의 데이터 분석을 위한 확률과 통계 강의는 통계적으로 매우 유의한 효과가 있는 것으로 나타났다."
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "315279b2-94f1-45fb-bd71-0ec0bd969b5b",
"metadata": {},
"outputs": [],
"source": [
"# 만약에 1단계의 결론 : 정규분포를 따르지 않는다고 나왔다면\n",
"# 2단계 : 윌콕슨의 부호 순위 검정(Wilcoxon's signed rank test)\n",
"# scipy.stats.wilcoxon(data.pre, data.post, alternative = \"less\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "529f189c-23c0-4bb1-840c-1622efe05031",
"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.11.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}