全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
3733 2
2017-04-09
悬赏 100 个论坛币 已解决
我现在已知各省农村和城镇的人均收入x1 x2 x3 x4...和各省农村和城镇的人口数N1 N2 N3... 想用高斯核密度方法求基尼系数,我用matlab求,可怎么也求不出来,按照核估计的方法,窗宽值我已经确定 用matlab也把图形都画出来了,可怎么也不会求基尼系数和泰尔指数,我是利用这个连续分布函数的方法去求的,其中G就是基尼系数,I就是泰尔指数,高斯核密度函数的积分只能用int(w1*gaussmf(x[x1 h])+w2*gaussmf(x[x2 h])+...wn*gaussmf(x[xn h])表示,就是因为没有具体表达式,这个地方还要对1-F(x)的平方进行积分,用了matlab求不出来啊,原本以为泰尔指数好求,只要对x*f(x)和log(x)*f(x)进行积分就好,但是matlab竟然求不出log(x)*f(x),我的命令时syms x....... Y=f(x)*log(x);int(Y,x,0,1200000)可返回的结果还是一个关于x的表达式,而且非常非常长,所以求各位大神告诉我错在哪里,怎么求基尼系数和泰尔指数, 基尼系数和泰尔指数表达式 具体matlab命令时什么,感激不尽!!!

最佳答案

幻月黄昏 查看完整内容

泰尔指数脚本: function [Tb,Tw,T,z,Db,Dw]=TbTw(x,n) %函数TbTw()计算泰尔指数分解 %返回Tb为组间差距, Tw为组内差距, z为各个组内差距, %返回T为泰尔指数, Db为组间贡献率, Dw为各个组内贡献率 %泰尔指数T=Tb+Tw %x为N个个体的收入向量, 依次分为K个分组, n=[n1,...,nK]为各分组的个体数向量, sum(n)=N K=length(n); s=[0,cumsum(n)]; for k=1:K X{k}=x(s(k)+1:s(k+1))./sum(x); %X{k}为第k个分组的nk个个体的 ...
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-4-9 20:23:58
泰尔指数脚本:
function [Tb,Tw,T,z,Db,Dw]=TbTw(x,n)
%函数TbTw()计算泰尔指数分解
%返回Tb为组间差距, Tw为组内差距, z为各个组内差距,
%返回T为泰尔指数, Db为组间贡献率, Dw为各个组内贡献率
%泰尔指数T=Tb+Tw
%x为N个个体的收入向量, 依次分为K个分组, n=[n1,...,nK]为各分组的个体数向量, sum(n)=N  
K=length(n);
s=[0,cumsum(n)];
for k=1:K
    X{k}=x(s(k)+1:s(k+1))./sum(x); %X{k}为第k个分组的nk个个体的收入份额(占总收入的比例)
    y(k)=sum(X{k}); %y(k)为第k组的收入份额(占总收入的比例)
end
Tb=sum(y.*log(y./(n./length(x)))); %组间差距
for k=1:K
    z(k)=sum((X{k}./y(k)).*log(n(k)*X{k}./y(k))); %第k组的组内差距
end
Tw=sum(y.*z); %总的组内差距为各分组组内差距的加权和
T=Tb+Tw;      %泰尔指数
Db=Tb/T;      %组间贡献率
Dw=y.*z/T;    %各分组内的组内贡献率

主程序:
举例:
x=[10 10 8 8 8 8 6 6 6 6 6 6 4 4 4 4 2 2];

%每个个体的收入(万美元)

n=[2 4 6 4 2]; %各分组的个体数

[Tb,Tw,T,z,Db,Dw]=TbTw(x,n)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-7-18 19:44:12
请问你知道怎么计算了吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群