1. 程式人生 > >多元迴歸分析python實戰-----對我國財政收入的多因素進行分析

多元迴歸分析python實戰-----對我國財政收入的多因素進行分析

目錄

前言

資料

python相關分析

分析結果

python迴歸分析

模型建立

模型檢驗

確定公式

分析結果


前言

財政收入的規模大小對一個國家來說具有十分重要的意義,本文章分別從財政收入的組成因素和財政收入的影響因素兩個方面入手,對祖國1979-1999年度財政收入情況進行多因素分析。在財政收入影響因素分析上,除了通過理論選出因素並利用統計軟體建立模型分析,還把影響財政收入的結構因素進行了個別分析,最後在分析結論的基礎上,結合當前客觀條件和政策因素對未來財政收入做了一定的期望。

資料

資料來自網路,一共含有9個因素,GDP、能源消費總量、從業人員總數、全社會固定資產投資總額、實際利用外資總額,全國城鄉居民儲蓄存款年底月、居民人均消費水平、消費品零售總額和居民消費價格指數。資料如下。

其中t: 年份;y:財政收入;x1:GDP;x2:能源消費總量;x3:從業人員總數;x4:全社會固定資產投資總額;x5:實際利用外資總額;x6:全國城鄉居民儲蓄存款年底月;x7:居民人均消費水平;x8:消費品零售總額;x9:居民消費價格指數

t	y	x1	x2	x3	x4	x5	x6	x7	x8	x9
1979	1146.38	4038.2	58558	41024	849.36	31.14	281	197	1800	102
1980	1139.53	4517.8	60237	42361	910.9	31.14	399.5	236	2140	108.1
1981	1173.79	4860.3	59447	43725	961	31.14	523.7	249	2350	110.7
1982	1212.33	5301.8	62067	45296	1230.4	31.14	675.4	266	2570	112.8
1983	1366.95	5937.4	65040	46436	1430.1	19.81	892.5	289	2849.4	114.5
1984	1642.86	7206.7	70904	48197	1832.9	27.03	1214.7	327	3376.4	117.7
1985	2004.82	8986.1	76501	49873	2543.2	46.47	1622.6	437	4305	128.1
1986	2122.04	10201.4	80850	51282	3120.5	72.58	2238.5	452	4950	135.8
1987	2199.35	11954.5	86632	52783	3791.7	84.32	3081.4	550	5820	145.7
1988	2357.24	11922.3	92997	54334	4763.8	102.26	3822.2	692	7440	172.7
1989	2664.9	16917.8	96934	55329	4410.4	100.39	5196.4	762	8101.4	203.4
1990	2937.1	18398.4	95703	63909	4517	102.89	7119.8	802	8300.1	207.7
1991	3149.48	21662.3	103783	64799	5594.3	113.54	9241.6	896	9415.6	213.7
1992	3483.37	26651.9	109170	65554	8080.1	192.02	11759.4	1070	10993.7	225.2
1993	4348.93	34360.5	113993	66373	13072.3	359.6	15203.5	1331	12462.1	254.9
1994	5158.1	46670	122737	67199	17042.1	432.13	21318.8	1746	16264.7	310.2
1995	6242.2	57494.9	131176	67947	20019.3	481.33	29662.3	2236	20620	356.1
1996	7407.99	66830.3	138946	68850	22913.5	548.04	38520.8	2641	24774.1	377.8
1997	9651.14	73142.7	138173	69500	24914.1	644.08	46279.8	2834	27298.9	380.5
1998	9875.95	76967.1	132214	69957	28406.2	585.57	53407.5	2972	29153.5	370.9
1999	11444.05	80422.8	122000	70586	29834.7	526.59	59621.8	3143	31134.7	359.8

python相關分析

匯入資料

>>> import pandas as pd
>>> import numpy as np
>>> from matplotlib import pyplot as plt
>>> from sklearn.linear_model import LinearRegression
>>> data = pd.read_csv('D:\python\DataAnalysis\data\Revenue.csv')
>>> pd.read_csv('D:\python\DataAnalysis\data\Revenue.csv')
       t         y       x1      x2  ...         x6    x7       x8     x9
