# Adjusted Degree of Freedom Adjustdf=function(theta, n, p) { theta.sort=sort(theta) Min=numeric(p+1) Min0=numeric(p) Delta=numeric(p+1) for(j in 0:(p-1)){ Ij<-function(delta){ I<-1/(3+delta)*log(sum(theta.sort[(j+1):p]^(-delta)) )-delta/(3+delta)*log(n)- (1+delta/2)/(3+delta)*log(p-j) return(I) } result=optimize(Ij,c(1e-6,1)) Min0[j+1]=result$objective Delta[j+1]=result$minimum } Min[1:p]=exp(Min0)+c(0,n*cumsum(theta.sort)[1:(p-1)]) Min[p+1]=n d=p-1-(which.min(Min)-1) return(d) }