楼主: ywh19860616
19057 101

[问答] R程序改写为matlab程序 [推广有奖]

31
epoh 发表于 2012-5-11 09:03:22
ywh19860616 发表于 2012-5-10 23:18
epoh老师,就是distance_wm函数的返回结果的results.W
%          results.dista = (n x n) matrix of  ...
standardized weight matrix
可以 Wij=normw(result.dw)
也可以 Wij=full(result.W)
Wij =

         0    1.0000         0         0         0         0         0         0
    0.3333         0    0.3333         0         0         0    0.3333         0
         0    0.5000         0    0.5000         0         0         0         0
         0         0    0.5000         0    0.5000         0         0         0
         0         0         0    0.5000         0         0    0.5000         0
         0         0         0         0         0         0         0    1.0000
         0    0.3333         0         0    0.3333         0         0    0.3333
         0         0         0         0         0    0.5000    0.5000         0

ZZmat的每行都分别找出一个最大值及其对应位置

ZZmat =

   10.5321   13.1748   14.1048   14.1081   13.5731   12.7366   11.7508   10.7131    9.6844
    7.0585    8.2455    8.2969    7.8566    7.2101    6.5026    5.8074    5.2754    4.7729
   14.8975   18.3559   19.4375   19.3021   18.4963   17.3349   16.0100   14.6396   13.2945
   16.2223   19.8581   20.8892   20.6055   19.6146   18.2636   16.7615   15.2342   13.7550
   13.6478   16.6916   17.5135   17.2049   16.2868   15.0609   13.7105   12.3468   11.0344
   13.8836   16.9895   17.8799   17.6583   16.8396   15.7157   14.4612   13.1810   11.9363
    7.5528    8.9430    9.1190    8.7473    8.1289    7.4203    6.7042    6.0220    5.3923
   10.1812   13.0251   14.2785   14.6337   14.4292   13.8759   13.1149   12.2428   11.3248

Indexmat=zeros(n1,3)
for i =1:n1
Indexmat(i,1)=i;
index=find(ZZmat(i,:)==max(ZZmat(i,:)));
Indexmat(i,2)=ZZmat(i,index);
Indexmat(i,3)=index;
end
Indexmat
Indexmat =

    1.0000   14.1081    4.0000
    2.0000    8.2969    3.0000
    3.0000   19.4375    3.0000
    4.0000   20.8892    3.0000
    5.0000   17.5135    3.0000
    6.0000   17.8799    3.0000
    7.0000    9.1190    3.0000
    8.0000   14.6337    4.0000


已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ywh19860616 + 5 + 5 + 5 epoh老师,早上好,谢谢

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

32
ywh19860616 发表于 2012-5-11 09:16:16
epoh 发表于 2012-5-11 09:03
standardized weight matrix
可以 Wij=normw(result.dw)
也可以 Wij=full(result.W)
epoh老师,如何根据indexmat取出对应的WW?
计算类比于您之前的程序:
index=find(ZZmat==max(ZZmat))
WW;
WW(:,:,index)

一份耕耘,一份收获。

33
epoh 发表于 2012-5-11 09:54:50
ywh19860616 发表于 2012-5-11 09:16
epoh老师,如何根据indexmat取出对应的WW?
计算类比于您之前的程序:
index=find(ZZmat==max(ZZmat))
...
index   1              2              3             4             5             6              7            8          9
ZZmat =
   10.5321   13.1748   14.1048   14.1081   13.5731   12.7366   11.7508   10.7131    9.6844
    7.0585      8.2455    8.2969    7.8566    7.2101    6.5026    5.8074    5.2754    4.7729
   14.8975   18.3559   19.4375   19.3021   18.4963   17.3349   16.0100   14.6396   13.2945
   16.2223   19.8581   20.8892   20.6055   19.6146   18.2636   16.7615   15.2342   13.7550
   13.6478   16.6916   17.5135   17.2049   16.2868   15.0609   13.7105   12.3468   11.0344
   13.8836   16.9895   17.8799   17.6583   16.8396   15.7157   14.4612   13.1810   11.9363
    7.5528      8.9430    9.1190    8.7473    8.1289    7.4203    6.7042    6.0220    5.3923
   10.1812   13.0251   14.2785   14.6337   14.4292   13.8759   13.1149   12.2428   11.3248

以 20.8892  而言,index=3,row=4
w=WW(:,:,3)

