有一个6300*240的矩阵
要求算它的6300行的spatial depth
大概运算过程是这样的
1.
U[ij]=(Xj-Xi)/||Xj-Xi||, i,jЄ{1,...,n},i不等于j
2.
Vi=(1/(n-1))∑U[ij] for j from 1 to n, j不等于i
3.
The Sample depth at Xi is obtained as
D(Xi, Fn)=1-||Vi||
下面是我写的循环
大概运行到U[j,]=(T2-T1)/(sum((T2-T1)*(T2-T1))^0.5) 这步就显示阵里的下标数目不对
本人R初学者,希望各位大侠不吝赐教
若嫌问题过于简单,还望海涵!
library(Matrix)
DataSD=function(Data){
TimeSeries=Data
U=matrix(nrow=6300,ncol=240)
V=matrix(nrow=6300,ncol=240)
D=matrix(nrow=6300,ncol=1)
for(i in 1:nrow(TimeSeries)){
for(j in 1:nrow(TimeSeries)){
if(i==j){
U[j,]=rep(0,length=240)}
else{
T1=TimeSeries[i,2:ncol(TimeSeries)]
T2=TimeSeries[j,2:ncol(TimeSeries)]
U[j,]=(T2-T1)/(sum((T2-T1)*(T2-T1))^0.5)
}
}
V[i,]=(1/(n-1))*colSums(U$Vector[i,],na.rm=TRUE)
D[i,]=1-(sum(V[i,]*V[i,]))^0.5
}
return(list(U=U,V=V,D=D))
}