國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
第 五 章 結論
1. 由第四章第一節,發現隨著等分切越細,Imask_v從 96 年開始有漸漸地上升,表 示台灣社會財富階級流動有可能逐漸趨向不公義。另外,由實際資料所算出的 Imask_v 大多介於 [0.7, 0.97],表示大部分時段之財富階級滯留情形較像雙峰分配的財富階級流 動之滯留情形,亦即貧者維持貧窮,富者維持富有,中產階級有往兩端移動的趨勢,
顯示財富階級流動在多年以來也許沒有很公義。
2. 由第四章第二節,發現在第 85 等分之後,民國 95∼96 年以及民國 96∼97 年的
Ijustice 都較大。探究原因,於民國 96 年到 97 年,雖然台灣發生金融海嘯,但社會反而
是公義的,有可能因為富有階級的人,投資標的有受到很大影響,所以財富階級就往 下流動,導致社會反而變公平了,似乎與第一章研究背景提及的相關現象有相呼應。
3. 由第四章第三節的財富價值分配,發現民國 93∼102 年其分配都是極度右偏的 Gamma 分配,表示台灣大部分 20∼30 歲申報人在這 10 年來幾乎偏向貧窮,少部分的 人握有大量財富,所以就算從第二章發現每一年的財富價值之平均數雖有穩定成長,
但這不代表整體社會經濟也跟著成長。
4. 由第四章第三節的財富等第,發現財富等第要切 70 等分到 160 等分,Ijustice 才 能較合理反映台灣社會財富階級流動是否公義,因此不宜切太少等分或太多等分就進 行詮釋。而一般在做轉移矩陣的文獻,可能只對財富價值切 5 等分到 25 等分就進行分 析,這樣是否導致對當時社會財富階級流動情形可能造成誤判呢,這點是值得留意深 思的部分。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
附錄 A 模擬一到模擬三的 python code
列表 A.1 模擬常態分配的財富階級流動 In[1]:
%pylab inline
In[2]:
import numpy as np import pandas as pd from scipy import stats
from sklearn.feature_selection import chi2 import numpy.linalg as lg
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression import pickle
import scipy.stats
In[3]:
#模擬10000個樣本 num_peo=10000
table=np.mat(np.zeros((num_peo,12)))
‧
for i in range(num_peo):
table[i,0]=k k+=1
In[5]:
#模擬常態分配的財富階級流動 money=[]
for i in range(num_peo):
a=np.random.normal(loc=100.0,scale=10.0) money.append(a)
money=sorted(money)
for i in range(num_peo):
table[i,1]=money[i]
col=2
for well_iter in range(10):
medi=np.median(money) for i in range(num_peo):
if money[i]<medi:
money[i]=money[i]+stats.chi2.rvs(20) if money[i]>=medi:
money[i]=money[i]stats.chi2.rvs(10) for i in range(num_peo):
table[i,col]=money[i]
col+=1
‧
for c in range(2,12):xis=[]
for i in range(num_peo):
xis.append(table[i,c])
plt.hist(xis,range = (0,400),bins=100,alpha=0.6)
plt.savefig(’C:\\Users\\user\\Desktop\\normal pic\\%d’%c)
for size in range(5,205,5):
well93=[];well94=[];well95=[];well96=[];well97=[];well98=[]
well99=[];well100=[];well101=[];well102=[]
wellidx=[well93,well94,well95,well96,well97, well98,well99,well100,well101,well102]
for yr in range(93,103):#財富價值由小排到大
two_var=data93_102[[’idn’,’chi_’+str(yr)+’_wellsum’]]
test=pd.concat([two_var,pd.DataFrame(columns=[’label_’+str(yr)])]
,sort=True) test=np.mat(test)
for i in range(num_peo):
wellidx[yr93].append((test[i,0],test[i,1],test[i,2])) ID_left=[]
ID_right=[]
‧
for i in range(size):
ID_left.append(int(num_peo/size*i))
ID_right.append(int(num_peo/size*(i+1)1)) wellidx[yr93]=sorted(wellidx[yr93])
wellidx[yr93]=np.mat(wellidx[yr93]) p,q=0,1
for i in range(size):
for j in range(ID_left[p],ID_right[p]+1):
wellidx[yr93][j,2]=q for i in range(2,10):
well_merge=pd.merge(well_merge,wellidx[i]
‧
for i in range(9):
before_label=[]
after_label=[]
for cc in range(1,size+1):
before_label.append(cc) after_label.append(cc)
for ee in range(we_need_data93_102.shape[0]):
for m in range(len(before_label)):
if we_need_data93_102[ee,left]==before_label[m]:
for n in range(len(after_label)):
if we_need_data93_102[ee,right]==after_label[n]:
matrixidx[bb][n,m]+=1
left+=1 right+=1 m=[0]*size
for j in range(size):
for i in range(size):
m[j]=m[j]+matrixidx[bb][i,j]
for j in range(size):
for i in range(size):
matrixidx[bb][i,j]=matrixidx[bb][i,j]/m[j]
‧
v = np.linspace(0,1,m) v = list(v)
v = np.linspace(0,1,m+1) v = list(v)
‧
for n in range(5,205,5):
v = mask_v(n) y1 = list()
for i in range(int(n/51)*9,int(n/5)*9):
y1.append(float
(m[i].diagonal()*v/(lg.norm(v)*lg.norm(m[i].diagonal())))) y=np.array(y1)
lm = LinearRegression()
lm.fit(np.reshape(x,(len(x),1)),np.reshape(y,(len(y),1))) plt.title(’The slope is %f’%lm.coef_[0][0])
fig = plt.plot(xx,y)
plt.savefig(’C:\\Users\\user\\Desktop\\normal_mask\\%d’%n) plt.close()
In[12]:
#把40張圖片做成gif檔
from PIL import Image, ImageSequence
seq = []
for i in range(5,205,5):
im = Image.open(r’C:\\Users\\user\\Desktop\\simu5to200\\%d.png’%i) seq.append(im.copy())
seq[0].save(r’40_slope.gif’, save_all = True, append_images = seq[1:])
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
In[15]:
#算出 I_justice measure=[]
for n in range(5,205,5):
bar=(n1)/2
for idx in range(int(n/51)*9,int(n/5)*9):
g=scipy.stats.norm(bar, np.sqrt(1))
numerator_first =(bar(nn))*(0m[idx][nn+1,nn]) numerator_middle = 0
numerator_final =(bar(n1))*(0m[idx][n2,n1]) denominator = 0
for i in range(1,n1):
numerator_middle += +(bari)*(m[idx][i+1,i]m[idx][i1,i])
numerator=numerator_first+numerator_middle+numerator_final
for i in range(n):
denominator+=(g.pdf(i)m[idx][i,i])**2
di=numerator/denominator
measure.append(di)
In[16]:
mat_mea=np.mat(np.zeros((40,9)))
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
In[17]:
k=0
for i in range(40):
for j in range(9):
mat_mea[i,j]=measure[k]
k+=1
In[18]:#畫出 I_justice 折線圖
x=[’1.5’,’2.5’,’3.5’,’4.5’,’5.5’,’6.5’,’7.5’,’8.5’,’9.5’]
for n in range(40):
print(mat_mea.tolist()[n])
plt.plot(x,mat_mea.tolist()[n])
plt.savefig(’C:\\Users\\user\\Desktop\\normal_so\\%d’%n) plt.close()
‧
for i in range(num_peo):
a=100*stats.gamma.rvs(a=2,scale=0.5) money.append(a)
money=sorted(money) for i in range(num_peo):
table[i,1]=money[i]
coin=stats.binom.rvs(1,0.2,size=num_peo) col=2
for well_iter in range(10):
for i in range(num_peo):
if money[i]<=100: for i in range(num_peo):
table[i,col]=money[i]
col+=1
‧
for i in range(num_peo):
table[i,1]=money[i]
col=2
for well_iter in range(10):
for i in range(num_peo):
if money[i]<=90: for i in range(num_peo):
table[i,col]=money[i]
col+=1
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
參考文獻
[1] WORLD INEQUALITY REPORT 2018. https://wir2018.wid.world/.
[2] World Inequality Database(USA). https://wid.world/country/usa/.
[3] World Inequality Database(Taiwan). https://wid.world/country/taiwan/.
[4] 陳耀宗. 「拿薪水的人不夠有錢」朱敬一談貧富差距:0.01% 頂級富豪靠股利、土地 買賣致富. https://www.storm.mg/article/169324.