R语言 Hurst指数计算

GPS

filenum=c(11:15,19:24)

roads=c("鞍山西道","白堤路","保山道","复康路","广开二马路","广开四马路","红旗路","黄河道","密云路","密云一支路","南丰路","南京路","南开二纬路","南开三马路","三潭路","双峰道","卫津路","西湖道","西市大街","咸阳路","雅安道","延安路","玉泉路")
#roads=c("广开二马路","广开四马路","红旗路","黄河道","密云路","密云一支路","南丰路","南京路","南开二纬路","南开三马路","三潭路","双峰道","卫津路","西湖道","西市大街","咸阳路","雅安道","延安路","玉泉路")

#files=paste("E:/R-WorkPath/data/201104",filenum,sep="","/",road,".csv")


H=c();#所有的H存放地
for(road in roads){

	files=paste("I:/data/201104",filenum,sep="","/",road,".csv")
	GPSH=c();
	for(file in files){
		table=read.csv(file)
		GPS=table$gps #GPS:GPS速度(速度list)
		E=c() #期望E(R/S)
		for(i in 1:96){
			if(!is.numeric(GPS[i])&&!is.complex(GPS[i])&&is.logical(GPS[i])){
				waring("argument is not numeric or logical:returning NA");
				return(NA_real_)
			}
		}
		if(!is.numeric(GPS[96])&&!is.complex(GPS[96])&&!is.logical(GPS[96]))
		{
			co=c(0,0,0,0,0,0,0,0,0,0,0);
			GPSH=c(GPSH,co);
			break;
		}


		#第一步 求均值
		m=mean(GPS) #m:GPS速度均值(num)
	
		#第二步 求平均调整
		Y=GPS-m  #GPS速度偏差(list)
	
		#第三步 求累计偏离
		Z=c();
		for(i in 1:96){ 
			Z[i]=sum(Y[1:i])
		}
	
		#第四步 计算值域
		R =c();  #求Range(1到某个数) 96个 
		for(i in 1:96){ 
			R[i]=max(Z[1:i])-min(Z[1:i]) 
		}
	
		#第五步 求标准差
		S =c(); #求标准差1到某个数) 96个 (被除数)
		
		for(i in 1:96){ 
			S[i]=sd(GPS[1:i]) 
			if(is.na(S[i]))S[i]=1;
			if(S[i]==0)S[i]=1;
		}
	
		#第六步求Rn/Sn
			#初始化


		
		divide = R/S #求均值 96个 理论上
		for(i in 1:96){
			if(is.na(divide[i])){
				divide[i]=0;
			}
			else{
				E[i]=mean(divide[1:i]);
			}
		}
		
		
		#拟合
			#准备
		beg = 1;
		for(i in 1:96){
		    
			if(E[i]==0)beg=beg+1  #如果这个元素为0的话就不要这个数字
			if(is.na(E[i])) beg = beg +1;
		}
		if(beg>96)
		{
			GPSH=c(GPSH,0);
			break;
		}
		E=E[beg:96]
		N=c(beg:96)
		zz=lm(log(E)~log(N))
		GPSH=c(GPSH,zz$coefficients[[2]]);

		#png(file=paste(road,"201104",filenum,sep="",".png"), bg="transparent")
		plot(log(N),log(E))
		lines(log(N),fitted(zz))
		#dev.off();
	
		
		#dim(H)=c(11,length(filepaths))
	}
	H=c(H,GPSH)	
}
dim(H)=c(length(files),length(roads));
colnames(H)=paste("   ",roads,"   ");
rownames(H)=paste("2011年04月",filenum,"日",sep="")

opar=par(no.readonly=TRUE)
par(mfrow=c(4,6))
N=c(1:11)
for(i in 1:23)
{	
	plot(N,H[,1],ylab="hurst")
	title(paste(roads[i],"11天内hurst指数",sep=""))
	abline(h=0)
}
par(opar)

filenum=c(11:15,19:24)

