x=matrix(0)
test <- vector(mode="numeric", length=196)
for(i in 1:196){
x=c[c(1:(200+i*50)),]
ts=BiCopGofTest(x[,1], x[,2], 1, par = 0.6 ,method="white",max.df = 30, B = 0, obj = NULL)
test[i]=ts$statistic}
plot(test, type='l')
我有10,000行2列的矩阵c。我获取了矩阵c的前200行,并计算了测试的值。每次我将行数增加50并计算测试时。这就是上面的代码中写的。
我现在想做的是以下内容。我想重复相同的过程,但是当测试大于7.81时,我想停止并返回数组x。我想稍后使用该数组,因此存储它很重要。我应该使用IF语句还是WHILE循环?任何帮助将不胜感激。
注意,这样做
x=c[c(1:(200+i*50)),]
在循环中,您覆盖了x,并且丢失了原始矩阵。另外,您的子集语句不是真的正确。您应该创建一个新变量,该变量保存循环中的行子集。您可能会执行以下操作:
x=matrix(runif(10000*2,0,1),10000,2)
test <- vector(mode="numeric", length=196)
i=0
while(max(test)<7.81 & 200+i*50<=nrow(x) )
{
y = x[seq(1,200+i*50),] # y contains the first 200+i*50 rows of x
ts= runif(1,1,7.9) # random test statistic, enter yours here.
test[i]= sum(ts)
i=i+1
}
plot(test, type='l')
这将继续您的循环,直到:
请注意,我没有包含的软件包BiCopGofTest
,所以我只是使用runif作为我的测试统计信息;)
希望这可以帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句