全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2548 8
2010-10-06
悬赏 10 个论坛币 已解决
我在做论文遇到确定GPD分布最优阀值的程序,用S-plus须有Finmetrics模块。请教各位高手,为什么有提示:Problem: Object "nw" not found 出现,请问是什么原因,我是个新手。搞不明白。实现该程序将数据存于X1数据表的V1向量。就进行可以调试了。

WW<-matrix(c(0.057,0.086,0.124,0.153,0.183,0.224,0.255,0.33,
0.055,0.081,0.116,0.144,0.172,0.21,0.24,0.31,
0.053,0.078,0.111,0.137,0.164,0.2,0.228,0.294,
0.052,0.076,0.108,0.133,0.158,0.193,0.22,0.284,
0.049,0.072,0.101,0.124,0.147,0.179,0.204,0.264,
0.046,0.067,0.094,0.115,0.136,0.165,0.187,0.239),
nrow=6,ncol=8,byrow=T)
AA<-matrix(c(0.397,0.569,0.796,0.974,1.158,1.409,1.603,2.064,
0.386,0.55,0.766,0.935,1.11,1.348,1.532,1.966,
0.376,0.534,0.741,0.903,1.069,1.296,1.471,1.893,
0.369,0.522,0.722,0.879,1.039,1.257,1.426,1.831,
0.356,0.499,0.685,0.83,0.978,1.18,1.336,1.707,
0.339,0.471,0.641,0.771,0.905,1.086,1.226,1.559),
nrow=6,ncol=8,byrow=T)

X2<-rev(sort(X1$V1))
t<-matrix(nrow=length(X2),ncol=8)
n0<-length(X2)
for(i in 1:(n0-3))
{n<-n0-i+1
out<-gpd(X2,X2[n])
t[i,1]<-out$upper.thresh
t[i,2]<-out$n.upper.exceed
t[i,3:4]<-out$upper.par.ests
Nu<-t[i,2]
u<-t[i,1]
xi<-t[i,3]
beta<-t[i,4]
z<-pgpd(X2[1:(n-1)],xi,u,beta)
z<-sort(z)
s1<-(z-(2*seq(1:(n-1))-1)/(2*(n-1)))^2
s2<-(2*seq(1:(n-1))-1)*(log(z)+log(1-rev(z)))
W2<-sum(s1)+1/(12*(n-1))
A2<--(n-1)-mean(s2)
t[i,5]<-W2
t[i,6]<-A2
k<-c(0,0.1,0.2,0.3,0.5,0.9)
w<-matrix(nrow=2,ncol=8)
a<-matrix(nrow=2,ncol=8)
if(xi>=0&&xi<0.1)
{for(j in 1:8) {w[,j]<-approx(k[1:2],WW[1:2,j],xout=xi);
a[,j]<-approx(k[1:2],AA[1:2,j],xout=xi)}}
else if(xi>=0.1&&xi<0.2)
{for(j in 1:8) {w[,j]<-approx(k[2:3],WW[2:3,j],xout=xi);
a[,j]<-approx(k[2:3],AA[2:3,j],xout=xi)}}
else if(xi>=0.2&&xi<0.3)
{for(j in 1:8) {w[,j]<-approx(k[3:4],WW[3:4,j],xout=xi);
a[,j]<-approx(k[3:4],AA[3:4,j],xout=xi)}}
else if(xi>=0.3&&xi<0.5)
{for(j in 1:8) {w[,j]<-approx(k[4:5],WW[4:5,j],xout=xi);
a[,j]<-approx(k[4:5],AA[4:5,j],xout=xi)}}
else if(xi>=0.5&&xi<=0.9)
{for(j in 1:8) {w[,j]<-approx(k[5:6],WW[5:6,j],xout=xi);
a[,j]<-approx(k[5:6],AA[5:6,j],xout=xi)}}
else{for(j in 1:8) {w[,j]<-0;a[,j]<-0}}
for(j in 1:8){nw[j]<-w[2,j];na[j]<-a[2,j]}
if(t[i,5]<=nw[[3]]) t[i,7]<-1
else if(t[i,5]>nw[[3]]&&t[i,5]<=nw[[4]]) t[i,7]<-2
else t[i,7]<-3;
if(t[i,6]<=na[[3]]) t[i,8]<-l
else if(t[i,6]>na[[3]]&&t[i,6]<=na[[4]]) t[i,8]<-2
else t[i,8]<-3;
}

