המאמר הזה עודכן בתאריך 07.10.24 - בשעה 15:20
- תיקון תקלה בגרף - פיזור סיכויי הזכיה כפונקציה של מחיר למטר.
- עדכון כלל הנתונים
- העלאת קובץ המחברת + קבצי הנתונים ל-Github.
בתחילת השבוע נפתחה לציבור הגרלת דירה בהנחה לחודש אוקטובר 2024.
בהגרלה זו מוצעות 4,741 דירות ב-14 יישובים שונים.
התכנית נועדה להתמודד עם משבר הדיור הקיים בישראל ולהציע פתרון נגיש לאוכלוסיות המתקשות לרכוש דירה בשוק החופשי.
זכיה בהגרלה מקנה הזדמנויות לזוגות צעירים ולזכאים אחרים לרכוש נכס במחירי הנחה של עד מיליון שקלים ממחירי השוק החופשי. אבל לא רק, זכיה מאפשרת גם לרכוש את הנכס באמצעות הון עצמי מופחת של 100 אלף שקלים בלבד, ובכך פותרת את בעיית גיוס ההון העצמי - בעיה איתה מתמודדים מרבית הזוגות הצעירים.
וכשהחלום לרכוש בית מתרחק מידי שנה בעקבות המחירים הגואים, מחיר למשתכן מסתמנת בתור האלטרנטיבה השפויה בעבור אלה שידם אינה משגת מרכישת דירה יקרה.
מדובר בהגרלה משמעותית אשר תעניק פתרונות דיור לאוכלוסיות רבות ברחבי הארץ.
בשונה מהגרלות קודמות, הפעם ישנו אחוז לא מבוטל כלל של דירות המיועדות להיבנות בשכונות בעלות צביון חרדי, מה שמהווה מענה לצורך הגובר של המגזר החרדי לדיור התואם את אופי הקהילה ואת הצרכים המיוחדים של אוכלוסייה זו.
בתור נרשם בתוכנית, החלטתי להשתמש בידע שלי בעולמות האנליזה והמחקר לטובת חקירה של נתוני ההרשמה.
מטרה
מטרת העל שלי היא מאוד פשוטה, אני רוצה לזכות ולא כל כך אכפת לי איפה (ביקוש קשיח).
לכן אני רוצה לחקור את נתוני ההרשמה כך שאוכל למקסם את הסיכויים שלי לזכות ועל הדרך לאמת מספר טענות הקשורות בחוש הטעם של הישראלים.
יש מספר שאלות שהייתי רוצה לענות עליהן בהתבסס על נתוני ההרשמות בלבד:
- מה הסיכוי של אדם לזכות בדירה -בחלוקה לפי ערים?
- מה הן הערים בהן הסיכוי הרב ביותר לזכות?
- האם הישראלים באמת מחפשים לרכוש דירה ולא משנה מה? או למעשה האם הביקוש בכל הארץ הוא קשיח?
- האם ישנה קורלציה בין מחיר הדירה (למטר) לבין כמות הנרשמים? ז"א האם אנשים בוחרים לאן להירשם בהתבסס על כמה זולה או יקרה דירה?
- מהי התפלגות סיכויי הזכייה- בחתך לפי ערים?
נתונים: יבוא, ניקוי ושיטות עבודה 🔭
על מנת לענות על שאלות אלו- יצרתי מערך נתונים (Data Set) על גבי קובץ CSV אשר מכיל את כל המידע שמופיע בטבלת ההרשמה באתר מחיר למשתכן.
את המידע אספתי בשיטה הכי פרמיטיבית שיש: ביצעתי העתק הדבק של כל הטבלה לתוך מסמך אקסל אותו שמרתי כקובץ CSV.
על גבי האקסל עצמו מחקתי את העמודות של: זכאות, סיום הרשמה, קבלן, מענק והערות.
בדיעבד הייתי עושה את זה עם פייתון (סתם בשביל לתרגל, אין לזה ערך אמיתי).
כך נראת הטבלה באתר מחיר למשתכן:
בחרתי ב-Jupyter Lab לביצוע החקירה ופתחתי קובץ מחברת חדש.
עם פתיחת המחברת ייבאתי את הספריות הנדרשות ולאחר מכן הגדרתי את משתנה ה-DataFrame שלנו בשם shp
שהוא הלכה למעשה ראשי התיבות של Subsidized House Program.
הקוד נראה כך:
# Importing Necessary Libraries
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import cm
ומיד לאחר מכן ייבאתי את הקובץ בתור Data Frame :
shp = pd.read_csv('SubsidizedHousingProgram.csv')
print(shp.head(10))
שימו לב שבחרתי להדפיס את 10 השורות הראשונות, המטרה היא לקבל הצצה על מבנה הקובץ ועל הדרך בה Pandas מתמודדת איתו:
Lottery Number City Number of Apartments Number of Participants \
0 2470 אילת 72.0 4247
1 2471 אילת 60.0 4169
2 2472 אילת 48.0 4086
3 2473 אילת 32.0 4007
4 2474 אילת 29.0 4030
5 2491 אפרת 25.0 892
6 2479 ביתשאן 68.0 2563
7 2480 ביתשאן 57.0 2579
8 2481 ביתשאן 55.0 2538
9 2482 ביתשאן 49.0 2493
PpM
0 12,206.00
1 12,206.00
2 12,206.00
3 12,206.00
4 12,206.00
5 13,104.00
6 7,305.48
7 7,294.95
8 7,305.48
9 7,305.48
ניקוי נתונים 🧹
ממבט ראשוני בנתונים ניתן לראות ש-Pandas מתקשה עם הצגה של נתונים בשפה העברית תחת שמות עמודות באנגלית, מה שאומר שנצטרך להמיר את שמות הערים מעברית לאנגלית. מכיוון שלא מדובר על כמות גדולה מידי, אייצר לולאה שתדע לבצע את ההחלפה בצמוד למילון:
shp_cities_df = pd.DataFrame(shp)
# Dictionary to change hebrew names into english
translation_dict = {
'אילת': 'Eilat',
'ביתשמש': 'Beith-Shemesh',
'ביתשאן': 'Beith-Shean',
'אפרת' : 'Efrat',
'בניעי"ש': 'Bnei Ayish',
'דימונה': 'Dimona',
'טירתכרמל': 'Tirat Carmel',
'יהוד': 'Yahud',
'כפרסבא': 'Kfar Saba',
'צורהדסה': 'Tzur Hadassa',
'קרייתמלאכי': 'Kiryat Malakhi',
'קרייתגת': 'Kiryat Gat',
'ראשוןלציון': 'Rishon LeZiyon',
'רכסים': 'Rechasim'
}
# Using for loop to change values in the column
for hebrew, english in translation_dict.items():
shp_cities_df['City'] = shp_cities_df['City'].replace(hebrew, english)
# Printing new distinct values to make sure everything is alright.
print(shp_cities_df['City'].unique())
#Writing Changes to source file
shp_cities_df.to_csv('SubsidizedHousingProgram.csv', index=False)
פלט:
['Eilat' 'Efrat' 'Beith-Shean' 'Beith-Shemesh' 'Bnei Ayish' 'Dimona'
'Tirat Carmel' 'Yahud' 'Kfar Saba' 'Tzur Hadassa' 'Kiryat Gat'
'Kiryat Malakhi' 'Rishon LeZiyon' 'Rechasim']
שימו לב שביצעתי גם כתיבה של הנתונים החדשים לקובץ.
יש עוד איזה שהיא בעיה שהיא שולית לכאורה אבל עשויה להפריע בהמשך - המחיר למטר הוא עשרוני ומכיל מפריד אלפים, אני חושש שהשדה הזה בנוי בצורה מלאכותית ולפנדס יהיה קשה להתמודד איתו.
עניין איזוטרי נוסף שאני רוצה לטפל בו היא הנקודה העשרונית על מספר הדירות בכל הגרלה (Number of apartment): כל זמן שלא ניתן לרכוש חצאי דירות אין טעם לראות את המספר העשרוני הזה מול העיניים.
בשביל לפתור את הסוגיה אייצר פונקציה שתדע להמיר את כל המספרים בעמודות PpM
ו-Number of Apartments
מ-float ל- int וגם תדע להיפטר ממפריד האלפים המעיק הזה.
שימו לב שגם כאן כתבתי את כל השינויים לקובץ:
# Function to remove decimals from specific columns
def remove_decimals(df, columns):
for column in columns:
# Remove commas and convert to float before converting to int
df[column] = df[column].apply(lambda x: int(float(str(x).replace(',', ''))) if pd.notna(x) else x)
return df
# Read CSV file
shp = pd.read_csv('SubsidizedHousingProgram.csv')
# Remove decimals from specified columns
columns_to_modify = ['PpM', 'Number of Apartments']
shp = remove_decimals(shp, columns_to_modify)
# Print the first 10 rows to check the changes
print(shp.head(10))
shp.to_csv('SubsidizedHousingProgram.csv', index=False)
פלט לבדיקה (10 שורות ראשונות בלבד):
Lottery Number City Number of Apartments Number of Participants \
0 2470 Eilat 72 4247
1 2471 Eilat 60 4169
2 2472 Eilat 48 4086
3 2473 Eilat 32 4007
4 2474 Eilat 29 4030
5 2491 Efrat 25 892
6 2479 Beith-Shean 68 2563
7 2480 Beith-Shean 57 2579
8 2481 Beith-Shean 55 2538
9 2482 Beith-Shean 49 2493
PpM
0 12206
1 12206
2 12206
3 12206
4 12206
5 13104
6 7305
7 7294
8 7305
9 7305
ועכשיו סוף סוף הדאטהסט שלנו נראה נורמלי ואפשר להתחיל 🎉
חקירה 🔬
הנתונים שלנו נקיים ואפשר להתחיל לעבוד תאכלס.
נניח (מה שממש לא המצב) שאני יכול להירשם להגרלה אחת בלבד.
אני רוצה לדעת מהי ההגרלה בעלת סיכויי הזכיה הטובים ביותר?
לשם כך אנחנו צריכים לייצר עמודה חדשה שתדע לחשב את הסיכוי לזכות בכל הרגלה.
העמודה החדשה תיקרא Winning Probability
והיא למעשה תחשב את מספר הדירות לחלק בכמות המשתתפים אשר נרשמו לאותה ההגרלה
לאחר מכן נייצר משתנה חדש בשם highest_probability_row
שבאמצעות מתודה idxmax ידע להצביע על השורה בה הסיכוי לזכות הוא הרב ביותר, את התוצאה נדפיס למסך:
shp['Winning Probability'] = shp['Number of Apartments'] / shp['Number of Participants']
# Find the lottery with the highest winning probability
highest_probability_row = shp.loc[shp['Winning Probability'].idxmax()]
print("\nLottery with the highest winning probability:")
print(highest_probability_row)
תוצאה:
Lottery with the highest winning probability:
Lottery Number 2446
City Beith-Shemesh
Number of Apartments 422
Number of Participants 11105
PpM 14644
Winning Probability 0.038001
Name: 11, dtype: object
הגרלה מספר 2446 היא בעלת סיכויי הזכיה הרבים ביותר והיא עומדת על 3.8%.
מה הסיכוי לזכות בהגרלה בכל עיר ועיר?
כל זמן שהמדינה מאפשרת לבצע הרשמה להגרלות על פני 3 ערים , ללא תלות בכמות ההגרלות באותה העיר , אין טעם לנסות ולחשב מהי ההגרלה בעלת סיכויי הזכיה הרבים ביותר.
החישוב צריך להיעשות על ידי בחינת כלל הנתונים על כל עיר בנפרד.
הטיית הכפילות
כל זמן שאדם מסויים יכול להירשם לכל ההגרלות שפתוחות באותה עיר הוא יעדיף להירשם לכל ההגרלות האפשריות.
במחיר למשתכן (או בדירה בהנחה) זוכה יכול להירשם לעד 3 ערים בלבד בכל הגרלה.
ולכן עשויה להתרחש הטיה המבוססת על כפילות הנרשמים בעת החישוב, אסביר:
נניח ובעיר מסויימת יש 5 הגרלות של 25 דירות בכל אחת, סך הכל 125 דירות.
ונניח ובכל הגרלה יש 500 נרשמים.
הסיכוי לזכות בכל הגרלה עומד על כמות הדירות לחלק בכמות המשתתפים
שאת זה למעשה נחשב בתור 25/500=0.05 (5%).
ההטייה אומרת שבשביל לחשב את הסיכויים שלי לזכות בעיר מסויימת אני אקח את סכום הדירות לחלק בסכום המשתתפים:
זאת אומרת: 125/2500 וזה יוצא שווה ל-5%- אך נתון זה שגוי!
ברגע שאני יכול להירשם לכל ההגרלות באותה עיר, אזי שאם זכיתי בהגרלה אחת נגרעתי באופן אוטומטי מהאחרות, מה שאומר שיש קבוצה של 500 אנשים בסך הכל שחוזרים על עצמם בכל ההגרלות מחדש.
ולכן, על מנת לחשב את סיכויי הזכיה בכל עיר אני צריך לחבר את כמות הדירות שמוצעות להגרלה באותה עיר ולחלק בכמות המשתתפים הגבוה ביותר שיש באחת ההגרלות:
125/500=0.25 - קרי 25% זכיה.
זה גם ניכר ברשימת ההגרלות, בערים בהן מתקיימות מספר הגרלות במקביל אנחנו רואים שכמות הנרשמים זהה יחסית (הפער עומד על פחות מ-1%).
אחרי שדיברנו על ההטיה איתה אנחנו מתמודדים, הגיע הזמן לכתוב קוד בשביל להגיע למסקנות אמיתיות.
הפעם יצרתי משתנה שמסכם את כמות הדירות בכל עיר ועיר.
יצרתי משתנה נוסף שמציג את מספר המשתתפים המקסימליים שיש באחת ההגרלות באותה העיר.
ואז משתנה שלישי שלוקח את סכום הדירות ומחלק במקסימום המשתתפים שיש באחת ההגרלות.
לאחר מכן כמובן שנרצה להדפיס את 5 הערים בהן הסיכוי לזכות הוא הרב ביותר:
# Group by 'City' to calculate the total number of apartments in each city
total_apartments_per_city = shp.groupby('City')['Number of Apartments'].sum()
# Group by 'City' to find the maximum number of participants in each city
max_participants_per_city = shp.groupby('City')['Number of Participants'].max()
# Calculate the probability of winning in each city by dividing the total apartments by the maximum number of participants
city_winning_probability = total_apartments_per_city / max_participants_per_city
city_winning_probability.sort_values(ascending=False).head(5)
אז מי הן חמשת הערים בעלות סיכויי הזכיה הטובים ביותר?
City
Beith-Shemesh 0.194075
Beith-Shean 0.106630
Bnei Ayish 0.085479
Eilat 0.056746
Tzur Hadassa 0.036718
dtype: float64
מכאן עולה שאלה אחת- מהו ממוצע הזכיה הכללי? אני מדבר על ממוצע פשוט ולא כזה אשר יודע להתחשב בכמות הדירות או במספר ההגרלות שיש בכל עיר:
print(city_winning_probability.mean())
#output:
0.046354831401587956
עכשיו כשאנחנו מחזיקים בנתון של הממוצע וגם בנתון על סיכויי הזכיה בכל עיר. הגיע הזמן להציג את הנתונים בצורה גרפית.
לשם כך בחרתי ב-Pyplot על מנת לייצר תרשים עמודות (Bar Chart), אבל תחילה עלינו לסדר את הנתונים כך שתחילה יופיעו הערים בהן הסיכוי לזכות הוא הרב ביותר :
# Sorting city_winning_probability in descending order
city_winning_probability1 = city_winning_probability.sort_values(ascending=False)
# Plotting the sorted data
plt.figure(figsize=(10, 6))
plt.bar(city_winning_probability1.index, city_winning_probability1, color='skyblue', label='City Winning Probability')
# adding average line
plt.axhline(average_winning_probability, color='darkred', linestyle='--', linewidth=2,
label=f'Average Winning Probability ({average_winning_probability:.3f})')
plt.title('Winning Probability by Each City', fontsize=16, fontweight='bold')
plt.xlabel('City', fontsize=12)
plt.ylabel('Winning Probability', fontsize=12)
plt.xticks(rotation=45, fontsize=10)
plt.grid(axis='y', linestyle='--', alpha=0.7, color='gray')
plt.legend()
plt.tight_layout()
plt.show()
התפלגות הנרשמים
אחד הדברים שתמיד מסקנים אותי זאת ההתפלגות: היא למעשה הסיפור האמיתי כאן.
זאת מכיוון שהיא מציגה לנו מה הם העדיפויות של המשתמשים, האם יש ריכוזיות מסוימת? ההתפלגות היא עולם שלם שלרוב מוצג בתור גרף אחד בודד.
הפעם, בחרתי לייצר גרף שיציג את ההתפלגות של כל הגרלה ללא סיכום לפי ערים.
הסיבה לזה פשוטה- יש לנו 59 הגרלות ורק 14 ערים.
על מנת לייצר תמונה מלאה יותר בחרתי לחשב את התפלגות הזכיה בכל הגרלה בפני עצמה.
הגרף שיוצא תומך עוד יותר בגרף הקודם אשר מציג את ממוצע הזכיה בכל עיר:
# Calculating standard deviation of winning probability
std_dev_winning_probability = city_winning_probability.std()
plt.figure(figsize=(10, 6))
plt.hist(city_winning_probability, bins=10, color='skyblue', edgecolor='black', alpha=0.7)
# Adding average line
plt.axvline(average_winning_probability, color='darkred', linestyle='--', linewidth=2, label=f'Average ({average_winning_probability:.3f})')
# Adding lines for 1 standard deviation above and below the average
plt.axvline(average_winning_probability + std_dev_winning_probability, color='orange', linestyle='-.', linewidth=1.5, label=f'1 Std Dev Above ({average_winning_probability + std_dev_winning_probability:.3f})')
plt.axvline(average_winning_probability - std_dev_winning_probability, color='green', linestyle='-.', linewidth=1.5, label=f'1 Std Dev Below ({average_winning_probability - std_dev_winning_probability:.3f})')
plt.title('Distribution of Winning Probability', fontsize=16, fontweight='bold')
plt.xlabel('Winning Probability', fontsize=12)
plt.ylabel('Frequency', fontsize=12)
plt.grid(axis='y', linestyle='--', alpha=0.7, color='gray')
plt.legend()
plt.tight_layout()
plt.show()
האם אנשים מעדיפים להירשם להגלות בהם מחירי הדירות זולים יותר?
למעשה ביקשתי לבחון את הטענה לפיה אנשים יעדיפו להירשם דווקא להגרלות בערים בהן המחיר הממוצע למטר הוא הזול ביותר. ז"א אנשים מעדיפים להירשם להגרלות ללא תלות במקום הנכס אלא בהתבסס על השורה התחתונה של המחיר. אם הקורלציה גבוה אזי שהסיכוי לזכות בערים זולות יותר יהיה נמוך משמעותית מערים יקרות. בשביל לבחון את הטענות הללו אנחנו צריכים לייצר נתון שיציג את המחיר הממוצע למטר בכל עיר:
average_ppm_per_city = shp.groupby('City')['PpM'].mean()
print(average_ppm_per_city)
#output:
City
Beith-Shean 7302.800000
Beith-Shemesh 14674.333333
Bnei Ayish 14756.250000
Dimona 7722.000000
Efrat 13104.000000
Eilat 12206.000000
Kfar Saba 20202.750000
Kiryat Gat 13808.000000
Kiryat Malakhi 11538.000000
Rechasim 12645.000000
Rishon LeZiyon 20384.000000
Tirat Carmel 13919.000000
Tzur Hadassa 16204.000000
Yahud 22901.000000
Name: PpM, dtype: float64
עכשיו כשיש לנו את הנתון של ממוצע המחיר למטר בכל עיר, נייצר גרף שיציג את פיזור הנתונים של סיכויי הזכיה כפונקציה של המחיר למטר. על מנת לקבל תמונה בהירה יותר נייצר גם קו ריגרסיה ליניארית:
from scipy.stats import linregress
# Ensure synchronization by resetting the index and creating a unified DataFrame
combined_df = pd.DataFrame({
'City': city_winning_probability.index,
'Price Per Meter': average_ppm_per_city,
'Winning Probability': city_winning_probability
}).reset_index(drop=True)
# Calculate linear regression using linregress
slope, intercept, r_value, p_value, std_err = linregress(combined_df['Price Per Meter'], combined_df['Winning Probability'])
# Plotting
plt.figure(figsize=(10, 6))
# Scatter plot with text labels for each city
plt.scatter(combined_df['Price Per Meter'], combined_df['Winning Probability'], color='teal', alpha=0.7, edgecolor='black')
for i in range(len(combined_df)):
plt.text(combined_df['Price Per Meter'][i], combined_df['Winning Probability'][i], combined_df['City'][i], fontsize=9, ha='left', va='bottom')
# Calculate regression line
regression_line = slope * combined_df['Price Per Meter'] + intercept
# Plot regression line
plt.plot(combined_df['Price Per Meter'], regression_line, color='red', linestyle='-', linewidth=2, label=f'Regression Line (R²={r_value**2:.3f})')
# Chart details
plt.title('Winning Probability vs Price Per Meter (PPM)', fontsize=16, fontweight='bold')
plt.xlabel('Price Per Meter (PPM)', fontsize=12)
plt.ylabel('Winning Probability', fontsize=12)
plt.grid(True, linestyle='--', alpha=0.7, color='gray')
plt.legend()
# Display the graph
plt.tight_layout()
plt.show()
מה אנחנו לומדים מהגרף הזה? שהקורולציה הפוכה!
קו הרגרסיה מצביע על כך שככל שהמחיר למטר גבוה יותר כך יש יותר תחרות על מי יזכה בכל הגרלה.
בהחלט לא נתון שציפיתי לראות.
מכאן ניתן להסיק שאנשים מעדיפים דווקא להירשם להגרלות בהן מחיר הדירה גבוה.
נתון שקפץ לי לעיניים הוא ההבדל הבלתי נסבל בין בית שאן, שם מחיר למטר עומד על פחות מ-8000 שקל לבין יהוד שם המחיר גבוה מ-22 אלף שקל למטר!
האם ישנה קורלציה?
כמובן שהדבר המבוקש ביותר זה לבדוק האם קיימת קורולציה בין מחירי הנכסים (למטר) לבין הביקושים (שמיוצגים על ידי ירידת סיכויי הזכיה), לשם כך נכתוב שורת קוד אחת:
print(shp['Number of Participants'].corr(shp['PpM']))
#Output:
0.7831414815484257
ואכן, ישנה קורלציה של 0.78 אשר מצביעה על קשר חיוב חזק בין שני המשתנים: ככל שהמחיר גבוה יותר הביקוש באותה הגרלה רב יותר.
האם ישנו קשר בין גודל ההגרלה לכמות הנרשמים?
בשלב הבא ביקשתי לחקור האם צרכנים יעדפו להירשם להגרלות בהן כמות הדירות גבוה יותר.
זאת אומרת, האם ישנה קורלציה בין ההסתברות לזכייה לבין מספר הדירות בהגרלה מסויימת.
למעשה ניתן לגשת לשאלה זו גם על ידי: האם מספר גדול יותר של דירות בהגרלה מוריד בצורה משמעותית את ההסתברות לזכייה?
כדי לבדוק את זה, כתבתי קוד המחשב את ההסתברות לזכייה על ידי חלוקת מספר הדירות במספר המשתתפים (כלומר, כמה משתתפים יש על כל דירה - ככל שיש יותר דירות או פחות משתתפים, הסיכוי לזכייה עולה).
לאחר מכן, הקוד מחשב את המתאם (קורלציה) בין ההסתברות לזכייה למספר הדירות. המתאם מספק אינדיקציה האם קיים קשר בין שני המשתנים (מספר הדירות וההסתברות לזכייה), ומה עוצמת הקשר. אם המתאם קרוב ל-1, זה אומר שיש קשר חזק וישיר ביניהם, ואם קרוב ל-0, זה אומר שאין קשר משמעותי.
# Calculate the correlation between 'Winning Probability' and 'Number of Apartments'
# Assuming 'Winning Probability' has already been calculated and exists in the DataFrame
shp['Winning Probability'] = shp['Number of Apartments'] / shp['Number of Participants']
# Calculate the correlation between 'Winning Probability' and 'Number of Apartments'
correlation_wp_apartments = shp['Winning Probability'].corr(shp['Number of Apartments'])
correlation_wp_apartments
המתאם עומד על 57%
זאת אומרת שיש איזה שהוא קשר ליניארי חיובי ובעוצמה בינונית בין מספר הדירות בהגרלה לבין ההסתברות לזכייה.
המשמעות היא שככל שמספר הדירות עולה, יש נטייה לכך שההסתברות לזכייה גם תעלה, אך הקשר אינו חזק במיוחד.
בפועל, זה אומר שיש גורמים נוספים שמשפיעים על ההסתברות לזכייה מעבר למספר הדירות בלבד, ולכן מספר הדירות יכול להסביר חלק מהשונות בהסתברות לזכייה, אבל לא את כולה.
במילים אחרות, יותר דירות בפרויקט בהחלט מעלה את הסיכויים לזכייה, אבל הקשר אינו מספיק חזק כדי להבטיח שזה תמיד יקרה, וייתכן שיש עוד גורמים המשפיעים על ההסתברות שצריך לקחת בחשבון.
הקשר הזה עשוי לגלות לנו באופן חלקי שאנשים לאו דווקא מחפשים את ההגרלות בהן ישנן מספר רב ביותר של דירות על המדף.
סיכום ומסקנות
אז, למעשה זה פרוייקט ראשון שלי בעולמות של פייתון.
היה לי חשוב לנת נתונים על דאטהסט שעשוי לעניין מגוון רחב מאוד של אנשים.
יחד עם זה חשוב להכיר את המגבלות הבאות:
- הנתונים מעודכנים נכון לתאריך 07/10/2024 - ההגרלות עצמן יסגרו רק בעוד חודש כך שהרבה יכול להשתנות.
- לא התייחסתי להגרלות המיועדות לקהל החרדי.
- כמו כן, אין גם התייחסות לנושא של משרתי מילואים פעילים לה יש הגרלות נוספות ומלאי ייעודי של דירות.
מה למדתי מזה?
- הסיכויים הטובים ביותר לזכות בדירה נמצאים בבית שאן, בית שמש ובבני עי"ש.
- ככל שמחיר הדירה גבוה יותר כך גם הביקוש שלה גדל.
- יש קשר בינוני בין גודל ההגרלה (כמות הדירות שבה) לבין הסיכוי שלך לזכות- ז"א שאנשים בהכרח לא מחפשים להירשם להגרלות הגדולות יותר.
אתגרים שהתמודדתי איתם
- העתקת הנתונים מהאתר הייתה מאתגרת , דרשה לנקות את הקובץ ולהוריד עמודות מיותרות.
- יצירת הגרפים והויזואליזציות - עלתה לא פעם שאלה של ‘מהו הגרף הנכון ביותר לסיטואציה’. לא חושב שמצאתי את הפתרון לשאלה הזאת.
- לא הצלחתי להצביע על זיקה ספציפית לאזור מרכז אף על פי שמהנתונים זה דיי משתקף.
דברים שהייתי רוצה להוסיף להבא
מנגנון שיעשה העתקה אוטומטית של מספר הנרשמים (באמצעות סלניום) ובכך יעדכן את כל ה-DataSet.
מילות סיכום
אני למדתי מזה המון מקווה שגם אתם.
אין ספק ששוק הדיור בארץ מומחר בצורה מאוד יקרה. מחיר למשתכן (או דירה בהנה בשמה העדכני) מייצרת לנו הזדמנות שעשויה להשפיע בצורה משמעותית על חייהם של לא מעט משפחות.
אני מקווה שהדברים שכתבתי כאן יקראו על ידי מי שאכן זקוק לזה וייושמו בהתאם.
מוזמנים להגיב לי במייל: dolev [@] ravid . email