Saya tidak tahu bahwa distribusi yang Anda klaim salah tetapi menurut saya ada beberapa fitur yang sangat tidak diinginkan. Untuk satu, hampir seluruh populasi memiliki> 0,99 MPC, yang tampaknya sangat tinggi untuk distribusi yang Anda pikir terpusat sekitar 3/4. Untuk yang lain, jika Anda berpikir bahwa guncangan pendapatan dalam model Anda bersifat sementara daripada permanen, pembacaan literatur saya adalah bahwa ini terlalu besar. Tapi itu semua terpisah dari pertanyaan Anda tentang memperkirakan hal-hal yang tergantung pada distribusi dan pemesanan MPC yang sebenarnya.
Memesan dari MPC rendah ke tinggi tampaknya mengambil sikap yang kuat tentang bagaimana perdagangan bekerja dalam perekonomian. Sekali lagi, saya tidak tahu itu salah, tetapi itu tidak menurut saya benar. Jika kita berpikir bahwa MPC disebabkan oleh pendapatan maka ini sama dengan mengatakan orang terkaya mendapatkan uang terlebih dahulu, membelanjakannya di toko orang terkaya kedua dan menyimpan sisanya, dia menghabiskan pengeluaran pria 1 di orang terkaya ketiga dan begitu seterusnya. Ekonomi menganggap saya kurang rapi daripada itu sehingga pemesanan acak lebih masuk akal bagi saya tanpa adanya bukti tentang di mana orang MPC tinggi dan rendah membelanjakan uang mereka.
Saya mencoba main-main dengan simulasi (dengan Python) untuk melihat seberapa baik kita dapat memperkirakan rantai konsumsi acak ini. Secara umum, bereksperimen beberapa nilai parameter dengan seragam, beta, dan distribusi Anda di atas, distribusi tidak terlalu penting dalam menentukan efek total konsumsi. Menggunakan cara geometris atau aritmatika dari distribusi MPC memberikan perkiraan yang bagus tentang efek total konsumsi aktual dari rantai konsumsi acak. * Di sisi lain, jika Anda memesan rumah tangga dengan MPC dari tinggi ke rendah atau rendah ke tinggi, ini membuat sangat besar perbedaan dalam total efek konsumsi yang dihasilkan.
* - Yang mengatakan, saya secara eksplisit mengesampingkan distribusi MPC di mana MPC dapat menjadi nol (atau kurang). Jika itu terjadi, rerata geometris akan menjadi nol dan perkiraan yang dihasilkan menggunakan rerata geometris cukup buruk.
Kode:
# Python 3.x code for stack exchange question
# http://economics.stackexchange.com/questions/3123/how-can-i-solve-for-total-money-spent-if-i-use-a-non-constant-mpc
import numpy as np
# Parameters
households = 5001
sims = 10000
initial_shock = 5
# Alternative marginal propensity to consume populations
MPC_vec_lin = np.linspace(0.01, 0.2, households)
MPC_vec_beta = np.random.beta(2, 5, size=households)
# THis is the function Gragas asks for
nvec = np.arange(0,households)
MPC_vec_gragas = (nvec + 2) / np.sqrt(nvec**2 + 5*nvec + 7)
MPC_vec = MPC_vec_gragas
# Calculate geometeric and arithmetic mean MPC from the population
approx_geo_mean = np.mean(np.log(MPC_vec))
approx_long_run_eqiv_MPC = np.exp(approx_geo_mean)
avg_MPC = np.mean(MPC_vec)
# Assuming that all households had the same MPC (@ geo / arithmetic level), what is the total effect?
approx_total_shock_with_geo = initial_shock / (1 - approx_long_run_eqiv_MPC)
approx_total_shock_with_mean = initial_shock / (1 - avg_MPC)
print('Initial shock size:', initial_shock)
print('Approximate total effect with geometric mean:', approx_total_shock_with_geo)
print('Approximate total effect with arithmetic mean:', approx_total_shock_with_mean)
# Simulating many possible orderings, what is the total effect for each ordering?
total_shock_vec = np.zeros(sims)
for i, item in enumerate(total_shock_vec):
MPC_vec_random_order = np.random.choice(MPC_vec, replace=False, size=households)
random_products = np.cumproduct(MPC_vec_random_order)
total_shock = np.sum(initial_shock * random_products) + initial_shock
total_shock_vec[i] = total_shock
# Compare resulting average and std. of total effect from simulations
print('Average total effect from simulations:', np.mean(total_shock_vec))
print('Std Dev of total effect from simulations:', np.std(total_shock_vec))
# Conclusion, mean and geomean do a very nice job of approximating the resulting total effect without knowing the
# general specific ordering. However, the worst and best total effect ordering (low to high and high to low) are
# quite different.
MPC_vec_low_to_high = MPC_vec.copy()
MPC_vec_low_to_high.sort()
MPC_vec_high_to_low = MPC_vec_low_to_high.copy()
MPC_vec_high_to_low = MPC_vec_high_to_low[::-1]
product_low_to_high = np.cumproduct(MPC_vec_low_to_high)
total_shock_low_to_high = np.sum(initial_shock * product_low_to_high) + initial_shock
product_high_to_low = np.cumproduct(MPC_vec_high_to_low)
total_shock_high_to_low = np.sum(initial_shock * product_high_to_low) + initial_shock
print('Maximum effect ordering effect size:', total_shock_high_to_low)
print('Minimum effect ordering effect size:', total_shock_low_to_high)
Hasil:
Initial shock size: 5
Approximate total effect with geometric mean: 6023.35708426
Approximate total effect with arithmetic mean: 6154.37897874
Average total effect from simulations: 5999.77721767
Std Dev of total effect from simulations: 642.715838738
Maximum effect ordering effect size: 16675.8496051
Minimum effect ordering effect size: 777.157515589