楼主: 751919234
7570 15

[问答] 怎样用R作图 [推广有奖]

11
751919234 发表于 2011-6-12 09:46:15
10# qoiqpwqr
我按照您写的运行,结果还是
> output=emp.TailCopula(samp,x,y,m)
警告信息:
1: In rank(FN1, ties.method = "max")/n > 1 - m/n * x :
  长的对象长度不是短的对象长度的整倍数
2: In rank(FN2, ties.method = "max")/n > 1 - m/n * y :
  长的对象长度不是短的对象长度的整倍数

并且做出的图像也是错误的

12
qoiqpwqr 发表于 2011-6-12 11:57:00
11# 751919234 我又试了一下,一切正常,图也可以画
把你完整的code发上来吧,看看。

13
751919234 发表于 2011-6-12 12:20:58
12# qoiqpwqr
数据是两个股市收益率,用cbind连接
#define a function
emp.TailCopula = function(samp,x,y,m){
n = nrow(samp)
FN1= data[,1]
FN2= data[,2]
T = sum((rank(FN1,ties.method="max")/n>1-m/n*x)&(rank(FN2,ties.method="max")/n>1-m/n*y))/m
return(T)
}
m的取值范围时从1到400,比如m取290,结果为
> emp.TailCopula(data,1,1,290)
[1] 0.8482759
上面的值肯定是小于1的
但是按照您写的,从图像看就不对了

14
qoiqpwqr 发表于 2011-6-12 21:33:06
中间加一句
x = 1
y = 1
m = 1:400
samp = matrix(1:100, ncol = 2)
data = samp
emp.TailCopula = function(samp,x,y,m){
n = nrow(samp)
FN1= data[,1]
FN2= data[,2]
T = sum((rank(FN1,ties.method="max")/n>1-m/n*x)&(rank(FN2,ties.method="max")/n>1-m/n*y))/m
return(T)
}
emp.TailCopula <- Vectorize(emp.TailCopula, "m")
output = emp.TailCopula(samp, x, y, m)
plot(output ~ m)

15
751919234 发表于 2011-6-12 23:49:40
14# qoiqpwqr
可以了,做出的图也正确!谢谢指教啊~~万分感谢

16
qoiqpwqr 发表于 2011-6-13 00:22:50
不用谢。。

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

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