- 多変量データの周期性についていじっている
- そこでは、微分や積分を行き来する
- 少し立ち返って、単変量時系列データをRでハンドリングして、その微分(差分)や積分(Area under the curve計算)をすることについてみてみる
- こちらと関連しており、データ発生に借用させていただくこととする
- cumsum(),diff()を使ってみる
- 観察点をばらつかせながら増やしてやって、AUCが収束する様子が掲載図
AUC<- function(xvec,yvec){
int<- 0
for(i in 1:(length(yvec)-1)){
int<- int +
(yvec[i]+yvec[i+1])*(xvec[i+1]-xvec[i])/2
}
return(int)
}
f<- function(x,a){
p<- -x*(log(x)-(1+a))
return(p)
}
T<- c(0,f(1:15,2))
for(i in 1:3){
T<- append(T,f(1:15,2)+tail(T,1))
}
T<- append(T,f(1:1000,2)+tail(T,1))
T<- T[which(T>=0)]
Nt<-length(T)
SABUN<-diff(T)
Hukugen.Sekibun<-cumsum(c(T[1],SABUN))
plot(T,Hukugen.Sekibun)
obsFrac<-2:length(T)
AUCs<-rep(0,length(obsFrac))
AUCs2<-AUCs
for(i in obsFrac){
obsTimes<-sort(sample(1:Nt,i))
Tobs<-T[obsTimes]
plot(obsTimes,Tobs,type="b",xlim=c(0,length(T)),ylim=c(0,max(T)))
TimeDiffs<-diff(obsTimes)
TobsDiffs<-diff(Tobs)
TobsAverage<-Tobs[1:(length(Tobs)-1)]+TobsDiffs/2
AUCs[i]<-sum(TobsAverage*TimeDiffs)
AUCs2[i]<-AUC(obsTimes,Tobs)
}
plot(AUCs,AUCs2)
plot(AUCs)