NO.46------用python做金融分析(求解泰尔指数)

              相关理论

         泰尔指数(Theil,1967)(也有人译为“泰尔系数”,但我倾向于“泰尔指数”)是分析区域收入水平差异的一个重要工具,而区域差距又是一个重要的热点话题,所以,泰尔指数频繁出现在学术文献中,成为分析区域差异不可或缺的一个工具。

                然而,在许多相关文献中,往往只是给出了这个公式,且许多公式有错误,并且没有给出对公式的解释,也没有给出计算过程,而只给出计算出来的泰尔指数结果。这对于想要学习泰尔指数的人来说非常不便。

             学金融的同学近期在搞毕业论文,让我帮忙做数据分析,过程中加深了对泰尔指数的理解,同时用python进行实现。

泰尔指数用来衡量一个国家地区间的收入差异(或其它差异),代数公式:

             

T是泰尔指数,Ii是第i个地区的收入,I是总收入,Pi是地区i的人口,P是总人口。

            文字公式:各地区的收入份额与人口份额之比的对数的加权和,权数为收入份额。

            公式理解:泰尔指数大于等于0,越小差异越小。

           如果收入份额与人口份额相等,则对数中的真数(即份额比)为1,则对数值为0,泰尔指数也就为0,表明地区之间没有任何差异。

           如果份额比大于1,表明该地区发达,相应的对数值大于0;如果份额比小于1,表明该地区落后,相应的对数值小于0。

        代码实现

# -*- coding: utf-8 -*-
"""
Created on Tue Wes 29 21:53:47 2019

@author: slash
"""
 
 
import pandas as pd
import numpy as np
import math
import xlrd
from xlwt import *
import matplotlib.pyplot as plt
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
# Unicode minus
matplotlib.rcParams['axes.unicode_minus'] = False


def Theil(number,GDP):
    T = 0
    _sum_GDP = 0
    _sum_number = 0
    for i in range(len(number)):
        _sum_GDP += GDP[i] 
        _sum_number += number[i]

    for i in range(len(number)):
        w = GDP[i]/_sum_GDP    #收入权重
        e = number[i]/_sum_number   #人口权重
        T += w * math.log(w/e) 
    return T  #返回泰指数
            
if __name__ == '__main__':
    data = xlrd.open_workbook('people_2.xlsx')
    table = data.sheets()[0]
    
    #提取人口数   
    start_1=2  #开始的行
    end_1=18  #结束的行 
    number=[]
    for x in range(start_1,end_1):
        values=[]
        row =table.row_values(x)
        for i in range(1,11):
            values.append(row[i])
        number.append(values)
    #提取GDP
    start_2=19  #开始的行
    end_2=35  #结束的行
    GDP=[]
    for x in range(start_2,end_2):
        values=[]
        row =table.row_values(x)
        for i in range(1,11):
            values.append(row[i])
        GDP.append(values)
    
    #带入函数计算
    year = 16
    result=[]  #定义存放最终结果的列表
    for i in range(year):
        Theil(number[i],GDP[i])
        result.append(Theil(number[i],GDP[i]))
    
   
    #画图
    #x= ['思茅区','宁洱哈尼族彝族自治县','墨江县','景东县','景谷县','镇阮县','江城县','澜沧县','孟连县','西蒙县']
    
    x=[2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016]
    plt.figure(figsize=(8,4))
    plt.plot(x, result, label='linear',color="red",linewidth=2)
    plt.xlabel("年份")
    plt.ylabel("泰尔指数")
    plt.title("泰尔指数")
    plt.legend()
    plt.show()
    











       数据是同学提供的,是普洱市各县级区域从2001年到2016年的GDP和人口数据:

 

       结果

            从图像看,泰尔指数从2013年之后变化显著,说明各县市发展趋于不平衡,查阅政策,跟2013年政府大量资金扶持思茅区有关,可以这样解释。 

  • 11
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值