diff --git a/lab-hypothesis-testing.ipynb b/lab-hypothesis-testing.ipynb index 0cc26d5..60ddd05 100644 --- a/lab-hypothesis-testing.ipynb +++ b/lab-hypothesis-testing.ipynb @@ -38,7 +38,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 40, "metadata": {}, "outputs": [], "source": [ @@ -46,12 +46,12 @@ "import pandas as pd\n", "import scipy.stats as st\n", "import numpy as np\n", - "\n" + "from scipy.spatial import distance\n" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -75,17 +75,17 @@ " \n", " \n", " \n", - " Name\n", - " Type 1\n", - " Type 2\n", - " HP\n", - " Attack\n", - " Defense\n", - " Sp. Atk\n", - " Sp. Def\n", - " Speed\n", - " Generation\n", - " Legendary\n", + " name\n", + " type_1\n", + " type_2\n", + " hp\n", + " attack\n", + " defense\n", + " sp._atk\n", + " sp._def\n", + " speed\n", + " generation\n", + " legendary\n", " \n", " \n", " \n", @@ -249,7 +249,7 @@ "" ], "text/plain": [ - " Name Type 1 Type 2 HP Attack Defense Sp. Atk Sp. Def \\\n", + " name type_1 type_2 hp attack defense sp._atk sp._def \\\n", "0 Bulbasaur Grass Poison 45 49 49 65 65 \n", "1 Ivysaur Grass Poison 60 62 63 80 80 \n", "2 Venusaur Grass Poison 80 82 83 100 100 \n", @@ -262,7 +262,7 @@ "798 Hoopa Unbound Psychic Dark 80 160 60 170 130 \n", "799 Volcanion Fire Water 80 110 120 130 90 \n", "\n", - " Speed Generation Legendary \n", + " speed generation legendary \n", "0 45 1 False \n", "1 60 1 False \n", "2 80 1 False \n", @@ -278,13 +278,15 @@ "[800 rows x 11 columns]" ] }, - "execution_count": 3, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv(\"https://raw.githubusercontent.com/data-bootcamp-v4/data/main/pokemon.csv\")\n", + "df.rename(columns={col : col.strip() for col in df.columns}, inplace = True)\n", + "df.rename(columns={col : col.replace(\" \", \"_\").lower() for col in df.columns}, inplace = True)\n", "df" ] }, @@ -297,11 +299,38 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 30, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "np.float64(3.3349632905124063)" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "np.float64(0.0007993609745420599)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "#code here" + "# we set our significance level\n", + "alpha = 0.05\n", + "\n", + "hp_dragon = df[df['type_1'] == 'Dragon']['hp']\n", + "hp_grass = df[df['type_1'] == 'Grass']['hp']\n", + "\n", + "t_stat, p_value = st.ttest_ind(hp_dragon, hp_grass, equal_var=False, alternative='greater')\n", + "\n", + "display(t_stat, p_value)" ] }, { @@ -313,11 +342,72 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 31, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " Stats: hp\n", + " p-value: 0.000000000000100\n", + " We reject the H0 hypotesis.\n", + " there is evidence that legendary and non-legendary pokemon have similar hp \n", + "\n", + " Stats: attack\n", + " p-value: 0.000000000000000\n", + " We reject the H0 hypotesis.\n", + " there is evidence that legendary and non-legendary pokemon have similar attack \n", + "\n", + " Stats: defense\n", + " p-value: 0.000000000048270\n", + " We reject the H0 hypotesis.\n", + " there is evidence that legendary and non-legendary pokemon have similar defense \n", + "\n", + " Stats: sp._atk\n", + " p-value: 0.000000000000000\n", + " We reject the H0 hypotesis.\n", + " there is evidence that legendary and non-legendary pokemon have similar sp._atk \n", + "\n", + " Stats: sp._def\n", + " p-value: 0.000000000000002\n", + " We reject the H0 hypotesis.\n", + " there is evidence that legendary and non-legendary pokemon have similar sp._def \n", + "\n", + " Stats: speed\n", + " p-value: 0.000000000000000\n", + " We reject the H0 hypotesis.\n", + " there is evidence that legendary and non-legendary pokemon have similar speed \n" + ] + } + ], "source": [ - "#code here" + "# independent t-test\n", + "\n", + "legendary = df[df['legendary'] == True]\n", + "non_legendary = df[df['legendary'] == False]\n", + "\n", + "stats_list = ['hp', 'attack', 'defense', 'sp._atk', 'sp._def', 'speed']\n", + "\n", + "alpha = 0.05\n", + "\n", + "for stat in stats_list:\n", + " legendary_groupped = legendary[stat].dropna()\n", + " non_legendary_grupped = non_legendary[stat].dropna()\n", + "\n", + " t_stat, p_value = st.ttest_ind(legendary_groupped, non_legendary_grupped, equal_var=False)\n", + "\n", + "\n", + " print(f\"\\n Stats: {stat}\")\n", + " print(f\" p-value: {p_value:.15f}\")\n", + "\n", + " if p_value < 0.05:\n", + " print(\" We reject the H0 hypotesis.\")\n", + " print(\" there is evidence that legendary and non-legendary pokemon have similar \"+ stat +\" \")\n", + " else:\n", + " print(\" We do not reject the H0 hypotesis\")\n", + " print(\" there is not enough evidence that the \" + stat + \" are different between both groups\")" ] }, { @@ -337,7 +427,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -433,34 +523,314 @@ " 1.9250\n", " 65500.0\n", " \n", + " \n", + " 5\n", + " -114.58\n", + " 33.63\n", + " 29.0\n", + " 1387.0\n", + " 236.0\n", + " 671.0\n", + " 239.0\n", + " 3.3438\n", + " 74000.0\n", + " \n", + " \n", + " 6\n", + " -114.58\n", + " 33.61\n", + " 25.0\n", + " 2907.0\n", + " 680.0\n", + " 1841.0\n", + " 633.0\n", + " 2.6768\n", + " 82400.0\n", + " \n", + " \n", + " 7\n", + " -114.59\n", + " 34.83\n", + " 41.0\n", + " 812.0\n", + " 168.0\n", + " 375.0\n", + " 158.0\n", + " 1.7083\n", + " 48500.0\n", + " \n", + " \n", + " 8\n", + " -114.59\n", + " 33.61\n", + " 34.0\n", + " 4789.0\n", + " 1175.0\n", + " 3134.0\n", + " 1056.0\n", + " 2.1782\n", + " 58400.0\n", + " \n", + " \n", + " 9\n", + " -114.60\n", + " 34.83\n", + " 46.0\n", + " 1497.0\n", + " 309.0\n", + " 787.0\n", + " 271.0\n", + " 2.1908\n", + " 48100.0\n", + " \n", + " \n", + " 10\n", + " -114.60\n", + " 33.62\n", + " 16.0\n", + " 3741.0\n", + " 801.0\n", + " 2434.0\n", + " 824.0\n", + " 2.6797\n", + " 86500.0\n", + " \n", + " \n", + " 11\n", + " -114.60\n", + " 33.60\n", + " 21.0\n", + " 1988.0\n", + " 483.0\n", + " 1182.0\n", + " 437.0\n", + " 1.6250\n", + " 62000.0\n", + " \n", + " \n", + " 12\n", + " -114.61\n", + " 34.84\n", + " 48.0\n", + " 1291.0\n", + " 248.0\n", + " 580.0\n", + " 211.0\n", + " 2.1571\n", + " 48600.0\n", + " \n", + " \n", + " 13\n", + " -114.61\n", + " 34.83\n", + " 31.0\n", + " 2478.0\n", + " 464.0\n", + " 1346.0\n", + " 479.0\n", + " 3.2120\n", + " 70400.0\n", + " \n", + " \n", + " 14\n", + " -114.63\n", + " 32.76\n", + " 15.0\n", + " 1448.0\n", + " 378.0\n", + " 949.0\n", + " 300.0\n", + " 0.8585\n", + " 45000.0\n", + " \n", + " \n", + " 15\n", + " -114.65\n", + " 34.89\n", + " 17.0\n", + " 2556.0\n", + " 587.0\n", + " 1005.0\n", + " 401.0\n", + " 1.6991\n", + " 69100.0\n", + " \n", + " \n", + " 16\n", + " -114.65\n", + " 33.60\n", + " 28.0\n", + " 1678.0\n", + " 322.0\n", + " 666.0\n", + " 256.0\n", + " 2.9653\n", + " 94900.0\n", + " \n", + " \n", + " 17\n", + " -114.65\n", + " 32.79\n", + " 21.0\n", + " 44.0\n", + " 33.0\n", + " 64.0\n", + " 27.0\n", + " 0.8571\n", + " 25000.0\n", + " \n", + " \n", + " 18\n", + " -114.66\n", + " 32.74\n", + " 17.0\n", + " 1388.0\n", + " 386.0\n", + " 775.0\n", + " 320.0\n", + " 1.2049\n", + " 44000.0\n", + " \n", + " \n", + " 19\n", + " -114.67\n", + " 33.92\n", + " 17.0\n", + " 97.0\n", + " 24.0\n", + " 29.0\n", + " 15.0\n", + " 1.2656\n", + " 27500.0\n", + " \n", + " \n", + " 20\n", + " -114.68\n", + " 33.49\n", + " 20.0\n", + " 1491.0\n", + " 360.0\n", + " 1135.0\n", + " 303.0\n", + " 1.6395\n", + " 44400.0\n", + " \n", + " \n", + " 21\n", + " -114.73\n", + " 33.43\n", + " 24.0\n", + " 796.0\n", + " 243.0\n", + " 227.0\n", + " 139.0\n", + " 0.8964\n", + " 59200.0\n", + " \n", + " \n", + " 22\n", + " -114.94\n", + " 34.55\n", + " 20.0\n", + " 350.0\n", + " 95.0\n", + " 119.0\n", + " 58.0\n", + " 1.6250\n", + " 50000.0\n", + " \n", + " \n", + " 23\n", + " -114.98\n", + " 33.82\n", + " 15.0\n", + " 644.0\n", + " 129.0\n", + " 137.0\n", + " 52.0\n", + " 3.2097\n", + " 71300.0\n", + " \n", + " \n", + " 24\n", + " -115.22\n", + " 33.54\n", + " 18.0\n", + " 1706.0\n", + " 397.0\n", + " 3424.0\n", + " 283.0\n", + " 1.6250\n", + " 53500.0\n", + " \n", " \n", "\n", "" ], "text/plain": [ - " longitude latitude housing_median_age total_rooms total_bedrooms \\\n", - "0 -114.31 34.19 15.0 5612.0 1283.0 \n", - "1 -114.47 34.40 19.0 7650.0 1901.0 \n", - "2 -114.56 33.69 17.0 720.0 174.0 \n", - "3 -114.57 33.64 14.0 1501.0 337.0 \n", - "4 -114.57 33.57 20.0 1454.0 326.0 \n", + " longitude latitude housing_median_age total_rooms total_bedrooms \\\n", + "0 -114.31 34.19 15.0 5612.0 1283.0 \n", + "1 -114.47 34.40 19.0 7650.0 1901.0 \n", + "2 -114.56 33.69 17.0 720.0 174.0 \n", + "3 -114.57 33.64 14.0 1501.0 337.0 \n", + "4 -114.57 33.57 20.0 1454.0 326.0 \n", + "5 -114.58 33.63 29.0 1387.0 236.0 \n", + "6 -114.58 33.61 25.0 2907.0 680.0 \n", + "7 -114.59 34.83 41.0 812.0 168.0 \n", + "8 -114.59 33.61 34.0 4789.0 1175.0 \n", + "9 -114.60 34.83 46.0 1497.0 309.0 \n", + "10 -114.60 33.62 16.0 3741.0 801.0 \n", + "11 -114.60 33.60 21.0 1988.0 483.0 \n", + "12 -114.61 34.84 48.0 1291.0 248.0 \n", + "13 -114.61 34.83 31.0 2478.0 464.0 \n", + "14 -114.63 32.76 15.0 1448.0 378.0 \n", + "15 -114.65 34.89 17.0 2556.0 587.0 \n", + "16 -114.65 33.60 28.0 1678.0 322.0 \n", + "17 -114.65 32.79 21.0 44.0 33.0 \n", + "18 -114.66 32.74 17.0 1388.0 386.0 \n", + "19 -114.67 33.92 17.0 97.0 24.0 \n", + "20 -114.68 33.49 20.0 1491.0 360.0 \n", + "21 -114.73 33.43 24.0 796.0 243.0 \n", + "22 -114.94 34.55 20.0 350.0 95.0 \n", + "23 -114.98 33.82 15.0 644.0 129.0 \n", + "24 -115.22 33.54 18.0 1706.0 397.0 \n", "\n", - " population households median_income median_house_value \n", - "0 1015.0 472.0 1.4936 66900.0 \n", - "1 1129.0 463.0 1.8200 80100.0 \n", - "2 333.0 117.0 1.6509 85700.0 \n", - "3 515.0 226.0 3.1917 73400.0 \n", - "4 624.0 262.0 1.9250 65500.0 " + " population households median_income median_house_value \n", + "0 1015.0 472.0 1.4936 66900.0 \n", + "1 1129.0 463.0 1.8200 80100.0 \n", + "2 333.0 117.0 1.6509 85700.0 \n", + "3 515.0 226.0 3.1917 73400.0 \n", + "4 624.0 262.0 1.9250 65500.0 \n", + "5 671.0 239.0 3.3438 74000.0 \n", + "6 1841.0 633.0 2.6768 82400.0 \n", + "7 375.0 158.0 1.7083 48500.0 \n", + "8 3134.0 1056.0 2.1782 58400.0 \n", + "9 787.0 271.0 2.1908 48100.0 \n", + "10 2434.0 824.0 2.6797 86500.0 \n", + "11 1182.0 437.0 1.6250 62000.0 \n", + "12 580.0 211.0 2.1571 48600.0 \n", + "13 1346.0 479.0 3.2120 70400.0 \n", + "14 949.0 300.0 0.8585 45000.0 \n", + "15 1005.0 401.0 1.6991 69100.0 \n", + "16 666.0 256.0 2.9653 94900.0 \n", + "17 64.0 27.0 0.8571 25000.0 \n", + "18 775.0 320.0 1.2049 44000.0 \n", + "19 29.0 15.0 1.2656 27500.0 \n", + "20 1135.0 303.0 1.6395 44400.0 \n", + "21 227.0 139.0 0.8964 59200.0 \n", + "22 119.0 58.0 1.6250 50000.0 \n", + "23 137.0 52.0 3.2097 71300.0 \n", + "24 3424.0 283.0 1.6250 53500.0 " ] }, - "execution_count": 5, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv(\"https://raw.githubusercontent.com/data-bootcamp-v4/data/main/california_housing.csv\")\n", - "df.head()" + "df.head(25)" ] }, { @@ -483,24 +853,556 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 74, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "# Write a function to calculate euclidean distance from each house (neighborhood) to the school and to the hospital.\n", + "\n", + "def distance_calculator(longitude, latitude):\n", + "\n", + " school_coord = (-118, 34)\n", + " hospital_coord = (-122, 37)\n", + "\n", + " house_coord = (longitude, latitude)\n", + "\n", + " school_dist = distance.euclidean(house_coord, school_coord)\n", + " hospital_dist = distance.euclidean(house_coord, hospital_coord)\n", + "\n", + " return school_dist, hospital_dist\n" + ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 75, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "distance to school: 212.5032992685055\n", + "distance to hospital: 217.4627145052687\n" + ] + } + ], + "source": [ + "school_dist, hospital_dist = distance_calculator(34.19, -114.31)\n", + "\n", + "print(f\"distance to school: {school_dist}\")\n", + "print(f\"distance to hospital: {hospital_dist}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
houselongitudelatitudemedian_house_valuedist_eucl_schooldist_eucl_hospitalclose_to_schoolclose_to_hospital
0house1-114.3134.1966900.03.6948888.187319FalseFalse
1house2-114.4734.4080100.03.5525917.966235FalseFalse
2house3-114.5633.6985700.03.4539408.143077FalseFalse
3house4-114.5733.6473400.03.4488408.154416FalseFalse
4house5-114.5733.5765500.03.4568488.183508FalseFalse
...........................
16995house16996-124.2640.58111400.09.0820704.233675FalseFalse
16996house16997-124.2740.6979000.09.1689154.332320FalseFalse
16997house16998-124.3041.84103600.010.0576145.358694FalseFalse
16998house16999-124.3041.8085800.010.0264655.322593FalseFalse
16999house17000-124.3540.5494600.09.1155974.249012FalseFalse
\n", + "