roads=c("鞍山西道","白堤路","保山道","复康路","广开二马路","广开四马路","红旗路","黄河道","密云路","密云一支路","南丰路","南京路","南开二纬路","南开三马路","三潭路","双峰道","卫津路","西湖道","西市大街","咸阳路","雅安道","延安路","玉泉路")
#roads=c("广开二马路","广开四马路","红旗路","黄河道","密云路","密云一支路","南丰路","南京路","南开二纬路","南开三马路","三潭路","双峰道","卫津路","西湖道","西市大街","咸阳路","雅安道","延安路","玉泉路")

#files=paste("E:/R-WorkPath/data/201104",filenum,sep="","/",road,".csv")


QHMatrix_H=c();#所有的H存放地
for(road in roads){

	files=paste("I:/data/201104",filenum,sep="","/",road,".csv")
	QHH=c();
	for(file in files){
		table=read.csv(file)
		QH=table$gps #QH:QH速度(速度list)
		E=c() #期望E(R/S)
		for(i in 1:96){
			if(!is.numeric(QH[i])&&!is.complex(QH[i])&&is.logical(QH[i])){
				waring("argument is not numeric or logical:returning NA");
				return(NA_real_)
			}
		}
		if(!is.numeric(QH[96])&&!is.complex(QH[96])&&!is.logical(QH[96]))
		{
			co=c(0,0,0,0,0,0,0,0,0,0,0);
			QHH=c(QHH,co);
			break;
		}


		#第一步 求均值
		m=mean(QH) #m:QH速度均值(num)
	
		#第二步 求平均调整
		Y=QH-m  #QH速度偏差(list)
	
		#第三步 求累计偏离
		Z=c();
		for(i in 1:96){ 
			Z[i]=sum(Y[1:i])
		}
	
		#第四步 计算值域
		R =c();  #求Range(1到某个数) 96个 
		for(i in 1:96){ 
			R[i]=max(Z[1:i])-min(Z[1:i]) 
		}
	
		#第五步 求标准差
		S =c(); #求标准差1到某个数) 96个 (被除数)
		
		for(i in 1:96){ 
			S[i]=sd(QH[1:i]) 
			if(is.na(S[i]))S[i]=1;
			if(S[i]==0)S[i]=1;
		}
	
		#第六步求Rn/Sn
			#初始化


		
		divide = R/S #求均值 96个 理论上
		for(i in 1:96){
			if(is.na(divide[i])){
				divide[i]=0;
			}
			else{
				E[i]=mean(divide[1:i]);
			}
		}
		
		
		#拟合
			#准备
		beg = 1;
		for(i in 1:96){
		    
			if(E[i]==0)beg=beg+1  #如果这个元素为0的话就不要这个数字
			if(is.na(E[i])) beg = beg +1;
		}
		if(beg>96)
		{
			QHH=c(QHH,0);
			break;
		}
		E=E[beg:96]
		N=c(beg:96)
		zz=lm(log(E)~log(N))
		QHH=c(QHH,zz$coefficients[[2]]);

		#png(file=paste(road,"201104",filenum,sep="",".png"), bg="transparent")
		plot(log(N),log(E))
		lines(log(N),fitted(zz))
		#dev.off();
	
		
		#dim(QHMatrix_H)=c(11,length(filepaths))
	}
	QHMatrix_H=c(QHMatrix_H,QHH)	
}
dim(QHMatrix_H)=c(length(files),length(roads));
colnames(QHMatrix_H)=paste("   ",roads,"   ");
rownames(QHMatrix_H)=paste("2011年04月",filenum,"日",sep="")

opar=par(no.readonly=TRUE)
par(mfrow=c(4,6))
N=c(1:11)
for(i in 1:23)
{	
	plot(N,QHMatrix_H[,1],ylab="hurst")
	title(paste(roads[i],"11天内hurst指数",sep=""))
	abline(h=0)
}
par(opar)



 

 

 

 


 

opar=par(no.readonly=TRUE)
par(mfrow=c(4,6))
N=c(1:11)
a=c()
for(i in 1:length(roads)){
	plot(H[,i],QHMatrix_H[,i],xlab="GPS Hurst 指数",ylab="切换 Hurst 指数")
	pz=lm(H[,i]~QHMatrix_H[,i])
	lines(H[,i],fitted(pz),col="red",pch=3)	
	a=c(a,pz$coefficients[[1]])
}
par(opar)

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值