楼主: ywh19860616
19172 101

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

61
ywh19860616 发表于 2012-5-15 14:29:47
epoh 发表于 2012-5-15 14:22
Indexmat =

    1.0000  274.6958    3.9000   19.0000
epoh老师,这对于您前面是可行的,但是这样似乎不可行。
其实运行结果最后出来的WW矩阵为29*29*41,这里应该是对应最后一个变量得到的41个矩阵。
验证好像也通不过:
Xij=xlsread('E:\youwanhai-software\New\Getis\matlabgdp.xls');
data1=Xij(1,:);
W=WW(:,:,19)
[Xij_bar,GI,ZG,ZZ]=Getis_revised(W,data1);


ZZ =

   86.2954


这里并不与
    1.0000 274.6958    3.9000   19.0000
相等。

不知道可理解正确?
一份耕耘,一份收获。

62
epoh 发表于 2012-5-15 15:21:40
ywh19860616 发表于 2012-5-15 14:29
epoh老师,这对于您前面是可行的,但是这样似乎不可行。
其实运行结果最后出来的WW矩阵为29*29*41,这里应 ...
不请楚你的ZZ = 86.2954是怎么算的
延用48楼结果说明:
Indexmat =

    1.0000  274.6959   92.0000
    2.0000  271.1351  146.0000
    3.0000  282.2302  119.0000
    4.0000  294.7071  121.0000

274.6959是这样得来的
也就是max(ZZmat(1,:))=ZZmat(1,92)

k=3:0.01:5;
k=3.91  % s=92
w92=WW(:,:,92)
ZZcfrm=zeros(n1,1);
for p = 1:n1
     [GGI,ZZG,ZZ]=Getis1(w92,Xij(p,:));
     ZZcfrm(p,1)=ZZ;     
   end % end p
ZZcfrm

  274.6959
  270.5487
  281.9495
  294.3711
  300.6167
  311.3500
  312.9155
  313.7616
  315.8861
  320.4374
  323.3554
  326.8118
  330.5298
  335.9608
  340.7885
  346.7261
  347.7216
  346.6318
  343.6299
  341.8789
  337.0366
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ywh19860616 + 5 + 5 + 5 非常感谢您

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

63
ywh19860616 发表于 2012-5-15 16:04:07
epoh 发表于 2012-5-15 15:21
不请楚你的ZZ = 86.2954是怎么算的
延用48楼结果说明:
Indexmat =
epoh老师,抱歉,呵呵。
其实61楼的想法是这样的:根据程序运行,对于Xij的第一行数据,其运算得到第19个值(k=3:0.05:5;若k=3:0.01:5,应该是您算出的92)对应的ZZ值是最大的,因此,我想取出对应的权重矩阵WW,按照您说的应该是WW(:,:,19).那么按照道理,我利用这个矩阵WW(:,:,19)和Xij的第一行数据代入原来的Getis1(Wij,Xij)函数中得出的ZZ值也肯定是和indexmat的第一行相等,即为274.6959。而我验证结果却不会,呵呵,不知道我哪步想错了。

Xij=xlsread('E:\youwanhai-software\New\Getis\matlabgdp.xls');
data1=Xij(1,:);
W=WW(:,:,19)
[Xij_bar,GI,ZG,ZZ]=Getis_revised(W,data1);
一份耕耘,一份收获。

64
epoh 发表于 2012-5-15 16:18:11
ywh19860616 发表于 2012-5-15 16:04
epoh老师,抱歉,呵呵。
其实61楼的想法是这样的:根据程序运行,对于Xij的第一行数据,其运算得到第19个 ...
%WW(:,:,s)=normw(WWij);
   WW(:,:,s)=WWij;

65
ywh19860616 发表于 2012-5-15 16:34:43
epoh 发表于 2012-5-15 16:18
%WW(:,:,s)=normw(WWij);
   WW(:,:,s)=WWij;
哈哈,epoh老师。那个是我特意在您的程序中修改的。Badinger et al 的Regional convergence in the European Union文中
pages 9/30有这样一句话(附件截图),所以一般进入Getis前,需要先对WW进行row-standardized。而且我验证时都是同步的,即WW要不都未进行标准化,要不都进行标准化。刚才把normw删除了,也是一样得不到
验证。

