Convergence of Digital Financial Inclusion in China's 31 Provinces
1. Introduction
2. Methodology & Data
2.1 Methodology
2.2 Data
2.3 Descriptive statistics
G.describe().round(3)
yearfloat64
idfloat64
count
279
279
mean
2015
15
std
2.587
8.96
min
2011
0
25%
2013
7
50%
2015
15
75%
2017
23
max
2019
30
3. Exploratory data analysis
3.1 Data Visualization
px.line(
G,
x="year",
y="lnindex",
color="NAME_1"
)
px.line(G, x='year', y='lnindex', color='region', facet_col= 'part', facet_col_wrap= 2, height= 800)
px.box(
G,
x="lnindex",
color="part",
hover_name= 'NAME_1',
animation_frame = 'year'
)
gdf = gpd.read_file("/work/final.geojson")
gdf['gro']=gdf['lnindex2019']-gdf['lnindex2011']
gdf.describe().round(3)
field_1float64
idfloat64
count
31
31
mean
15
15
std
9.092
9.092
min
0
0
25%
7.5
7.5
50%
15
15
75%
22.5
22.5
max
30
30
4. Regression analysis
4.1 Absolute beta Convergence
px.scatter(
gdf,
x="lnindex2011",
y="gro",
color="part",
hover_name="region",
trendline="ols",
trendline_scope="overall"
)
px.scatter(
gdf,
x="lnindex2011",
y="gro",
color="part",
hover_name="region",
trendline="ols"
)
y = gdf['gro']
X = gdf['lnindex2011']
X_withconst = sm.add_constant(X)
OLS = sm.OLS(y, X_withconst).fit()
print(OLS.summary())
OLS Regression Results
==============================================================================
Dep. Variable: gro R-squared: 0.987
Model: OLS Adj. R-squared: 0.986
Method: Least Squares F-statistic: 2167.
Date: Tue, 09 Aug 2022 Prob (F-statistic): 8.34e-29
Time: 08:55:55 Log-Likelihood: 55.007
No. Observations: 31 AIC: -106.0
Df Residuals: 29 BIC: -103.1
Df Model: 1
Covariance Type: nonrobust
===============================================================================
coef std err t P>|t| [0.025 0.975]
-------------------------------------------------------------------------------
const 5.0637 0.062 81.264 0.000 4.936 5.191
lnindex2011 -0.8018 0.017 -46.550 0.000 -0.837 -0.767
==============================================================================
Omnibus: 0.617 Durbin-Watson: 1.968
Prob(Omnibus): 0.735 Jarque-Bera (JB): 0.655
Skew: 0.031 Prob(JB): 0.721
Kurtosis: 2.290 Cond. No. 31.8
==============================================================================
Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
west=gdf.query('part=="West"')
y1 = west['gro']
X1 = west['lnindex2011']
X1_withconst = sm.add_constant(X1)
OLS1 = sm.OLS(y1, X1_withconst).fit()
print(OLS1.summary())
OLS Regression Results
==============================================================================
Dep. Variable: gro R-squared: 0.994
Model: OLS Adj. R-squared: 0.993
Method: Least Squares F-statistic: 1648.
Date: Tue, 09 Aug 2022 Prob (F-statistic): 1.97e-12
Time: 08:55:55 Log-Likelihood: 28.058
No. Observations: 12 AIC: -52.12
Df Residuals: 10 BIC: -51.15
Df Model: 1
Covariance Type: nonrobust
===============================================================================
coef std err t P>|t| [0.025 0.975]
-------------------------------------------------------------------------------
const 5.3445 0.072 74.240 0.000 5.184 5.505
lnindex2011 -0.8889 0.022 -40.596 0.000 -0.938 -0.840
==============================================================================
Omnibus: 2.197 Durbin-Watson: 1.104
Prob(Omnibus): 0.333 Jarque-Bera (JB): 1.379
Skew: -0.800 Prob(JB): 0.502
Kurtosis: 2.555 Cond. No. 35.0
==============================================================================
Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
east=gdf.query('part=="East"')
y2 = east['gro']
X2 = east['lnindex2011']
X2_withconst = sm.add_constant(X2)
OLS2 = sm.OLS(y2, X2_withconst).fit()
print(OLS2.summary())
OLS Regression Results
==============================================================================
Dep. Variable: gro R-squared: 0.979
Model: OLS Adj. R-squared: 0.976
Method: Least Squares F-statistic: 413.5
Date: Tue, 09 Aug 2022 Prob (F-statistic): 7.85e-09
Time: 08:55:55 Log-Likelihood: 22.660
No. Observations: 11 AIC: -41.32
Df Residuals: 9 BIC: -40.52
Df Model: 1
Covariance Type: nonrobust
===============================================================================
coef std err t P>|t| [0.025 0.975]
-------------------------------------------------------------------------------
const 4.6645 0.140 33.336 0.000 4.348 4.981
lnindex2011 -0.7026 0.035 -20.334 0.000 -0.781 -0.624
==============================================================================
Omnibus: 0.739 Durbin-Watson: 2.317
Prob(Omnibus): 0.691 Jarque-Bera (JB): 0.587
Skew: -0.088 Prob(JB): 0.746
Kurtosis: 1.882 Cond. No. 58.5
==============================================================================
Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
center=gdf.query('part=="Central"')
y3 = center['gro']
X3 = center['lnindex2011']
X3_withconst = sm.add_constant(X3)
OLS3 = sm.OLS(y3, X3_withconst).fit()
print(OLS3.summary())
OLS Regression Results
==============================================================================
Dep. Variable: gro R-squared: 0.853
Model: OLS Adj. R-squared: 0.828
Method: Least Squares F-statistic: 34.68
Date: Tue, 09 Aug 2022 Prob (F-statistic): 0.00106
Time: 08:55:55 Log-Likelihood: 13.802
No. Observations: 8 AIC: -23.60
Df Residuals: 6 BIC: -23.45
Df Model: 1
Covariance Type: nonrobust
===============================================================================
coef std err t P>|t| [0.025 0.975]
-------------------------------------------------------------------------------
const 4.9740 0.455 10.938 0.000 3.861 6.087
lnindex2011 -0.7749 0.132 -5.889 0.001 -1.097 -0.453
==============================================================================
Omnibus: 1.274 Durbin-Watson: 2.261
Prob(Omnibus): 0.529 Jarque-Bera (JB): 0.738
Skew: -0.666 Prob(JB): 0.691
Kurtosis: 2.336 Cond. No. 96.8
==============================================================================
Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
4.2 Potential clusters
den = px.density_contour(
gdf,
x="lnindex2011",
y="gro"
)
den.update_traces(contours_coloring="fill", contours_showlabels = True, colorscale = 'peach')
den.show()
den = px.density_contour(
west,
x="lnindex2011",
y="gro",
)
den.update_traces(contours_coloring="fill", contours_showlabels = True, colorscale = 'peach')
den.show()
den = px.density_contour(
east,
x="lnindex2011",
y="gro",
)
den.update_traces(contours_coloring="fill", contours_showlabels = True, colorscale = 'peach')
den.show()
den = px.density_contour(
center,
x="lnindex2011",
y="gro",
)
den.update_traces(contours_coloring="fill", contours_showlabels = True, colorscale = 'peach')
den.show()
4.3 Conditional Convergence
smf.ols(formula='gro ~ lnindex2011+lnrgdp2011', data=gdf).fit().summary()