全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1470 2
2017-12-09
悬赏 10 个论坛币 未解决
       最近在写一篇论文,需要用到Geoda软件或Matlab软件计算MoranI指数。在我的论文中,空间距离不仅仅是以往的邻接距离,而是包括空间距离矩阵,经济距离矩阵,人力资本距离矩阵。这些空间距离矩阵我已经通过Excel中计算出来了,应该如何导入Geoda中呢?Geoda能否处理基于经济距离及人力资本距离的MoranI指数计算?
       如果Geoda软件不行的话,只能通过Matlab软件计算的话,相关程序应该如何编写呢?之前有位大神分享了相关的计算程序,但是最后没有运行出来,如果有Matlab大神的话可不可以帮我看看是为什么?提示的错误是《错误使用  -
矩阵维度必须一致。》主要是因为控制变量矩阵x是390x7维的,xmean是1x7维的,所以xminusx_mean=x-xmean是错误的,现在不知道该怎么修改,恳请大神们帮帮忙,无限感激。
%% 读取数据
[data,name]=xlsread('data',1);
% 读取权重矩阵weight
w1=xlsread('data',2);
w2=xlsread('data',3);
w3=xlsread('data',4);
%提取变量
tfp=data(:,[3]);
x=data(:,[4,5,6,7,8,9,10]);
%%标准化矩阵
W1=normw(w1);
W2=normw(w2);
W3=normw(w3);
T=13;
N=30;
nobs=N*T;
%% MoranI指数的计算
%地理空间距离相关性计算
%%X为列向量,W1为权重矩阵
%alpha为显著性水平
n = length(x);
xmean = mean(x);
xminusx_mean = x - xmean;
S0 = sum(sum(W1));
%一、计算,moran'I值
%2、W标准化,为(0,1)矩阵
I_standard = xminusx_mean'*W1*xminusx_mean/(xminusx_mean'*xminusx_mean);
%二、moran'I值的显著性检验
Z_I = moran_test(I_standard,W1,0.5);
Z_alpha = norminv(1-alpha,0,1);
[I,I_standard,Z_I,Z_alpha,result]=moran(x,W1,0.5)
function [I,I_standard,Z_I,Z_alpha,result]=moran(x,W1,0.5)
%三、画moran散点图
%tfp = ax + b;线性拟合
%3、x为未标准化,W1标准化
%     W1_x = W1*x;%W1x_standard代表纵坐标
%     % result1 = myls(x_std,W1x_standard);
%       result1 =  moranScatterPlot(x,W1_x)
%       title('X为未标准化,W标准化');
%经济距离空间相关性的计算
[I,I_standard,Z_I,Z_alpha,result]=moran(x,W2,0.5)
function [I,I_standard,Z_I,Z_alpha,result]=moran(x,W2,0.5)
%%X为列向量,W2为权重矩阵
%alpha为显著性水平
n = length(x);
xmean = mean(x);
xminusx_mean = x - xmean;
S0 = sum(sum(W2));
%一、计算,moran'I值
%2、W标准化,为(0,1)矩阵
I_standard = xminusx_mean'*W2*xminusx_mean/(xminusx_mean'*xminusx_mean);
%二、moran'I值的显著性检验
Z_I = moran_test(I_standard,W2,0.5);
Z_alpha = norminv(1-alpha,0,1);
%三、画moran散点图
%tfp = ax + b;线性拟合
%3、X为未标准化,W标准化
%     W2_x = W2*x;%W2x_standard代表纵坐标
%     % result2 = myls(x_std,W2x_standard);
%     result2 =  moranScatterPlot(x,W2_x)
%       title('X为未标准化,W标准化');
%人力资本距离
[I,I_standard,Z_I,Z_alpha,result]=moran(x,W3,0.5)
function [I,I_standard,Z_I,Z_alpha,result]=moran(x,W3,0.5)
%%X为列向量,W3为权重矩阵
%alpha为显著性水平
n = length(x);
xmean = mean(x);
xminusx_mean = x - xmean;
S0 = sum(sum(W3));
%一、计算,moran'I值
%2、W标准化,为(0,1)矩阵
I_standard = xminusx_mean'*W3*xminusx_mean/(xminusx_mean'*xminusx_mean);
%二、moran'I值的显著性检验
Z_I = moran_test(I_standard,W3,0.5);
Z_alpha = norminv(1-alpha,0,1);
%三、画moran散点图
%tfp = ax + b;线性拟合
%3、x为未标准化,W1标准化
%     W3_x = W3*x;%W3x_standard代表纵坐标
%     % result3 = myls(x_std,W3x_standard);
%     result3 =  moranScatterPlot(x,W3_x)
%       title('X为未标准化,W标准化');

二维码

扫码加我 拉你入群

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

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

全部回复
2017-12-20 10:37:18
最笨的方法,你可以把xmean复制成和X维度一样就好了;
或者,matlab肯定有求deviation的公式,找一下就可以了
二维码

扫码加我 拉你入群

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

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

2017-12-24 10:05:25
zkyjesu 发表于 2017-12-20 10:37
最笨的方法,你可以把xmean复制成和X维度一样就好了;
或者,matlab肯定有求deviation的公式,找一下就可以 ...
谢谢啦
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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