最佳答案

epoh 查看完整内容

数据不能由 i=1 开始 否则会产生 warning("No log likelihood function and covariance matrix can be calculated.") varcov
二维码

扫码加我 拉你入群

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

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

全部回复
2010-10-6 09:40:49
数据不能由 i=1 开始
否则会产生
warning("No log likelihood function and covariance matrix can be calculated.")
varcov <- NA
以底下数据ndx为例(nobs=302),需 i in 13:298
另你有笔误,应1误写为l,我已帮你更正.
##########
ndx.ret2 = getReturns(ndx.dat[,"Close"])^2
ndx = sqrt(aggregate(ndx.ret2, FUN=sum, by="weeks",week.align=1))
X2=rev(sort(seriesData(ndx)))
WW<-matrix(c(0.057,0.086,0.124,0.153,0.183,0.224,0.255,0.33,
0.055,0.081,0.116,0.144,0.172,0.21,0.24,0.31,
0.053,0.078,0.111,0.137,0.164,0.2,0.228,0.294,
0.052,0.076,0.108,0.133,0.158,0.193,0.22,0.284,
0.049,0.072,0.101,0.124,0.147,0.179,0.204,0.264,
0.046,0.067,0.094,0.115,0.136,0.165,0.187,0.239),
nrow=6,ncol=8,byrow=T)
AA<-matrix(c(0.397,0.569,0.796,0.974,1.158,1.409,1.603,2.064,
0.386,0.55,0.766,0.935,1.11,1.348,1.532,1.966,
0.376,0.534,0.741,0.903,1.069,1.296,1.471,1.893,
0.369,0.522,0.722,0.879,1.039,1.257,1.426,1.831,
0.356,0.499,0.685,0.83,0.978,1.18,1.336,1.707,
0.339,0.471,0.641,0.771,0.905,1.086,1.226,1.559),
nrow=6,ncol=8,byrow=T)
k<-c(0,0.1,0.2,0.3,0.5,0.9)
w<-matrix(nrow=2,ncol=8)
a<-matrix(nrow=2,ncol=8)
nw<-matrix(nrow=1,ncol=8)
na<-matrix(nrow=1,ncol=8)
#X2<-rev(sort(X1$V1))
t<-matrix(nrow=length(X2),ncol=8)
n0<-length(X2)
for(i in 13:(n0-4))    #i=13.....298
{n<-n0-i+1
out<-gpd(X2,X2[n])
t[i,1]<-out$upper.thresh
t[i,2]<-out$n.upper.exceed
t[i,3:4]<-out$upper.par.ests
Nu<-t[i,2]
u<-t[i,1]
xi<-t[i,3]
beta<-t[i,4]
z<-pgpd(X2[1:(n-1)],xi,u,beta)
z<-sort(z)
s1<-(z-(2*seq(1:(n-1))-1)/(2*(n-1)))^2
s2<-(2*seq(1:(n-1))-1)*(log(z)+log(1-rev(z)))
W2<-sum(s1)+1/(12*(n-1))
A2<--(n-1)-mean(s2)
t[i,5]<-W2
t[i,6]<-A2
#k<-c(0,0.1,0.2,0.3,0.5,0.9)
#w<-matrix(nrow=2,ncol=8)
#a<-matrix(nrow=2,ncol=8)
#nw<-matrix(nrow=1,ncol=8)
#na<-matrix(nrow=1,ncol=8)
if(xi>=0&&xi<0.1)
{for(j in 1:8) {w[,j]<-approx(k[1:2],WW[1:2,j],xout=xi);
a[,j]<-approx(k[1:2],AA[1:2,j],xout=xi)}}
else if(xi>=0.1&&xi<0.2)
{for(j in 1:8) {w[,j]<-approx(k[2:3],WW[2:3,j],xout=xi);
a[,j]<-approx(k[2:3],AA[2:3,j],xout=xi)}}
else if(xi>=0.2&&xi<0.3)
{for(j in 1:8) {w[,j]<-approx(k[3:4],WW[3:4,j],xout=xi);
a[,j]<-approx(k[3:4],AA[3:4,j],xout=xi)}}
else if(xi>=0.3&&xi<0.5)
{for(j in 1:8) {w[,j]<-approx(k[4:5],WW[4:5,j],xout=xi);
a[,j]<-approx(k[4:5],AA[4:5,j],xout=xi)}}
else if(xi>=0.5&&xi<=0.9)
{for(j in 1:8) {w[,j]<-approx(k[5:6],WW[5:6,j],xout=xi);
a[,j]<-approx(k[5:6],AA[5:6,j],xout=xi)}}
else{for(j in 1:8) {w[,j]<-0;a[,j]<-0}}  
for(j in 1:8){nw[j]<-w[2,j];na[j]<-a[2,j]}
if(t[i,5]<=nw[[3]]) t[i,7]<-1
else if(t[i,5]>nw[[3]]&&t[i,5]<=nw[[4]]) t[i,7]<-2
else t[i,7]<-3;   
if(t[i,6]<=na[[3]]) t[i,8]<-1
else if(t[i,6]>na[[3]]&&t[i,6]<=na[[4]]) t[i,8]<-2
else t[i,8]<-3;
}

