全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 经管百科 爱问频道
4209 4
2019-03-25
悬赏 500 个论坛币 未解决
求教各位,本人研一小硕士一名,正在用MATLAB测度产业集聚DO指数,方法参考袁海红等的《产业集聚的测度及其动态变化—基于北京企业微观数据的研究》,duranton和overman的《Exploring the Detailed Location Patterns of UK Manufacturing Industries Using Microgeographic Data》,分为三个步骤(1)K-density函数(2)局部置信区间(3)全局置信区间。目前,我在进行第二步通过蒙特卡洛模拟来建立置信区间时,用命令randperm生成了随机数向量y,数据的顺序每次都发生了变化,但是每次后面模拟计算出的距离密度矩阵o,每一列与第一步一致(模拟100次,100列的结果完全一致),导致后续置信限up、down全部为0,求问为何出现这个问题,如何解决,感谢各位大神,附上我的数据、参考文献,代码如下,欢迎大家批评指正,帮助解决者小弟必有重谢:
%% DO指数
%输入矩阵b:Lats
%输出DO指数
function k=do1(b)
d=linspace(0,10,1000)';
k=linspace(0,0,1000)';
h=1; %选取
x=find(b(:,3)>0)';
n=size(b,1);
function k=gauss(d,k,h,n,b,x)
   for i=1:(n-1)
      for j=(i+1):n
        if d-distance(b,x(i),x(j))>0
            k=k+exp(-(d-distance(b,x(i),x(j))).^2./(2*h^2));
        else
        k=k+exp(-(distance(b,x(i),x(j))-d).^2./(2*h^2));
        end
      end
    end
  k=2*k./(n*(n-1)*h);
end
k=gauss(d,k,h,n,b,x);
plot(d,k,'LineWidth',2);
function [up,down]=Monte_Carlo(d,n,h,b)
   for i=1:100  %模拟100次
      m=linspace(0,0,1000)';
      y=randperm(length(b(:,1)),n)';
      o(:,i)=gauss(d,m,h,n,b,y);
   end
      up=quantile(o,0.95,2);
      down=quantile(o,0.05,2);
end
[up,down]=Monte_Carlo(d,n,h,b);
plot(d,up,'--','LineWidth',2)
plot(d,down,'--','LineWidth',2);
a=linspace(0,0,500)';
c=linspace(0,0,500)';
if k-up>0
a=k-up; %集聚指数
end
fprintf('the value of a is%6.2f\n',a);
if down-k>0
c=down-k; %分散指数
end
fprintf('the value of c is%6.2f\n',c);






经纬度1000.xlsx
大小:(30.44 KB)

 马上下载




二维码

扫码加我 拉你入群

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

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

全部回复
2019-5-13 20:49:44
楼主后来成功了吗
二维码

扫码加我 拉你入群

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

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

2019-5-16 12:05:32
同问,成功了吗
二维码

扫码加我 拉你入群

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

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

2019-7-24 17:32:10
我试了一下,应该只是程序分段和变量存储的问题,o矩阵只存了第一次的结果,所以模拟的100次结果都被填入了第一次的值
二维码

扫码加我 拉你入群

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

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

2022-2-26 14:11:55
请问 输入矩阵b:Lats 这个矩阵里应该有哪些变量呀
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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