p1.jpg

一份耕耘,一份收获。

66
epoh 发表于 2012-5-15 17:11:16
ywh19860616 发表于 2012-5-15 16:34
哈哈,epoh老师。那个是我特意在您的程序中修改的。Badinger et al 的Regional convergence in the Europ ...
只要是WW(:,:,s)=WWij;
Getis1,Getis_revised结果都一样

Indexmat =

     1.0000  274.6958    3.9000   19.0000
     2.0000  271.1351    4.4500   30.0000
     3.0000  282.2281    4.2000   25.0000
     4.0000  294.7071    4.2000   25.0000

WW(:,:,s)=WWij;
k=3:0.05:5;;

k=3.9  % s=19
w19=WW(:,:,19)
ZZcfrm=zeros(n1,1);
for p = 1:n1
      [Xij_bar,GGI,ZZG,ZZ]=Getis_revised(w19,Xij(p,:));
      ZZcfrm(p,1)=ZZ;     
    end % end p
ZZcfrm

ZZcfrm =

  274.6958
  270.5437
  281.9275
  294.3465
  300.5823
  311.3228
  312.8908
  313.7366
  315.8609
  320.4114
  323.3264
  326.7815
  330.4998
  335.9301
  340.7580
  346.7105
  347.7064
  346.6194
  343.6193
  341.8733
  337.0315
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ywh19860616 + 5 + 5 + 5 感谢您

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

67
ywh19860616 发表于 2012-5-15 19:13:31
epoh 发表于 2012-5-15 17:11
只要是WW(:,:,s)=WWij;
Getis1,Getis_revised结果都一样
谢谢epoh老师,可能我中间有些步骤理解错了,我再仔细核对下。
一份耕耘,一份收获。

68
ywh19860616 发表于 2012-5-15 19:56:52
epoh 发表于 2012-5-15 17:11
只要是WW(:,:,s)=WWij;
Getis1,Getis_revised结果都一样
epoh老师,我知道问题在哪了,还是我自己修改的WW(:,:,s)=normw(WWij)这句有问题。
for s =1:length(k)
WWij=zeros(n,m);
for i = 1:n
    for j = 1:m
     if (i~=j)
        WWij(i,j)=exp((-k(s)/d)*dista(i,j));  
     elseif (i==j)
        WWij(i,j)=0;
     end %end if
    end  %end j
      WW(:,:,s)=normw(WWij);end %end i
   for p = 1:n1
     [Xij_bar,GGI,ZZG,ZZ]=Getis1(WWij,Xij(p,:));
     ZZmat(p,s)=ZZ;
     ZZmat1(p,:)=Xij_bar;
   end % end p
end %end s
ZZmat

在上述程序中,虽然我用了WW(:,:,s)=normw(WWij); 但是Getis1中还是调用了未标准化的WWij。
而我之后在单独验证时,又用了标准化的WWij去验证,所以出现结果不一致。

因此,我还想请教您,在这个循环中,如何让Getis1真正调用标准化后的WWij呢?
一份耕耘,一份收获。

69
epoh 发表于 2012-5-15 20:39:51
ywh19860616 发表于 2012-5-15 19:56
epoh老师,我知道问题在哪了,还是我自己修改的WW(:,:,s)=normw(WWij)这句有问题。
for s =1:length(k ...
Getis.m 的计算公式与公式(3.1)不同
你有没其他软件可以比较一下
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ywh19860616 + 1 + 1 + 1 谢谢epoh老师

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

70
epoh 发表于 2012-5-15 21:05:19
ywh19860616 发表于 2012-5-15 19:56
epoh老师,我知道问题在哪了,还是我自己修改的WW(:,:,s)=normw(WWij)这句有问题。
for s =1:length(k ...
SpaceStat TUTORIAL page 146/263
http://dae.unizar.es/docencia/regional/spacestat%20Tutorial.pdf

23.2.1 G Statistic
wij(d) stands for an element of the symmetric
(unstandardized) spatial weights matrix for distance d.
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ywh19860616 + 5 + 5 + 5 谢谢您

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

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-22 16:20