> a
          [,1]      [,2]      [,3]      [,4]      [,5]      [,6]      [,7]      [,8]
[1,] 0.3365634 0.3365634 0.3365634 0.3365634 0.3365634 0.3365634 0.3365634 0.3365634
[2,] 0.3666234 0.5177952 0.7152358 0.870042  1.027848  1.242923  1.409546  1.808331
> w
           [,1]       [,2]      [,3]      [,4]      [,5]      [,6]      [,7]      [,8]
[1,] 0.3365634  0.3365634  0.3365634 0.3365634 0.3365634 0.3365634 0.3365634 0.3365634
[2,] 0.05145155 0.07526873 0.1067203 0.1313546 0.155989  0.1904406 0.2170749 0.2803437
> t[13:15,]
           [,1] [,2]       [,3]       [,4]      [,5]     [,6] [,7] [,8]
[1,] 0.01823829  289 -0.1113723 0.03499484 0.2585232 1.805100    3    3
[2,] 0.01837829  288 -0.1110698 0.03495179 0.2576934 1.826596    3    3
[3,] 0.01840052  287 -0.1126279 0.03509229 0.2739093 1.988217    3    3
二维码

扫码加我 拉你入群

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

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

2010-10-6 10:16:32
k<-c(0,0.1,0.2,0.3,0.5,0.9)
w<-matrix(nrow=2,ncol=8)
a<-matrix(nrow=2,ncol=8)
你定义了k,w,a.  a没用到
但没定义nw,na
所以告诉你Problem: Object "nw" not found
如果再没定义na,接下来会告诉你
Problem: Object "na" not found
二维码

扫码加我 拉你入群

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

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

2010-10-7 10:14:14
epoh 发表于 2010-10-6 10:16
k
我定义了nw<-matrix(nrow=1,ncol=8)
               na<-matrix(nrow=1,ncol=8)
运行了一下,程序运行了很久了没停,应该先入死循环了。楼主能帮我看看原因出在哪里吗?如何修改。非常感谢!
二维码

扫码加我 拉你入群

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

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

2010-10-8 12:02:29
epoh 发表于 2010-10-7 15:23
数据不能由 i=1 开始
否则会产生
warning("No log likelihood function and covariance matrix can be calculated.")
varcov
楼主太厉害了。我运行了一下还是死循环?你的程序我贴上去运行也是如此。我的版本就是网上比较流行的S-plus8.0破解版的。这个有关系吗?以前运行别的程序还好的。
二维码

扫码加我 拉你入群

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

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

2010-10-8 12:28:36
我的版本应该跟你相同.
就是两步骤
1.将license.lic文件复制到C:\Program Files\Insightful\splus80\adm\lic\keys
2.Sqpe.dll复制到C:\Program Files\Insightful\splus80\cmd
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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