17000 rows × 8 columns

\n", + "
" + ], + "text/plain": [ + " house longitude latitude median_house_value dist_eucl_school \\\n", + "0 house1 -114.31 34.19 66900.0 3.694888 \n", + "1 house2 -114.47 34.40 80100.0 3.552591 \n", + "2 house3 -114.56 33.69 85700.0 3.453940 \n", + "3 house4 -114.57 33.64 73400.0 3.448840 \n", + "4 house5 -114.57 33.57 65500.0 3.456848 \n", + "... ... ... ... ... ... \n", + "16995 house16996 -124.26 40.58 111400.0 9.082070 \n", + "16996 house16997 -124.27 40.69 79000.0 9.168915 \n", + "16997 house16998 -124.30 41.84 103600.0 10.057614 \n", + "16998 house16999 -124.30 41.80 85800.0 10.026465 \n", + "16999 house17000 -124.35 40.54 94600.0 9.115597 \n", + "\n", + " dist_eucl_hospital close_to_school close_to_hospital \n", + "0 8.187319 False False \n", + "1 7.966235 False False \n", + "2 8.143077 False False \n", + "3 8.154416 False False \n", + "4 8.183508 False False \n", + "... ... ... ... \n", + "16995 4.233675 False False \n", + "16996 4.332320 False False \n", + "16997 5.358694 False False \n", + "16998 5.322593 False False \n", + "16999 4.249012 False False \n", + "\n", + "[17000 rows x 8 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Divide your dataset into houses close and far from either a hospital or school.\n", + "\n", + "school_coord = (-118, 34)\n", + "hospital_coord = (-122, 37)\n", + "\n", + "CLOSE = 0.5\n", + "\n", + "df_new = pd.DataFrame()\n", + "df_new[\"house\"] = [f\"house{i+1}\" for i in range(len(df))]\n", + "df_new[\"longitude\"] = df[\"longitude\"]\n", + "df_new[\"latitude\"] = df[\"latitude\"]\n", + "df_new[\"median_house_value\"] = df[\"median_house_value\"]\n", + "\n", + "df_new[\"dist_eucl_school\"] = df_new.apply( lambda row: distance.euclidean((row[\"longitude\"], row[\"latitude\"]), school_coord), axis=1)\n", + "\n", + "df_new[\"dist_eucl_hospital\"] = df_new.apply( lambda row: distance.euclidean((row[\"longitude\"], row[\"latitude\"]), hospital_coord), axis=1)\n", + "\n", + "df_new[\"close_to_school\"] = df_new[\"dist_eucl_school\"] < CLOSE\n", + "df_new[\"close_to_hospital\"] = df_new[\"dist_eucl_hospital\"] < CLOSE\n", + "\n", + "display(df_new)" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
houselongitudelatitudemedian_house_valuedist_eucl_schooldist_eucl_hospitalclose_to_schoolclose_to_hospital
2366house2367-117.5134.00124700.00.4900005.400009TrueFalse
2367house2368-117.5133.97137500.00.4909185.416733TrueFalse
2368house2369-117.5133.95169100.00.4925445.427946TrueFalse
2371house2372-117.5233.99182900.00.4801045.397268TrueFalse
2372house2373-117.5233.89220800.00.4924435.453668TrueFalse
...........................
15090house15091-122.2537.08177500.05.2487050.262488FalseTrue
15170house15171-122.2637.38500001.05.4380140.460435FalseTrue
15253house15254-122.2737.32277700.05.4088170.418688FalseTrue
15254house15255-122.2737.24319400.05.3600840.361248FalseTrue
15686house15687-122.3837.18286100.05.4126520.420476FalseTrue
\n", + "

6829 rows × 8 columns

\n", + "
" + ], + "text/plain": [ + " house longitude latitude median_house_value dist_eucl_school \\\n", + "2366 house2367 -117.51 34.00 124700.0 0.490000 \n", + "2367 house2368 -117.51 33.97 137500.0 0.490918 \n", + "2368 house2369 -117.51 33.95 169100.0 0.492544 \n", + "2371 house2372 -117.52 33.99 182900.0 0.480104 \n", + "2372 house2373 -117.52 33.89 220800.0 0.492443 \n", + "... ... ... ... ... ... \n", + "15090 house15091 -122.25 37.08 177500.0 5.248705 \n", + "15170 house15171 -122.26 37.38 500001.0 5.438014 \n", + "15253 house15254 -122.27 37.32 277700.0 5.408817 \n", + "15254 house15255 -122.27 37.24 319400.0 5.360084 \n", + "15686 house15687 -122.38 37.18 286100.0 5.412652 \n", + "\n", + " dist_eucl_hospital close_to_school close_to_hospital \n", + "2366 5.400009 True False \n", + "2367 5.416733 True False \n", + "2368 5.427946 True False \n", + "2371 5.397268 True False \n", + "2372 5.453668 True False \n", + "... ... ... ... \n", + "15090 0.262488 False True \n", + "15170 0.460435 False True \n", + "15253 0.418688 False True \n", + "15254 0.361248 False True \n", + "15686 0.420476 False True \n", + "\n", + "[6829 rows x 8 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "close_condition = df_new[\"close_to_school\"] | df_new[\"close_to_hospital\"]\n", + "\n", + "df_close_to_any = df_new[close_condition]\n", + "df_close_to_none = df_new[~close_condition]\n", + "\n", + "display(df_close_to_any)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "t-stats: 37.9923\n", + "p-valor: 0.00000000\n", + "------------------------------\n", + " mean price close: $246,951.98\n", + " mean price far: $180,678.44\n" + ] + } + ], + "source": [ + "#Choose the propper test and, with 5% significance, comment your findings ---> Student's t-test\n", + "\n", + "mean_price_close = df_close_to_any[\"median_house_value\"].mean()\n", + "mean_price_far = df_close_to_none[\"median_house_value\"].mean()\n", + "\n", + "prices_close = df_close_to_any[\"median_house_value\"].dropna()\n", + "prices_far = df_close_to_none[\"median_house_value\"].dropna()\n", + "\n", + "t_stat, p_valor = stats.ttest_ind(prices_close, prices_far, equal_var=False)\n", + "\n", + "print(f\"t-stats: {t_stat:.4f}\")\n", + "print(f\"p-valor: {p_valor:.8f}\")\n", + "\n", + "print(\"-\" * 30)\n", + "print(f\" mean price close: ${mean_price_close:,.2f}\")\n", + "print(f\" mean price far: ${mean_price_far:,.2f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Variable result: median_house_value\n", + " t-value : 37.9923\n", + " p-value: 0.00000000\n", + "Reject H0\n", + "There is evidence that proximity is associated with different house values.\n" + ] + } + ], + "source": [ + "variable = \"median_house_value\"\n", + "alpha=0.05\n", + "\n", + "for stat in stats_list:\n", + " group_close = df_close_to_any[variable].dropna()\n", + " group_far = df_close_to_none[variable].dropna()\n", + " \n", + " t_stat, p_value = stats.ttest_ind(group_close, group_far, equal_var=False)\n", + " \n", + "print(f\"Variable result: {variable}\")\n", + "print(f\" t-value : {t_stat:.4f}\")\n", + "print(f\" p-value: {p_value:.8f}\")\n", + "\n", + "\n", + " \n", + "if p_value < alpha:\n", + " print(\"Reject H0\")\n", + " print(\"There is evidence that proximity is associated with different house values.\")\n", + "else:\n", + " print(\"Fail to reject H0\")\n", + " print(\"There is not enough evidence to support the claim.\")" + ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python [conda env:base] *", "language": "python", - "name": "python3" + "name": "conda-base-py" }, "language_info": { "codemirror_mode": { @@ -512,9 +1414,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.9" + "version": "3.13.9" } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 }