价格一体化指数计算

admin / 博文 / ... / Reads: 2132

1 问题描述

为了研究我国各地区之间的商品价格是否一致,这里收集了我国29个地区9类商品2013年至2019年的价格指数。据此来计算2013年至2019年各地区的价格一体化指数。原始数据存放在Excel中,包含7个Sheet表,形式如下:

bw-47

2 价格一体化计算方法

第一步:计算出各省份间各类商品相对价格的绝对值|Q_ijt^k |,其中k代表第k种商品,t表示第t年,P_it^k表示i省第t年第k种商品的价格指数。计算方式如下:

    |Q_ijt^k |=|P_it^k-P_jt^t |	

第二步:对|Q_ijt^k |作去均值化处理,以消除特定商品种类相联系的固定效应所带来的系统偏误,其中|Q_t^k |表示第t年第k种商品相对价格的均值。具体处理方式为:

    q_ijt^k=|Q_ijt^k |-|Q_t^k |	
    
第三步:计算各省份间各种商品相对价格波动的方差即为t年i、j两省之间的价格一体化指数,计算公式如下:

    priceindex_ijt=Var(q_ijt^k )=Var(|Q_ijt^k |-|Q_t^k |) 

需要注意的是目前文献中对价格一体化的计算有两种处理方式,一种是只计算与相邻省份的价格一致性,一种是计算与所有其余省份的价格一致性。

3 价格一体化计算代码

3.1 与其余所有省份的价格一体化指数

install.packages("readxl")
library(readxl)

priceindex=c()
provname=read_excel("C:/Desktop/price.xlsx",sheet="2013")[,1]

for(num in 2013:2019){

  sheetname=as.character(num)
  df1=read_excel("C:/Users/tity/Desktop/price.xlsx",sheet=sheetname)
  df2=df1[,2:ncol(df1)]

  data <- as.matrix(df2)

  matrix_i=rep(1,29)%x%diag(29) 

  matrix_c=diag(29) %x% rep(1,29)

  lni=matrix_c%*%data
  lnj=matrix_i%*%data

  Q=abs(log(lni)-log(lnj))

  deltQ=colMeans(Q)*841/812

  deltQ_matrix=matrix(data=rep(deltQ,841),nrow=841,ncol=9,byrow = TRUE)

  qijk=Q-deltQ_matrix

  allvar=apply(qijk,1,var)

  var_matrix=matrix(data=allvar,nrow=29,ncol=29)

  var_matrix=var_matrix-diag(diag(var_matrix))

  price=colMeans(var_matrix)*29/28

  priceindex=c(priceindex,price)

}

pi=as.data.frame(matrix(data=priceindex, nr=29, nc=7))

result=data.frame(provname,pi)
colnames(result)=c('prov','2013年','2014年','2015年','2016年','2017年','2018年','2019年')


write.csv(result,file = "C:/Desktop/priceindex.csv",row.names = FALSE,fileEncoding = "gbk")

这里采用矩阵的思想来进行的计算,计算结果会保存在名为priceindex.csv的文件中,如下所示。当然,如果发现结果有误,欢迎指正!

bw-48

3.2 与相邻省份的价格一体化指数

相邻省份计算稍微麻烦一点,需要省份之间是否相邻的信息,这里我们已经获取了省份的邻接矩阵,保存在名为w.xlsx文件中。

计算代码如下:

library(readxl)

priceindex=c()
provname=read_excel("C:/Users/tity/Desktop/price.xlsx",sheet="2013")[,1]
w=as.matrix(read_excel("C:/Users/tity/Desktop/w.xlsx",col_names =FALSE, sheet="Sheet2"))
sumw=colMeans(w)*29
for(num in 2013:2019){

  sheetname=as.character(num)
  df1=read_excel("C:/Users/tity/Desktop/price.xlsx",sheet=sheetname)
  df2=df1[,2:ncol(df1)]

  data <- as.matrix(df2)/100

  matrix_i=rep(1,29)%x%diag(29) 

  matrix_c=diag(29) %x% rep(1,29)

  lni=matrix_c%*%data
  lnj=matrix_i%*%data

  Q=abs(log(lni)-log(lnj))

  ww=matrix(data=w)

  deltQ=t(ww)%*%Q/(colMeans(ww)*841)

  deltQ_matrix=matrix(data=rep(deltQ,841),nrow=841,ncol=9,byrow = TRUE)

  qijk=Q-deltQ_matrix

  allvar=apply(qijk,1,var)

  var_matrix=matrix(data=allvar,nrow=29,ncol=29)

  rst= w%*%var_matrix

  temp=(diag(rst))


  priceindex=c(priceindex,temp/sumw)

}

pi=as.data.frame(matrix(data=priceindex, nr=29, nc=7))

result11=data.frame(provname,pi)
colnames(result11)=c('prov','2013年','2014年','2015年','2016年','2017年','2018年','2019年')

write.csv(result11,file = "C:/Users/tity/Desktop/priceinde2.csv",row.names = FALSE,fileEncoding = "gbk")

计算结果会保存在名为priceindex2.csv的文件中,如下所示。当然,如果发现结果有误,欢迎指正!

bw-49



获取案例数据,请关注微信公众号并回复:bw_dt7

Comments

Make a comment

Author: admin

Publish at: ...

关注公众号: