added chart of change of wealth distribution over time
This commit is contained in:
		
							parent
							
								
									2355d79e60
								
							
						
					
					
						commit
						3c425f7465
					
				
							
								
								
									
										59
									
								
								econ-demo.py
									
									
									
									
									
								
							
							
						
						
									
										59
									
								
								econ-demo.py
									
									
									
									
									
								
							| @ -1,5 +1,6 @@ | ||||
| 
 | ||||
| import pandas as pd | ||||
| import matplotlib.pyplot as plt | ||||
| 
 | ||||
| def simple_interest(balances, rate=0.05, terms=3): | ||||
|     if terms <= 0: | ||||
| @ -13,7 +14,7 @@ def simple_interest(balances, rate=0.05, terms=3): | ||||
|         new_bal.append(b) | ||||
|     return new_bal | ||||
| 
 | ||||
| def share_of_wealth(balances): | ||||
| def calc_share_of_wealth(balances): | ||||
|     total_money = sum(balances) | ||||
|     shares = [] | ||||
|     for balance in balances: | ||||
| @ -29,7 +30,7 @@ def ubi(balances, dividend=10, terms=3): | ||||
|         new_bal.append(b) | ||||
|     return new_bal | ||||
| 
 | ||||
| def get_balances_over_time(names, balances, func): | ||||
| def get_balances_over_time(names, balances, func, terms=4): | ||||
|     if func is None: | ||||
|         print("Need a function!") | ||||
|         return | ||||
| @ -41,7 +42,7 @@ def get_balances_over_time(names, balances, func): | ||||
|         'initial' : balances | ||||
|     } | ||||
|     df = pd.DataFrame(data) | ||||
|     for t in range(1,4): | ||||
|     for t in range(1,terms): | ||||
|         key = "term%i" % t  | ||||
|         frame = func(balances, terms=t) | ||||
|         if frame is not None: | ||||
| @ -59,7 +60,7 @@ def illustrate_share_of_wealth(): | ||||
|     print("They respectively have ", balances) | ||||
| 
 | ||||
|     print("\nThe initial distribution of wealth is ") | ||||
|     print(share_of_wealth(balances)) | ||||
|     print(calc_share_of_wealth(balances)) | ||||
|     print("\n") | ||||
| 
 | ||||
|     df = get_balances_over_time ( | ||||
| @ -84,6 +85,52 @@ def illustrate_share_of_wealth(): | ||||
|     print(u) | ||||
| 
 | ||||
|     print("What is the share of wealth in a UBI economy?") | ||||
|     print(share_of_wealth(u)) | ||||
|     print(calc_share_of_wealth(u)) | ||||
| 
 | ||||
| # illustrate_share_of_wealth() | ||||
| 
 | ||||
| def visualize_ubi(terms=25): | ||||
| 
 | ||||
|     participants = ["Alice", "Bob", "Charlie"] | ||||
|     balances = [100,40,20] | ||||
| 
 | ||||
|     df = get_balances_over_time ( | ||||
|         participants, balances, ubi, | ||||
|         terms = terms | ||||
|     ) | ||||
|     # print(df.keys) | ||||
|     shares = [] | ||||
|     for key, data in df.items(): | ||||
|         if key == "name": | ||||
|             continue | ||||
|         if key == "initial": | ||||
|             continue | ||||
|         shares.append(calc_share_of_wealth(data)) | ||||
|     sow = pd.DataFrame(shares) | ||||
|     print(sow.keys()) | ||||
|     x = [i for i in range(1,terms)] | ||||
|     assert(len(x) == len(shares)) | ||||
| 
 | ||||
|     plt.style.use('dark_background') | ||||
|     plt.plot( | ||||
|         x, sow[0], color="red", label=participants[0] | ||||
|     ) | ||||
|     plt.plot( | ||||
|         x, sow[1], color="lightgreen", label=participants[1] | ||||
|     ) | ||||
|     plt.plot( | ||||
|         x, sow[2], color="cyan", label=participants[2] | ||||
|     ) | ||||
|     plt.axhline( | ||||
|         y=0.33, color='violet', linestyle='--' | ||||
|     ) | ||||
| 
 | ||||
|     plt.title("Change in Wealth Distribution Under UBI") | ||||
|     plt.legend() | ||||
|     plt.xlabel("Terms") | ||||
|     plt.ylabel("Share of Wealth") | ||||
|     plt.show() | ||||
|     return | ||||
| 
 | ||||
| visualize_ubi(terms=50) | ||||
| 
 | ||||
| illustrate_share_of_wealth() | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user