楼主: 凹凸平原
6148 12

[问答] 空间权重矩阵是奇异矩阵怎么解决 [推广有奖]

  • 3关注
  • 1粉丝

已卖:35份资源

硕士生

70%

还不是VIP/贵宾

-

威望
0
论坛币
389 个
通用积分
23.8357
学术水平
1 点
热心指数
2 点
信用等级
1 点
经验
3722 点
帖子
88
精华
0
在线时间
282 小时
注册时间
2010-8-26
最后登录
2022-4-29

楼主
凹凸平原 在职认证  发表于 2013-1-16 09:06:24 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
利用matlab进行空间计量模型检验中,出现了空间权重矩阵是奇异矩阵的现象(Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.261189e-017.),导致数据无法进一步的运算(Warning: Divide by zero)。空间权重矩阵是通过geoda生成转化而来的,请问如何解决这个问题?
二维码

扫码加我 拉你入群

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

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

关键词:空间权重矩阵 权重矩阵 奇异矩阵 空间权重 singular 矩阵 空间 Matrix matlab close

沙发
deng203 发表于 2013-1-16 09:36:33
首先看你的权重矩阵是否设置有误,如果没有错误则将矩阵求逆(inv)换成广义逆(pinv)

藤椅
凹凸平原 在职认证  发表于 2013-1-16 13:04:30
deng203 发表于 2013-1-16 09:36
首先看你的权重矩阵是否设置有误,如果没有错误则将矩阵求逆(inv)换成广义逆(pinv)
你好,我才开始研究这个软件,我是在通过别人写好的代码改写了一下用于我的分析,代码如下:
clear all;

A=xlsread('C:\MATLAB7\95.xls');
W1=xlsread('C:\MATLAB7\qz.xls');
% Dataset downloaded from www.wiley.co.uk/baltagi/
% Spatial weights matrix constructed by Elhorst
%
% written by: J.Paul Elhorst summer 2008
% University of Groningen
% Department of Economics
% 9700AV Groningen
% the Netherlands
% j.p.elhorst@rug.nl
%
% REFERENCES:
% Elhorst JP (2009) Spatial Panel Data Models. In Fischer MM, Getis A (Eds.)
% Handbook of Applied Spatial Analysis, Ch. C.2. Springer: Berlin Heidelberg New York.
%
% dimensions of the problem
T=1; % number of time periods
N=30; % number of regions
% row-normalize W
W=normw(W1); % function of LeSage
y=A(:,[7]); % column number in the data matrix that corresponds to the dependent variable
x=A(:,[1,2,3,4,5,6]); % column numbers in the data matrix that correspond to the independent variables
xconstant=ones(N*T,1);
[nobs K]=size(x);
% ----------------------------------------------------------------------------------------
% ols estimation
results=ols(y,[xconstant x]);
vnames=strvcat('logc','intercept','log1','log2','lo3','log4','log5','log6');
prt_reg(results,vnames,1);
sige=results.sige*((nobs-K)/nobs);
loglikols=-nobs/2*log(2*pi*sige)-1/(2*sige)*results.resid'*results.resid
LMsarsem_panel(results,W,y,[xconstant x]); % (Robust) LM tests
% ----------------------------------------------------------------------------------------
% spatial fixed effects + (robust) LM tests for spatial lag and spatial error model
% fixed effects, within estimator
% demeaning of the y and x variables
model=1;
[ywith,xwith,meanny,meannx,meanty,meantx]=demean(y,x,N,T,model);
results=ols(ywith,xwith);
vnames=strvcat('logc','intercept','log1','log2','log3','log4','log5','log6'); % should be changed if x is changed
prt_reg(results,vnames);
FE=meanny-meannx*results.beta; % including the constant term
yme = y - mean(y);
ee=ones(T,1);
error=y-kron(ee,FE)-x*results.beta;
rsqr1 = error'*error;
rsqr2 = yme'*yme;
FE_rsqr2 = 1.0 - rsqr1/rsqr2 % r-squared including fixed effects
sige=results.sige*((nobs-K)/nobs);
loglikfe=-nobs/2*log(2*pi*sige)-1/(2*sige)*results.resid'*results.resid
LMsarsem_panel(results,W,ywith,xwith); % (Robust) LM tests
%下面的一小段是我对照那个程序自己加上的
model=2;
[ywith,xwith,meanny,meannx,meanty,meantx]=demean(y,x,N,T,model);
results=wls(ywith,xwith);
vnames=strvcat('logc','intercept','log1','logp2','log3','log4','logp5','log6'); % should be changed if x is changed
prt_reg(results,vnames);
sige=results.sige*((nobs-K)/nobs);
loglikfe=-nobs/2*log(2*pi*sige)-1/(2*sige)*results.resid'*results.resid
LMsarsem_panel(results,W,ywith,xwith); % (Robust) LM tests
% ----------------------------------------------------------------------------------------
% spatial and time period fixed effects + (robust) LM tests for spatial lag and spatial error model
% fixed effects, within estimator
% demeaning of the y and x variables
model=3;
[ywith,xwith,meanny,meannx,meanty,meantx]=demean(y,x,N,T,model);
results=wls(ywith,xwith);
vnames=strvcat('logc','intercept','log1','logp2','log3','log4','logp5','log6'); % should be changed if x is changed
prt_reg(results,vnames);
sige=results.sige*((nobs-K)/nobs);
loglikfe=-nobs/2*log(2*pi*sige)-1/(2*sige)*results.resid'*results.resid
LMsarsem_panel(results,W,ywith,xwith); % (Robust) LM tests

我并没有发现有调用inv函数,还希望你可以继续指点我一下,感谢!

板凳
deng203 发表于 2013-1-16 15:52:43
LM检验(LMsarsem_panel)中应该含有inv(W),你type LMsarsem_panel看看

报纸
凹凸平原 在职认证  发表于 2013-1-17 22:47:50
deng203 发表于 2013-1-16 15:52
LM检验(LMsarsem_panel)中应该含有inv(W),你type LMsarsem_panel看看
恩,我会按照你的提示尝试去做的,现在要期末考试了,软件的学习暂时先放下。感谢你对我的帮助!

地板
凹凸平原 在职认证  发表于 2013-2-22 19:34:30
deng203 发表于 2013-1-16 15:52
LM检验(LMsarsem_panel)中应该含有inv(W),你type LMsarsem_panel看看
我又重新设置了一下权重矩阵,得出了这样的结果,想问下您这是什么原因
LM test no spatial lag, probability          =       NaN,      NaN
robust LM test no spatial lag, probability   =       NaN,      NaN
LM test no spatial error, probability        =       NaN,      NaN
robust LM test no spatial error, probability =       NaN,      NaN

7
deng203 发表于 2013-2-23 10:07:18
数据输入有问题, NaN具体参见百度百科NaN词条

8
凹凸平原 在职认证  发表于 2013-2-26 23:07:44
deng203 发表于 2013-2-23 10:07
数据输入有问题, NaN具体参见百度百科NaN词条
好的,谢谢你

9
meimei_1784 发表于 2013-8-8 15:56:50
deng203 发表于 2013-1-16 09:36
首先看你的权重矩阵是否设置有误,如果没有错误则将矩阵求逆(inv)换成广义逆(pinv)
你好!我想请问你一下,我在geoda中生成了gal文件的空间权重矩阵,如何转换到matlab中的wk1权重文件?如果转换不了,怎么直接在matlab中生成?盼回答,谢谢!
我坚信我可以!

10
matlab-007 发表于 2015-2-6 21:33:48
计算过程中出现了类似除0的现象导致的

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

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