使用的环境污染指标都是排放量指标,包括工业二氧化硫排放量、工业烟粉尘排放量、工业氮氧化物排放量等,
在想会不会是因为直辖市排放量数据明显低于各省指标造成的,如果使用排放强度/密度(即用排放量除以产值或人口数量)会不会好一些,但是在查阅文献的过程中,并没有看到过这么做的(如果有,希望可以分享一下文献)
代码如下:
qui sum Year
global min_Year=r(min)
global max_Year=r(max)
forvalues Year=$min_Year / $max_Year{
use Pollution.dta, clear
keep if Year==`Year'
*标准化数据 正向指标 这一步生成x_x1 x_x2等
foreach i in $negative_var {
qui sum `i'
gen x_`i'=(`i'-r(min))/(r(max)-r(min))
replace x_`i'=0.00001 if x_`i'==0
}
*计算各指标的比重 这一步生成x1_sum x2_sum等,y_x1 y_x2等
foreach i in $negative_var {
egen `i'_sum=sum(x_`i')
gen y_`i'=x_`i'/`i'_sum
}
*根据比重计算各分量的信息熵 这一步生成y_lny_x1
gen n=_N
foreach i in $negative_var {
gen y_lny_`i'=y_`i'*ln(y_`i')
}
*求和 这一步生成y_lny_x1_sum
foreach i in $negative_var {
egen y_lny_`i'_sum=sum(y_lny_`i')
}
*计算各指标的贡献总量 这一步生成E_x1
foreach i in $negative_var {
gen E_`i'= -1/ln(n)*y_lny_`i'_sum
}
*计算各指标权重 这一步生成d_x1 d_sum W_x1权重
foreach i in $negative_var {
gen d_`i'= 1-E_`i'
}
egen d_sum = rowtotal(d_*)
foreach i in $negative_var {
gen W_`i'= d_`i'/d_sum
}
*计算综合得分 这一步生成Score_x1
foreach i in $negative_var {
gen Score_`i'= x_`i'*W_`i'
}
egen Score=rowtotal(Score_*)
keep ID Year Province $negative_var W_* Score
save data_`Year', replace
}
clear
forvalues i= $min_Year / $max_Year {
append using data_`i'
rm data_`i'.dta
}
得到的结果如下:
![截屏2024-05-05 17.04.10.png 截屏2024-05-05 17.04.10.png](https://bbs-cdn.datacourse.cn/static/image/common/none.gif)