0   1979   1146.38   4038.2   58558  ...      281.0   197   1800.0  102.0
1   1980   1139.53   4517.8   60237  ...      399.5   236   2140.0  108.1
2   1981   1173.79   4860.3   59447  ...      523.7   249   2350.0  110.7
3   1982   1212.33   5301.8   62067  ...      675.4   266   2570.0  112.8
4   1983   1366.95   5937.4   65040  ...      892.5   289   2849.4  114.5
5   1984   1642.86   7206.7   70904  ...     1214.7   327   3376.4  117.7
6   1985   2004.82   8986.1   76501  ...     1622.6   437   4305.0  128.1
7   1986   2122.04  10201.4   80850  ...     2238.5   452   4950.0  135.8
8   1987   2199.35  11954.5   86632  ...     3081.4   550   5820.0  145.7
9   1988   2357.24  11922.3   92997  ...     3822.2   692   7440.0  172.7
10  1989   2664.90  16917.8   96934  ...     5196.4   762   8101.4  203.4
11  1990   2937.10  18398.4   95703  ...     7119.8   802   8300.1  207.7
12  1991   3149.48  21662.3  103783  ...     9241.6   896   9415.6  213.7
13  1992   3483.37  26651.9  109170  ...    11759.4  1070  10993.7  225.2
14  1993   4348.93  34360.5  113993  ...    15203.5  1331  12462.1  254.9
15  1994   5158.10  46670.0  122737  ...    21318.8  1746  16264.7  310.2
16  1995   6242.20  57494.9  131176  ...    29662.3  2236  20620.0  356.1
17  1996   7407.99  66830.3  138946  ...    38520.8  2641  24774.1  377.8
18  1997   9651.14  73142.7  138173  ...    46279.8  2834  27298.9  380.5
19  1998   9875.95  76967.1  132214  ...    53407.5  2972  29153.5  370.9
20  1999  11444.05  80422.8  122000  ...    59621.8  3143  31134.7  359.8
>>> data.plot()

相關係數矩陣

>>> print (data.corr())
           t         y        x1    ...           x7        x8        x9
t   1.000000  0.901941  0.920798    ...     0.924618  0.930975  0.955969
y   0.901941  1.000000  0.985051    ...     0.986643  0.990883  0.934222
x1  0.920798  0.985051  1.000000    ...     0.998871  0.996276  0.974196
x2  0.975170  0.862568  0.910217    ...     0.912941  0.911467  0.971141
x3  0.979701  0.829253  0.862643    ...     0.863775  0.868514  0.926190
x4  0.910709  0.984607  0.996498    ...     0.995362  0.992484  0.962281
x5  0.902074  0.946547  0.980987    ...     0.977137  0.967684  0.973785
x6  0.874597  0.995125  0.984902    ...     0.985560  0.987829  0.925630
x7  0.924618  0.986643  0.998871    ...     1.000000  0.998598  0.974454
x8  0.930975  0.990883  0.996276    ...     0.998598  1.000000  0.969709
x9  0.955969  0.934222  0.974196    ...     0.974454  0.969709  1.000000

計算財政收入與其他列的相關係數

>>> print (data.corr()['y'])
t     0.901941
y     1.000000
x1    0.985051
x2    0.862568
x3    0.829253
x4    0.984607
x5    0.946547
x6    0.995125
x7    0.986643
x8    0.990883
x9    0.934222
Name: y, dtype: float64

分析結果

根據相關係數,y與x1-x9的關係都非常密切(r > 0.8,ρ < 0.001),財政收入與城鄉居民儲蓄存款年底餘額之間關係最為密切(r = 0.995,ρ < 0.001)

相關係數表明了各變數與財政收入之間的線性關係程度相當高,由此可以認為所選取的九個因素都與財政收入存在著線性關係。

基於此結果,覺的繼續進行線性迴歸分析,以便建立財政收入與每個因素之間的迴歸模型。這裡以財政收入為因變數,其他為自變數

python迴歸分析

這裡我們使用了sklearn庫,和高大上機器學習相關的

模型建立

>>> lrModel = LinearRegression()
>>> y = data['y'].values.reshape(-1, 1) 
>>> x = data.ix[:,2:]

 這裡因為函式的特殊性,即使是一維陣列也要轉換為二位陣列。