w =

         0    0.4530    0.2444    0.1432    0.1527    0.3324    0.2740    0.3953
    0.4530         0    0.5379    0.3161    0.3075    0.2222    0.4610    0.4163
    0.2444    0.5379         0    0.5821    0.4299    0.1313    0.4198    0.2716
    0.1432    0.3161    0.5821         0    0.4809    0.0853    0.3204    0.1824
    0.1527    0.3075    0.4299    0.4809         0    0.1288    0.5099    0.2729
    0.3324    0.2222    0.1313    0.0853    0.1288         0    0.2501    0.4646
    0.2740    0.4610    0.4198    0.3204    0.5099    0.2501         0    0.5343
    0.3953    0.4163    0.2716    0.1824    0.2729    0.4646    0.5343         0

[GGI,ZZG,ZZ]=Getis1(w,Xij(4,:));

ZZ =

   20.8892
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ywh19860616 + 5 + 5 + 5 谢谢epoh老师

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

34
ywh19860616 发表于 2012-5-11 10:52:34
epoh 发表于 2012-5-11 09:54
index   1              2              3             4             5             6              7 ...
谢谢epoh老师,您帮我看看这组数据运行出来,结果怎么那么规则?ZZmat都是取index=1.
matlabgdp.rar (4.69 KB) 本附件包括:
  • matlabgdp.xls



一份耕耘,一份收获。

35
epoh 发表于 2012-5-11 13:35:43
ywh19860616 发表于 2012-5-11 10:52
谢谢epoh老师,您帮我看看这组数据运行出来,结果怎么那么规则?ZZmat都是取index=1.
k=0.001:0.0001:0.01;

Indexmat =

    1.0000  274.6621    9.0000
    2.0000  271.1349   11.0000
    3.0000  282.2235   10.0000
    4.0000  294.7052   10.0000
    5.0000  301.2425   10.0000
    6.0000  311.9920   10.0000
    7.0000  313.2310   10.0000
    8.0000  314.0864   10.0000
    9.0000  316.2142   10.0000
   10.0000  320.7848   10.0000
   11.0000  323.7873   10.0000
   12.0000  327.2808   10.0000
   13.0000  330.9869   10.0000
   14.0000  336.4303   10.0000
   15.0000  341.2426   10.0000
   16.0000  347.1257   10.0000
   17.0000  348.0858   10.0000
   18.0000  346.6951    9.0000
   19.0000  343.6775    9.0000
   20.0000  341.8841    9.0000
   21.0000  337.0383    9.0000
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ywh19860616 + 5 + 5 + 5 谢谢

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

36
ywh19860616 发表于 2012-5-11 14:08:30
epoh 发表于 2012-5-11 13:35
k=0.001:0.0001:0.01;

Indexmat =
恩,我试下了,的确会因为k取值点不同,结论出来很大不同。
哈哈,epoh老师,文献上说k取值是0 到 无穷大,这样的话,那运行就有困难了。尝试了几组,如果k小于1,一般运行都没有问题,但是k=0.01:0.01:2.01,就会出现错误:

Warning: Divide by zero.
> In Getis_revised at 68
  In epohone at 28


一份耕耘,一份收获。

37
epoh 发表于 2012-5-11 16:06:35
ywh19860616 发表于 2012-5-11 14:08
恩,我试下了,的确会因为k取值点不同,结论出来很大不同。
哈哈,epoh老师,文献上说k取值是0 到 无穷大 ...
这两天我仔细再看一下文献
的确感觉有点怪
程序我再对照文献一遍

38
epoh 发表于 2012-5-12 15:47:35
ywh19860616 发表于 2012-5-11 14:08
恩,我试下了,的确会因为k取值点不同,结论出来很大不同。
哈哈,epoh老师,文献上说k取值是0 到 无穷大 ...
哈哈,14 楼你给的公式应该有误
dista = GeogDistance(yc,xc);
for nn=1:28
     Wij=exp(-nn*dista);
end

Spatial Filtering with EViews and MATLAB.pdf
PAGE 2/10,

Wij = exp(-k*d(ij))
      %where dij is FRACTIONAL distance with dij = 1
      %for the maximum pairwise distance
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ywh19860616 + 5 + 5 + 5 epoh老师,谢谢您,文献已经上传在40楼

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

39
ywh19860616 发表于 2012-5-12 16:00:33
epoh 发表于 2012-5-12 15:47
哈哈,14 楼你给的公式应该有误
dista = GeogDistance(yc,xc);
for nn=1:28
epoh老师,两篇主要参考文献上传了,14楼公式我好想就是安装Badinger-Regional convergence in the European Union一文的
3.1 Spatial Filtering  公式(3.4)
Getis1里面计算公式主要来自第二篇文献The Analysis of Spatial Association by Use of Distance Statistics。
请您帮忙看看。


一份耕耘,一份收获。

40
ywh19860616 发表于 2012-5-12 16:19:01
Badinger-Regional convergence in the European Union.pdf (85.09 KB)
epoh老师,已经上传文献。
一份耕耘,一份收获。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 14:19