在while循环中移动窗口与gtools running()的相关性

时间:2014-06-07 17:43:17

标签: r

我正在尝试使用while循环在年度​​气候数据和年度树木年轮增长记录(基础面积增量或BAI)之间进行移动窗口相关性分析,以便使用气候变量(例如年温度)执行移动窗口相关性)和每个树的记录。

以下是一些示例数据:

bai1<-as.vector(c(12,11,14,20,17,18,12,12,8,31,15,8,21,13,10,19,11,14,20,17,18,12,12,13,12,11,14,20,17,18,12,12,8,31,15,8,21,13,10,19,11,14,20,17,18,12,12,13,7,NA))
bai2<-as.vector(c(NA,NA,NA,11,14,20,17,18,12,12,7,9,10,11,14,20,17,18,12,12,14,12,10,13,12,11,14,20,17,18,12,12,7,9,10,11,14,20,17,18,12,12,14,12,10,13,12,NA,NA,NA))
bai3<-as.vector(c(NA,NA,11,14,20,17,18,12,12,11,14,20,17,18,12,12,11,14,20,17,18,12,12,11,14,20,17,18,12,12,11,14,20,17,18,12,12,11,14,20,17,18,12,12,8,9,10,NA,NA,NA))
clim1<-as.vector(c(NA,NA,6,3,7,11,12,9,8,11,13,9,6,3,7,11,12,9,8,11,13,9,6,3,7,11,12,9,8,11,13,9,6,3,7,11,12,9,8,11,13,9,6,3,7,11,12,9,8,11))
clim2<-as.vector(c(NA,11,5,12,9,9,7,10,12,8,7,11,5,12,9,9,7,10,12,8,7,11,5,12,9,9,7,10,12,8,7,11,5,12,9,9,7,10,12,8,7,11,5,12,9,9,7,10,12,8))
clim3<-as.vector(c(11,8,12,5,6,8,5,9,10,7,11,8,12,5,6,8,5,9,10,7,11,8,12,5,6,8,5,9,10,7,11,8,12,5,6,8,5,9,10,7,11,8,12,5,6,8,5,9,NA,NA))

BAI<-data.frame(bai1, bai2, bai3)
CLIM<-data.frame(clim1,clim2,clim3)

为了使cor.test()能够使用某些&#34; windows&#34;中出现的NA值,我已经修改了如下功能(感谢其他人在SO上的帮助) :

cor_withN <- function(...) {
  res <- try(cor.test(...), silent=TRUE)
  if(class(res)=="try-error") NA else unclass(res)[c("estimate","p.value", "statistic", "parameter")]
}

当我调用一个单独的树和一个特定的气候变量时,我已经成功地使用了库(gtools)中的running()函数。这是代码和结果的一部分

running(CLIM$clim1, BAI$bai1, fun=cor_withN, width=10, by=5, allow.fewer=TRUE, align=c("right"), simplify=TRUE)
$`1:1`
[1] NA

$`1:6`
$`1:6`$estimate
       cor 
-0.1916846 

$`1:6`$p.value
[1] 0.8083154

$`1:6`$statistic
         t 
-0.2762048 

$`1:6`$parameter
df 
 2 

然而,我创建的这个cor_withN()函数的输出并不是最方便用户的,我正在努力获得估算,测试统计,p.value,和DF(参数)到一个数据帧,我可以使用write.csv()来合并结果。我之前在气候和BAI之间使用cor.test时有一个while循环,但是我尝试使用带有修改过的cor.test - cor_withN()的running()命令却没有成功。这是我用于其他分析的循环代码:

x<-1
n<-names(BAI)
out<-as.numeric()
t<-as.numeric()
p<-as.numeric()
c<-as.numeric()
d<-as.numeric()
while (x<3.1)
  {
        temp<-cor.test(CLIM$clim1, BAI[,x])
    t<-temp[1]
    p<-temp[3]
    c<-temp[4]
    d<-temp[2]
    temp2<-c(n[x],t,p,c,d)
    out<-rbind(out,temp2)
    x<-x+1
    }
out

是否有人建议如何使用类似于上述循环的内容调用估计值,p.value,统计信息和参数,而不是使用带有cor_withN()的running()命令来进行cor.test?提前感谢您的任何反馈。

0 个答案:

没有答案