epoh老师,请您抽空再帮我看下一段类似功能的R 程序。这里的主要区别是矩阵生成机制不同,这里我想根据这样一个原则。给定一个门限值d,若d(i,j)>d,d(i,j)=1,若小于1,d(i,j)=0。而我给的不同的d,可以得到不同的权重矩阵。这里为什么选择用R,是因为R里面有一个moranI函数可以计算moran指数。我根据您编写的matlab修改,但是总不能出结果。
yc=as.numeric(t(c(40.16304,39.28829,39.53356,37.56977,44.08654,41.29838,43.6616,47.84179,31.16541,32.98073,29.16594,32.98073,26.07515,27.60815,36.32174,33.87427,30.96772,27.60539,23.35067,23.83548,19.19263,30.61157,26.8115,24.97481,35.20325,37.8208,35.74278,37.26806,41.11203)));
xc=as.numeric(t(c(116.38513,117.30503,116.08708,112.26255,113.89869,122.56549,126.14836,127.72512,121.39731,119.4195,120.02307,119.4195,117.96558,115.69939,118.10671,113.58064,112.23893,111.69403,113.40108,108.78058,109.74489,102.72802,106.87227,101.4963,108.85362,100.93231,96.02154,106.15805,85.20092)));
data<-read.csv('data1.csv')
p<-nrow(data)
LL<-cbind(xc,yc)
dista<-rdist.earth(LL)
d = seq(10,200,10)
s<-length(d)
dw<-dista
n<-ncol(dw)
WW<-matrix(0,n,n,s)
for (p in 1:s){
WW<-matrix(0,n,n)
for (i in 1:n){
for (j in 1:n) {
if (dw(i,j)==0)
dw(i,j)<-0
else if (dw(i,j)<=d(s))
dw(i,j)<-1
else
dw(i,j)<-0}
}
WW(:,:,s)=dw
moranI(WW,data) ##data为一列数据,每次计算出来的结果也只有一个数值
}
data1.rar
(226 Bytes)
本附件包括:- data1.csv


雷达卡
京公网安备 11010802022788号







