楼主: deadknight10
2547 8

请教S-plus程序高手! [推广有奖]

  • 1关注
  • 2粉丝

已卖:378份资源

副教授

88%

还不是VIP/贵宾

-

威望
0
论坛币
20348 个
通用积分
38.7769
学术水平
3 点
热心指数
7 点
信用等级
1 点
经验
30409 点
帖子
990
精华
0
在线时间
940 小时
注册时间
2008-7-5
最后登录
2025-12-9

楼主
deadknight10 发表于 2010-10-6 09:40:48 |AI写论文
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
关键词:S-Plus程序 PLUS Plu FinMetrics metrics 请教 程序 高手

本帖被以下文库推荐

沙发
epoh 发表于 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
已有 1 人评分信用等级 收起 理由
deadknight10 + 1 精彩帖子

总评分: 信用等级 + 1   查看全部评分

藤椅
epoh 发表于 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
已有 2 人评分论坛币 学术水平 热心指数 收起 理由
deadknight10 + 1 + 1 精彩帖子
ruiqwy + 60 + 1 根据规定进行奖励

总评分: 论坛币 + 60  学术水平 + 1  热心指数 + 2   查看全部评分

板凳
deadknight10 发表于 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)
运行了一下,程序运行了很久了没停,应该先入死循环了。楼主能帮我看看原因出在哪里吗?如何修改。非常感谢!

报纸
deadknight10 发表于 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破解版的。这个有关系吗?以前运行别的程序还好的。

地板
epoh 发表于 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

7
deadknight10 发表于 2010-10-8 16:49:03
6# epoh 感谢楼主的热心相助了。程序终于调出来了。你修改的程序没问题!我有点郁闷的是我直接新建数据,然后把数据复制在SDF1$V1里,为什么总提示我Warning messages:  No log likelihood function and covariance matrix can be calculated. in: gpd(X2, X2[n])
Problem in z - (2 * seq(1:(n - 1)) - 1)/(2 * (n - 1)): length of longer operand (3) should be a multiple of length of shorter (2)
i=1我已经修改过了。怎么还会出现呢。我应该怎么录入数据呢?最好是文本文档直接到读的那种。我试了好几种办法,结果都一样,我还以为是数据的原因,数据换了也一样。麻烦楼主再帮我看看吧。非常感谢!

8
epoh 发表于 2010-10-8 19:25:27
数据不同, i的取值范围亦不同!!
不妨取20:n0-10

读取数据亦可如此
Data\Select Data\Import File\....

9
汀兰芷若 发表于 2010-10-11 03:59:22
晕啊,第一个el的套装也太划算啦!

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

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