使用的R语言版本号为:4.3.3
在研究国家财政收入时,我们把财政收入按收入形式分为:各项税收收入、企业收入、债务收入、国家能源交通重点建设基金收入、基本建设贷款归还收入、国家预算调节基金收入、其他收入等。为了建立国家财政收入回归模型,我们以财政收入y(亿元)为因变量,自变量如变量说明中所示。从《中国统计年鉴》获得1978-2023年的统计数据。
产业结构变迁:1978 - 2023 年,我国从计划经济向市场经济转型,农业在经济占比中逐步让位于工业、服务业,工业经历从轻工业为主到重化工业、高端制造升级,建筑业随城镇化快速发展,产业结构动态变化深刻影响财政收入来源结构,如工业税收、建筑业相关税费的演变 。
消费与人口维度:人口规模增长与结构老龄化并行,社会消费总额从物资短缺到消费升级、多元化,消费作为经济增长 “三驾马车” 之一,其规模与结构变化,以及人口因素对公共服务、就业、税源的影响,都与财政收入的生成和支出需求紧密交织 。
灾害影响常态:此期间,自然灾害(如旱灾、水灾)频发,农业、基础设施等易受冲击,受灾面积数据反映生态与经济风险,关联财政救灾投入、农业产业恢复对财政的影响,是研究财政收入稳定性不可忽视的背景因素 。
自变量中,农业、工业、建筑业增加值反映产业经济规模,产业发展对财政收入(如税收、产业贡献)影响直接;人口数关联税源、消费与公共服务支出对应的财政收支;社会消费总额体现经济活力与内需,影响相关税收及经济循环对财政的支撑;受灾面积关乎农业等产业损失及财政救灾支出,与财政收入存在间接关联 ,这些数据与财政收入因变量高度契合研究逻辑。
政策制定参考:通过明确各因素对财政收入的影响程度,助力政府精准施策。如明晰工业增加值对财政收入的高贡献,可针对性扶持工业创新升级;了解受灾面积的影响,能优化财政救灾预算与农业保险等配套政策 。
经济预测应用:构建的回归模型可基于产业、人口、消费等数据变化,预测财政收入趋势,为财政预算安排、债务管理、公共支出规划提供前瞻性依据,保障财政可持续性 。
| 变量 | 单位 | 说明 |
|---|---|---|
| year | 时间变量 | |
| aav | 亿元 | 农业增加值 |
| iav | 亿元 | 工业增加值 |
| cav | 亿元 | 建筑业增加值 |
| pnum | 万人 | 人口数 |
| tsrc | 亿元 | 社会零售消费总额 |
| da | 千公顷 | 受灾面积 |
| y | 亿元 | 财政收入 |
data_frame <- read.csv("../data/project.csv", header = TRUE)
knitr::kable(head(data_frame), caption = "数据前10行概览")
| year | aav | iav | cav | pnum | tsrc | da | y |
|---|---|---|---|---|---|---|---|
| 1978年 | 1018.5 | 1621.4 | 138.9 | 96259 | 1558.6 | 50810 | 1132.26 |
| 1979年 | 1259.0 | 1786.5 | 144.6 | 97542 | 1800.0 | 39370 | 1146.38 |
| 1980年 | 1359.5 | 2014.8 | 196.3 | 98705 | 2140.0 | 50030 | 1159.93 |
| 1981年 | 1545.7 | 2067.7 | 208.0 | 100072 | 2350.0 | 39790 | 1175.79 |
| 1982年 | 1761.7 | 2183.0 | 221.6 | 101654 | 2570.0 | 33130 | 1212.33 |
| 1983年 | 1960.9 | 2399.0 | 271.7 | 103008 | 2849.4 | 34710 | 1366.95 |
在做回归分析之前,我们首先对数据做一个描述性分析,以了解数据的分布情况。
library(skimr)
skim(data_frame)
| Name | data_frame |
| Number of rows | 46 |
| Number of columns | 8 |
| _______________________ | |
| Column type frequency: | |
| character | 1 |
| numeric | 7 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| year | 0 | 1 | 5 | 5 | 0 | 46 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| aav | 0 | 1 | 27132.42 | 27256.26 | 1018.50 | 4425.45 | 15109.95 | 48008.82 | 89755.2 | ▇▂▁▂▁ |
| iav | 0 | 1 | 107297.53 | 124587.81 | 1621.40 | 6620.25 | 42056.40 | 205460.82 | 399103.1 | ▇▁▂▂▁ |
| cav | 0 | 1 | 20530.37 | 26728.69 | 138.90 | 824.27 | 5739.75 | 35903.70 | 85691.1 | ▇▁▁▁▁ |
| pnum | 0 | 1 | 123848.22 | 14119.85 | 96259.00 | 113111.25 | 127185.00 | 135670.50 | 141260.0 | ▃▂▃▆▇ |
| tsrc | 0 | 1 | 118827.32 | 148947.61 | 1558.60 | 8151.07 | 40343.75 | 199088.92 | 467098.0 | ▇▁▁▁▂ |
| da | 0 | 1 | 38700.63 | 13042.64 | 10539.00 | 31485.00 | 40540.00 | 49732.50 | 55470.0 | ▂▂▃▃▇ |
| y | 0 | 1 | 58027.37 | 73076.58 | 1132.26 | 2732.95 | 14890.64 | 113908.75 | 216795.4 | ▇▁▁▁▂ |
从数据分析结果来看,所有数值型变量呈现出显著的右偏分布特征(均值大于中位数),其中iav、cav、tsrc和y的极端右偏现象尤为突出,反映出经济指标在后期可能出现爆发式增长或存在特殊事件驱动。变量间对比显示,aav(均值27,132)与iav(均值107,297)的量级差异暗示农业与工业领域的经济活动规模存在显著差距,而cav在均值20,530的基础上最大值达到85,691,表明该指标在2020年后呈现加速增长态势。时间序列分析揭示了明显的长期增长趋势,特别是2000年后多数指标进入指数增长阶段,但pnum(人口数量指标)标准差仅14,119.85,其稳定增长特征与经济类变量形成鲜明对比。值得注意的是,y在2020-2023年突破21万大关的同时,tsrc在2021年出现43.8万的峰值,反映出社会零售消费总额对财政收入贡献显著增加。
knitr::kable(cor(data_frame[, -1]), caption = "数据相关性")
| aav | iav | cav | pnum | tsrc | da | y | |
|---|---|---|---|---|---|---|---|
| aav | 1.0000000 | 0.9964996 | 0.9881188 | 0.8495634 | 0.9878964 | -0.8449471 | 0.9881722 |
| iav | 0.9964996 | 1.0000000 | 0.9925025 | 0.8198523 | 0.9915681 | -0.8638416 | 0.9928630 |
| cav | 0.9881188 | 0.9925025 | 1.0000000 | 0.7756141 | 0.9986561 | -0.8780677 | 0.9930390 |
| pnum | 0.8495634 | 0.8198523 | 0.7756141 | 1.0000000 | 0.7863979 | -0.5380266 | 0.7938737 |
| tsrc | 0.9878964 | 0.9915681 | 0.9986561 | 0.7863979 | 1.0000000 | -0.8758818 | 0.9954968 |
| da | -0.8449471 | -0.8638416 | -0.8780677 | -0.5380266 | -0.8758818 | 1.0000000 | -0.8798825 |
| y | 0.9881722 | 0.9928630 | 0.9930390 | 0.7938737 | 0.9954968 | -0.8798825 | 1.0000000 |
从相关系数矩阵中,我们可以看到各变量之间的相关关系。例如,财政收入(y)与农业增加值(aav)、工业增加值(iav)、建筑业增加值(cav)和税收收入(tsrc)之间存在高度正相关关系,而与受灾面积(da)之间存在负相关关系。这些信息对于理解各变量之间的相互关系和建立回归模型非常重要。
首先,我们使用一元线性回归模型来分析财政收入与建筑业增加值之间的关系。
lm1 <- lm(y ~ cav, data = data_frame)
summary(lm1)
##
## Call:
## lm(formula = y ~ cav, data = data_frame)
##
## Residuals:
## Min 1Q Median 3Q Max
## -18142 -3864 -1660 3112 20310
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.288e+03 1.625e+03 1.408 0.166
## cav 2.715e+00 4.855e-02 55.924 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 8705 on 44 degrees of freedom
## Multiple R-squared: 0.9861, Adjusted R-squared: 0.9858
## F-statistic: 3127 on 1 and 44 DF, p-value: < 2.2e-16
根据回归分析结果,财政收入(y)与建筑业增加值(cav)之间存在高度显著的正向线性关系。模型显示,cav的回归系数为2.715(p<0.001),表明在样本期间,建筑业增加值每增加1亿元,财政收入平均增加2.715亿元。该模型的拟合优度\(R^2\)达到0.9861,说明建筑业增加值能够解释财政收入变动的98.6%。同时,残差分析显示标准误为8705,最大正向偏离约20310亿元,表明在个别年份可能存在其他未纳入模型的因素(如政策调整或非税收入变化)导致实际财政收入偏离趋势线。从统计显著性(F统计量3127,p<2.2e-16)和经济意义双重维度看,建筑业发展对财政收入具有决定性作用,这一发现对财政规划和产业结构调整具有重要参考价值。
根据上面的分析,我们进行残差分析,以检查模型的假设是否成立。
e <- rstandard(lm1)
plot(data_frame$cav, e, xlab = "cav", ylab = "Standardized Residuals", main = "Residuals plot")
abline(h = 0, col = "red")
该残差图显示标准化残差与自变量 cav
之间存在潜在的异方差性问题,表现为低值区域(cav 接近
0)的残差聚集且部分点偏离零线较远,而高值区域(如
cav > 60000)的残差波动范围扩大,误差方差随自变量变化而变化;同时,低值区密集的残差点可能反映模型对局部数据的拟合不足,需警惕异常值或未被捕捉的非线性关系。为改进模型,使用多元回归模型,并引入其他可能影响财政收入的变量。
在多元回归之前,对模型做异方差检验。
abse <- abs(e)
cor.test(data_frame$cav, abse, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: data_frame$cav and abse
## S = 4564, p-value = 1.047e-07
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.7185322
尝试运用最优权函数处理异方差
s <- seq(-2, 2, 0.5)
result1 <- vector(length = 9, mode = "list")
result2 <- vector(length = 9, mode = "list")
result3 <- vector(length = 9, mode = "list")
for (j in 1:9)
{
w <- data_frame$cav^(-s[j])
lm4 <- lm(y ~ cav, weights = w, data_frame)
result1[[j]] <- logLik(lm4)
result2[[j]] <- summary(lm4)
result3[[j]] <- abs(rstandard(lm4))
}
result1
## [[1]]
## 'log Lik.' -565.4661 (df=3)
##
## [[2]]
## 'log Lik.' -545.1545 (df=3)
##
## [[3]]
## 'log Lik.' -525.2086 (df=3)
##
## [[4]]
## 'log Lik.' -504.3782 (df=3)
##
## [[5]]
## 'log Lik.' -481.5431 (df=3)
##
## [[6]]
## 'log Lik.' -457.869 (df=3)
##
## [[7]]
## 'log Lik.' -438.674 (df=3)
##
## [[8]]
## 'log Lik.' -429.1203 (df=3)
##
## [[9]]
## 'log Lik.' -427.2758 (df=3)
result2[which.max(result1)]
## [[1]]
##
## Call:
## lm(formula = y ~ cav, data = data_frame, weights = w)
##
## Weighted Residuals:
## Min 1Q Median 3Q Max
## -1.0982 -0.3147 0.0759 0.4387 0.7180
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 711.80212 41.62660 17.10 <2e-16 ***
## cav 2.57946 0.08908 28.96 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.5214 on 44 degrees of freedom
## Multiple R-squared: 0.9501, Adjusted R-squared: 0.949
## F-statistic: 838.5 on 1 and 44 DF, p-value: < 2.2e-16
cor.test(data_frame$cav, result3[[which.max(result1)]], method = "spearman")
##
## Spearman's rank correlation rho
##
## data: data_frame$cav and result3[[which.max(result1)]]
## S = 17974, p-value = 0.4717
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## -0.1084798
使用最优权函数成功消除了异方差性。
library(lmtest)
## 载入需要的程辑包:zoo
##
## 载入程辑包:'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
dwtest(lm1, alternative = "two.sided")
##
## Durbin-Watson test
##
## data: lm1
## DW = 0.1425, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is not 0
由DW值为0.1425知,说明残差存在自相关性,尝试使用差分消除自相关性。
dlm1 <- lm(diff(y)~diff(cav)-1,data=data_frame)
summary(dlm1)
##
## Call:
## lm(formula = diff(y) ~ diff(cav) - 1, data = data_frame)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11892.7 -455.0 110.9 1198.5 6841.4
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## diff(cav) 2.4583 0.1666 14.76 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3201 on 44 degrees of freedom
## Multiple R-squared: 0.832, Adjusted R-squared: 0.8281
## F-statistic: 217.8 on 1 and 44 DF, p-value: < 2.2e-16
dwtest(dlm1, alternative = "two.sided")
##
## Durbin-Watson test
##
## data: dlm1
## DW = 1.3952, p-value = 0.03788
## alternative hypothesis: true autocorrelation is not 0
由DW值显著接近2,说明差分后残差不再存在自相关性。
lm_m <- lm(y ~ . - year, data = data_frame)
summary(lm_m)
##
## Call:
## lm(formula = y ~ . - year, data = data_frame)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11308.7 -3094.1 -429.1 2717.1 9092.3
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.995e+04 2.010e+04 2.486 0.01733 *
## aav 4.237e-01 5.328e-01 0.795 0.43132
## iav 3.406e-01 9.616e-02 3.542 0.00105 **
## cav -3.674e+00 8.094e-01 -4.539 5.30e-05 ***
## pnum -4.541e-01 2.166e-01 -2.096 0.04263 *
## tsrc 8.121e-01 1.165e-01 6.972 2.34e-08 ***
## da -1.240e-01 1.477e-01 -0.839 0.40642
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5075 on 39 degrees of freedom
## Multiple R-squared: 0.9958, Adjusted R-squared: 0.9952
## F-statistic: 1548 on 6 and 39 DF, p-value: < 2.2e-16
从上面的结果可以看到,模型拟合优度\(R^2\)为0.9958,说明模型能够解释财政收入变动的99.58%。同时,模型中由很多变量不显著。
# 回归方程显著性检验
library(car)
## 载入需要的程辑包:carData
Anova(lm_m, type = 3)
## Anova Table (Type III tests)
##
## Response: y
## Sum Sq Df F value Pr(>F)
## (Intercept) 159147743 1 6.1780 0.017329 *
## aav 16288915 1 0.6323 0.431317
## iav 323149250 1 12.5444 0.001048 **
## cav 530716300 1 20.6020 5.300e-05 ***
## pnum 113163056 1 4.3929 0.042628 *
## tsrc 1252073996 1 48.6046 2.344e-08 ***
## da 18146177 1 0.7044 0.406417
## Residuals 1004655278 39
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
首先选择最优子集
library(leaps)
exps <- regsubsets(y ~ . - year, data = data_frame, nbest = 1, really.big = TRUE) # nebst = 1表示只输出单变量的最优子集
expres <- summary(exps)
res <- data.frame(expres$outmat, 调整R平方 = expres$adjr2)
knitr::kable(res, caption = "调整R平方")
| aav | iav | cav | pnum | tsrc | da | 调整R平方 | |
|---|---|---|---|---|---|---|---|
| 1 ( 1 ) | * | 0.9908097 | |||||
| 2 ( 1 ) | * | * | 0.9926637 | ||||
| 3 ( 1 ) | * | * | * | 0.9941103 | |||
| 4 ( 1 ) | * | * | * | * | 0.9952353 | ||
| 5 ( 1 ) | * | * | * | * | * | 0.9952205 | |
| 6 ( 1 ) | * | * | * | * | * | * | 0.9951761 |
res <- data.frame(expres$outmat, Cp = expres$cp)
knitr::kable(res, caption = "CP准则")
| aav | iav | cav | pnum | tsrc | da | Cp | |
|---|---|---|---|---|---|---|---|
| 1 ( 1 ) | * | 41.827053 | |||||
| 2 ( 1 ) | * | * | 25.395630 | ||||
| 3 ( 1 ) | * | * | * | 13.279877 | |||
| 4 ( 1 ) | * | * | * | * | 4.496959 | ||
| 5 ( 1 ) | * | * | * | * | * | 5.632324 | |
| 6 ( 1 ) | * | * | * | * | * | * | 7.000000 |
lm_step <- step(lm_m, direction = "both")
## Start: AIC=791.37
## y ~ (year + aav + iav + cav + pnum + tsrc + da) - year
##
## Df Sum of Sq RSS AIC
## - aav 1 16288915 1020944193 790.11
## - da 1 18146177 1022801455 790.19
## <none> 1004655278 791.37
## - pnum 1 113163056 1117818334 794.28
## - iav 1 323149250 1327804528 802.19
## - cav 1 530716300 1535371578 808.88
## - tsrc 1 1252073996 2256729274 826.59
##
## Step: AIC=790.11
## y ~ iav + cav + pnum + tsrc + da
##
## Df Sum of Sq RSS AIC
## - da 1 22273335 1043217528 789.10
## <none> 1020944193 790.11
## + aav 1 16288915 1004655278 791.37
## - pnum 1 127007228 1147951421 793.50
## - cav 1 558299481 1579243674 808.17
## - iav 1 788344583 1809288776 814.43
## - tsrc 1 1277151144 2298095337 825.43
##
## Step: AIC=789.1
## y ~ iav + cav + pnum + tsrc
##
## Df Sum of Sq RSS AIC
## <none> 1043217528 789.10
## + da 1 22273335 1020944193 790.11
## + aav 1 20416073 1022801455 790.19
## - pnum 1 277772181 1320989709 797.96
## - cav 1 635122400 1678339929 808.97
## - iav 1 970339994 2013557522 817.35
## - tsrc 1 1440169027 2483386555 827.00
summary(lm_step)
##
## Call:
## lm(formula = y ~ iav + cav + pnum + tsrc, data = data_frame)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11686.0 -2962.8 -300.7 1879.0 10584.9
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.014e+04 1.341e+04 2.994 0.00466 **
## iav 4.130e-01 6.688e-02 6.175 2.44e-07 ***
## cav -3.538e+00 7.081e-01 -4.996 1.14e-05 ***
## pnum -4.041e-01 1.223e-01 -3.304 0.00198 **
## tsrc 8.100e-01 1.077e-01 7.523 3.04e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5044 on 41 degrees of freedom
## Multiple R-squared: 0.9957, Adjusted R-squared: 0.9952
## F-statistic: 2351 on 4 and 41 DF, p-value: < 2.2e-16
根据多元线性回归模型的结果,我们可以得出以下结论:
根据提供的回归结果,我们得到了以下回归方程:
y = 40140 + 0.413 * iav - 3.538 * cav - 0.404 * pnum + 0.810 * tsrc
library(car)
vif(lm_step) # 方差扩大因子>10,说明存在多重共线性
## iav cav pnum tsrc
## 122.773342 633.605303 5.274357 454.865127
尝试使用box-cox变换来处理,从结果看,多重共线性的并没有消除
library(MASS)
bc3.2 <- boxcox(y ~ iav + cav + pnum + tsrc, data = data_frame, lambda = seq(-2, 2, 0.01))
summary(bc3.2)
## Length Class Mode
## x 401 -none- numeric
## y 401 -none- numeric
lambda <- bc3.2$x[which.max(bc3.2$y)]
lambda
## [1] -0.4
y_bc <- (data_frame$y^lambda - 1) / lambda
lm3.2_bc <- lm(y_bc ~ iav + cav + pnum + tsrc, data = data_frame)
summary(lm3.2_bc)
##
## Call:
## lm(formula = y_bc ~ iav + cav + pnum + tsrc, data = data_frame)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.006254 -0.001567 0.000422 0.001028 0.006996
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.035e+00 8.068e-03 252.243 < 2e-16 ***
## iav 2.477e-07 4.024e-08 6.156 2.6e-07 ***
## cav -1.426e-06 4.261e-07 -3.347 0.00176 **
## pnum 3.195e-06 7.359e-08 43.412 < 2e-16 ***
## tsrc 3.955e-08 6.478e-08 0.610 0.54495
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.003035 on 41 degrees of freedom
## Multiple R-squared: 0.996, Adjusted R-squared: 0.9956
## F-statistic: 2547 on 4 and 41 DF, p-value: < 2.2e-16
vif(lm3.2_bc)
## iav cav pnum tsrc
## 122.773342 633.605303 5.274357 454.865127
abse <- abs(rstandard(lm_step))
cor.test(data_frame$iav, abse, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: data_frame$iav and abse
## S = 6558, p-value = 1.876e-05
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.5955597
cor.test(data_frame$cav, abse, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: data_frame$cav and abse
## S = 6562, p-value = 1.894e-05
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.595313
cor.test(data_frame$pnum, abse, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: data_frame$pnum and abse
## S = 6548, p-value = 1.831e-05
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.5961764
cor.test(data_frame$tsrc, abse, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: data_frame$tsrc and abse
## S = 6610, p-value = 2.122e-05
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.5923528
这些变量都具有一致的异方差性,使用对数变换来尝试消除异方差性。
lm_step2 <- lm(log(y) ~ iav + cav + pnum + tsrc, data = data_frame)
summary(lm_step2)
##
## Call:
## lm(formula = log(y) ~ iav + cav + pnum + tsrc, data = data_frame)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.47870 -0.10694 0.03154 0.08516 0.63707
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -2.452e-01 4.998e-01 -0.491 0.626353
## iav 2.241e-05 2.492e-06 8.990 3.03e-11 ***
## cav -1.588e-04 2.639e-05 -6.018 4.08e-07 ***
## pnum 7.230e-05 4.558e-06 15.862 < 2e-16 ***
## tsrc 1.539e-05 4.013e-06 3.835 0.000425 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.188 on 41 degrees of freedom
## Multiple R-squared: 0.9908, Adjusted R-squared: 0.9899
## F-statistic: 1105 on 4 and 41 DF, p-value: < 2.2e-16
显著性由很明显的提高,然后检验异方差性
abse <- abs(rstandard(lm_step2))
cor.test(data_frame$iav, abse, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: data_frame$iav and abse
## S = 13846, p-value = 0.3315
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.1460993
cor.test(data_frame$cav, abse, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: data_frame$cav and abse
## S = 13854, p-value = 0.3331
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.1456059
cor.test(data_frame$pnum, abse, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: data_frame$pnum and abse
## S = 13814, p-value = 0.325
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.1480728
cor.test(data_frame$tsrc, abse, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: data_frame$tsrc and abse
## S = 13866, p-value = 0.3356
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.1448659
异方差性已经消除,因此可以认为该模型是有效的。
library(lmtest)
dwtest(lm_step2, alternative = "two.sided")
##
## Durbin-Watson test
##
## data: lm_step2
## DW = 1.1149, p-value = 0.0001341
## alternative hypothesis: true autocorrelation is not 0
接近0还是存在自相关性。
使用主成分分析来尝试解决多重共线性问题。
com1 <- prcomp(data_frame[, -c(1, ncol(data_frame))], center = TRUE, scale. = TRUE)
summary(com1)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6
## Standard deviation 2.3284 0.68861 0.30428 0.09503 0.04528 0.02698
## Proportion of Variance 0.9036 0.07903 0.01543 0.00151 0.00034 0.00012
## Cumulative Proportion 0.9036 0.98260 0.99803 0.99954 0.99988 1.00000
# 查看主成分载荷(即旋转后的系数)
knitr::kable(com1$rotation, caption = "主成分载荷")
| PC1 | PC2 | PC3 | PC4 | PC5 | PC6 | |
|---|---|---|---|---|---|---|
| aav | 0.4278204 | -0.0736293 | 0.1543286 | 0.4503279 | 0.7189035 | 0.2609859 |
| iav | 0.4278084 | 0.0014473 | 0.2027416 | 0.5833026 | -0.6599580 | -0.0093445 |
| cav | 0.4257717 | 0.0959679 | 0.3540469 | -0.2905008 | 0.1390044 | -0.7618704 |
| pnum | 0.3580190 | -0.7718343 | -0.4915463 | -0.1585524 | -0.0596769 | -0.0760013 |
| tsrc | 0.4262403 | 0.0755326 | 0.3099598 | -0.5887409 | -0.1569869 | 0.5876038 |
| da | -0.3779017 | -0.6196236 | 0.6870491 | 0.0285902 | -0.0102393 | 0.0172666 |
重新计算VIF值
pc_scores <- com1$x # 主成分得分
pc_data <- as.data.frame(pc_scores[, 1:2])
y <- data_frame$y
model_pcr <- lm(y ~ PC1 + PC2, data = pc_data)
summary(model_pcr)
##
## Call:
## lm(formula = y ~ PC1 + PC2, data = pc_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -17600.3 -6617.2 171.1 6366.4 16244.2
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 58027.4 1230.1 47.173 < 2e-16 ***
## PC1 31155.6 534.1 58.328 < 2e-16 ***
## PC2 4874.1 1806.1 2.699 0.00991 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 8343 on 43 degrees of freedom
## Multiple R-squared: 0.9875, Adjusted R-squared: 0.987
## F-statistic: 1705 on 2 and 43 DF, p-value: < 2.2e-16
vif(model_pcr)
## PC1 PC2
## 1 1
可以看出多重共线性已经消除,并且可以看到主成分因子1贡献最大,占了绝大多数的方差,因此可以认为主成分因子1已经包含了大部分信息。查看主成分的载荷,可以认为除了受灾面积其他对于国家财政收入均具有正向作用。
abse <- abs(rstandard(model_pcr))
cor.test(pc_data$PC1, abse, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: pc_data$PC1 and abse
## S = 12830, p-value = 0.1634
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.2087573
cor.test(pc_data$PC2, abse, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: pc_data$PC2 and abse
## S = 12294, p-value = 0.1054
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.2418131
library(lmtest)
dwtest(model_pcr, alternative = "two.sided")
##
## Durbin-Watson test
##
## data: model_pcr
## DW = 1.0283, p-value = 0.0001048
## alternative hypothesis: true autocorrelation is not 0
综合以上分析结果,我们可以从以下几个方面进行解读:
这是一个多元线性回归模型,因变量是财政收入
y
的对数形式,自变量包括:工业增加值(iav)、建筑业增加值(cav)、人口数(pnum)和社会零售消费总额(tsrc)。
回归模型表达式为:
\[ \log(y) = -0.2452 + 2.241 \times 10^{-5} \cdot iav - 1.588 \times 10^{-4} \cdot cav + 7.230 \times 10^{-5} \cdot pnum + 1.539 \times 10^{-5} \cdot tsrc + \varepsilon \]
其中: - \(y\):财政收入(亿元) - \(iav\):工业增加值(亿元) - \(cav\):建筑业增加值(亿元) - \(pnum\):人口数(万人) - \(tsrc\):社会零售消费总额(亿元) - \(\varepsilon\):误差项
由于因变量是 \(\log(y)\),因此系数的解释应基于百分比变化:
| 变量 | 系数估计值 | 解释(每单位增加的影响) |
|---|---|---|
iav |
2.241e-05 | 工业增加值每增加1亿元,财政收入平均增长约 0.002241% |
cav |
-1.588e-04 | 建筑业增加值每增加1亿元,财政收入平均下降约 0.01588% |
pnum |
7.230e-05 | 人口每增加1万人,财政收入平均增长约 0.00723% |
tsrc |
1.539e-05 | 社会零售消费总额每增加1亿元,财政收入平均增长约 0.001539% |
所有自变量在 0.05 水平上均显著,尤其是:
iav(工业增加值):t = 8.99, p <
0.001cav(建筑业增加值):t = -6.02, p <
0.001pnum(人口数):t = 15.86, p <
0.001tsrc(社会零售消费总额):t = 3.84, p
= 0.0004这表明它们对财政收入具有统计意义上的显著影响。
残差分布基本对称,没有极端偏移。
| 自变量 | 影响 | 说明 |
|---|---|---|
iav |
正 | 工业发展通常带动税收增长 |
cav |
负 | 建筑业对财政贡献可能受政策或成本影响 |
pnum |
正 | 人口多意味着税源广 |
tsrc |
正 | 消费活跃带来增值税等税收增长 |
本研究采用多元线性回归方法,建立财政收入 \(\log(y)\) 与工业增加值(iav)、建筑业增加值(cav)、人口数(pnum)和社会零售消费总额(tsrc)之间的关系模型。结果显示,模型具有高度显著性(F = 1105, p < 0.001),并能解释财政收入 99.08% 的变异。其中,工业增加值、人口数量和社会零售总额对财政收入具有显著正向作用,而建筑业增加值呈显著负相关。该结果提示,在制定财政政策时应重点关注工业和消费领域的发展,同时关注建筑业对财政的潜在影响。