べき分布の指数の推定関数

べき分布の指数の推定関数

powerFit<-function(x){

	D<-0
	P<-0
	alpha123<-0
	N123<-100
	xminmin<-0
	xminb<-0
	kazu<-0;
	Dp<-function(x){
		i<-1:100
		2*sum(((-1)^(i-1))*exp(-2*i*i*x*x))
	}

	h1b<-x
	ALPHA<-0
	XMIN<-0
	PVALE<-0

	i<-1

	xminxmin<-exp(seq(min(log(h1b)),max(log(h1b)),length.out=N123) )
	h1c<-x
	while(length(h1c)>=2){


		

		xmin<-xminxmin[i]
		
		h1c<-h1b[h1b>=xmin]

		alpha<-1+length(h1c)*1.0/sum(log(h1c/xmin))-1



		xminb[i]<-xmin
		D[i]=max(abs(xmin^alpha/(sort(h1c))^(alpha)-length(h1c):1/length(h1c)))
		alpha123[i]<-alpha
		cat(D[i],alpha,length(h1c),"\n")


		P[i]<-Dp(sqrt(length(h1c))*D[i]);
		
		cat(D[i],alpha123[i],length(h1c),length(alpha123),length(D),length(P),"\n")

		i<-i+1;
	}

	Db<-D[!is.na(D) & D != Inf & !is.na(alpha123) & alpha123 != Inf & !is.na(P) & P != Inf & !is.na(xminb) & xminb != Inf]

	alpha123b<-alpha123[!is.na(D) & D != Inf & !is.na(alpha123) & alpha123 != Inf & !is.na(P) & P != Inf & !is.na(xminb) & xminb != Inf]

	Pb<-P[!is.na(D) & D != Inf & !is.na(alpha123) & alpha123 != Inf & !is.na(P) & P != Inf & !is.na(xminb) & xminb != Inf]

	xminbb<-xminb[!is.na(D) & D != Inf & !is.na(alpha123) & alpha123 != Inf & !is.na(P) & P != Inf & !is.na(xminb) & xminb != Inf]
	xmin<-xminbb[which(Db==min(Db))]
	alpha<-alpha123b[which(Db==min(Db))]
	pb<-Pb[which(Db==min(Db))]



	c(alpha,xmin,pb)
	#data.frame(Db,alpha123b,xminbb)
	
}


95%信頼区間

powerFit2<-function(x){

	D<-0
	P<-0
	alpha123<-0
	N123<-100
	xminmin<-0
	xminb<-0
	kazu<-0;
	Dp<-function(x){
		i<-1:100
		2*sum(((-1)^(i-1))*exp(-2*i*i*x*x))
	}

	h1b<-x
	ALPHA<-0
	XMIN<-0
	PVALE<-0

	i<-1

	xminxmin<-exp(seq(min(log(h1b)),max(log(h1b)),length.out=N123) )
	h1c<-x
	while(length(h1c)>=2){


		

		xmin<-xminxmin[i]
		
		h1c<-h1b[h1b>=xmin]

		alpha<-1+length(h1c)*1.0/sum(log(h1c/xmin))-1



		xminb[i]<-xmin
		D[i]=max(abs(xmin^alpha/(sort(h1c))^(alpha)-length(h1c):1/length(h1c)))
		alpha123[i]<-alpha
		cat(D[i],alpha,length(h1c),"\n")


		P[i]<-Dp(sqrt(length(h1c))*D[i]);
		
		cat(D[i],alpha123[i],length(h1c),length(alpha123),length(D),length(P),"\n")

		i<-i+1;
	}

	Db<-D[!is.na(D) & D != Inf & !is.na(alpha123) & alpha123 != Inf & !is.na(P) & P != Inf & !is.na(xminb) & xminb != Inf]

	alpha123b<-alpha123[!is.na(D) & D != Inf & !is.na(alpha123) & alpha123 != Inf & !is.na(P) & P != Inf & !is.na(xminb) & xminb != Inf]

	Pb<-P[!is.na(D) & D != Inf & !is.na(alpha123) & alpha123 != Inf & !is.na(P) & P != Inf & !is.na(xminb) & xminb != Inf]

	xminbb<-xminb[!is.na(D) & D != Inf & !is.na(alpha123) & alpha123 != Inf & !is.na(P) & P != Inf & !is.na(xminb) & xminb != Inf]
	xmin<-xminbb[which(Db==min(Db))]
	alpha<-alpha123b[which(Db==min(Db))]
	pb<-Pb[which(Db==min(Db))]

     #x<-runif(10000)^(-1/1.5)
     #q<-powerFit(x)
      x1<-x[x>=xmin]
    #alpha_real=1+length(x1)*(sum(log(x1/min(x1))))^-1-1 
    xu<-qnorm(0.025,mean=alpha+1,sd=(alpha+1-1)/sqrt(length(x1)))-1
     xb<-qnorm(1-0.025,mean=alpha+1,sd=(alpha+1-1)/sqrt(length(x1)))-1

	c(alpha,xmin,pb,xu,xb)
	#data.frame(Db,alpha123b,xminbb,xu,xb)
	
}
x<-runif(10000)^(-1/1.3)
q<-powerFit2(x)

http://d.hatena.ne.jp/arupaka-_-arupaka/20090820