>>> x
         x1      x2     x3        x4  ...         x6    x7       x8     x9
0    4038.2   58558  41024    849.36  ...      281.0   197   1800.0  102.0
1    4517.8   60237  42361    910.90  ...      399.5   236   2140.0  108.1
2    4860.3   59447  43725    961.00  ...      523.7   249   2350.0  110.7
3    5301.8   62067  45296   1230.40  ...      675.4   266   2570.0  112.8
4    5937.4   65040  46436   1430.10  ...      892.5   289   2849.4  114.5
5    7206.7   70904  48197   1832.90  ...     1214.7   327   3376.4  117.7
6    8986.1   76501  49873   2543.20  ...     1622.6   437   4305.0  128.1
7   10201.4   80850  51282   3120.50  ...     2238.5   452   4950.0  135.8
8   11954.5   86632  52783   3791.70  ...     3081.4   550   5820.0  145.7
9   11922.3   92997  54334   4763.80  ...     3822.2   692   7440.0  172.7
10  16917.8   96934  55329   4410.40  ...     5196.4   762   8101.4  203.4
11  18398.4   95703  63909   4517.00  ...     7119.8   802   8300.1  207.7
12  21662.3  103783  64799   5594.30  ...     9241.6   896   9415.6  213.7
13  26651.9  109170  65554   8080.10  ...    11759.4  1070  10993.7  225.2
14  34360.5  113993  66373  13072.30  ...    15203.5  1331  12462.1  254.9
15  46670.0  122737  67199  17042.10  ...    21318.8  1746  16264.7  310.2
16  57494.9  131176  67947  20019.30  ...    29662.3  2236  20620.0  356.1
17  66830.3  138946  68850  22913.50  ...    38520.8  2641  24774.1  377.8
18  73142.7  138173  69500  24914.10  ...    46279.8  2834  27298.9  380.5
19  76967.1  132214  69957  28406.20  ...    53407.5  2972  29153.5  370.9
20  80422.8  122000  70586  29834.70  ...    59621.8  3143  31134.7  359.8
>>> y
array([[ 1146.38],
       [ 1139.53],
       [ 1173.79],
       [ 1212.33],
       [ 1366.95],
       [ 1642.86],
       [ 2004.82],
       [ 2122.04],
       [ 2199.35],
       [ 2357.24],
       [ 2664.9 ],
       [ 2937.1 ],
       [ 3149.48],
       [ 3483.37],
       [ 4348.93],
       [ 5158.1 ],
       [ 6242.2 ],
       [ 7407.99],
       [ 9651.14],
       [ 9875.95],
       [11444.05]])

模型檢驗

>>> lrModel.score(x,y)
0.9971458875882132

確定公式

檢視截距

>>> alpha = lrModel.intercept_[0]
>>> alpha
2425.6858933074127

檢視引數

>>> beta = lrModel.coef_[0]
>>> beta
array([  0.1000633 ,  -0.06393532,   0.06399272,  -0.09941855,
         6.08718343,  -0.1251754 ,  -5.19932315,   1.07558855,
       -16.21937074])

最後公式為

>>> y =2425.6858933074127 +  0.1000633x1 - 0.06393532x2 + 0.06399272x3 - 0.09941855x4 + 6.08718343x5 - 0.1251754x6 - 5.19932315x7 + 1.07558855x8 - 16.21937074x9

從結果可知,對財政資料影響正相關的有 x1國內生產總值,x3從業人員總數,x5實際利用外資總額,x8消費品零售總額,x9居民消費總數。

>>> data['y'].plot()
<matplotlib.axes._subplots.AxesSubplot object at 0x000000001C30E7F0>

分析結果

(1)從我們上面的步驟來看,我國財政增長具有相當的慣性

(2)財政收入對GDP的依存度較低,這反映出改革開放以來,我國財政收入佔GDP的比重出現逐年下滑的客觀事實。

(3)財政收入對能源消費總量x2和全社會固定資產投資總額出現輕微負相關,說明我國的消費結構發生了一些變化

(4)x3從業人數總額和x8零售品消費總額對財政收入正相關,這一直都是相輔相成的