#Adaptive Robust mean
rm<-function(x){
eps <- 10^(-6)
n <- length(x)
z <- 1+log(n)
est_mu1 <- mean(x)
est_mu2 <- 0
tau_old <- sd(x)
tau_new <- 2*tau_old
while (abs(tau_new-tau_old)+abs(est_mu2-est_mu1)>eps) {
est_mu2 <- est_mu1
tau_old <- tau_new
res_hub <- x - est_mu1
res_square <- res_hub^2
x_max <- sum(res_square)
fixed_equ_value<-function(x){
value<-sum(min(res_square,x))/(x*n) - (1+log(n))/n
return(value)
}
tau2<-uniroot(fixed_equ_value,c(min(res_square), x_max))
tau_new<-sqrt(tau2)
mu_new <- est_mu1
mu_old <- 2*est_mu1
while (abs(mu_new-mu_old)>eps){
mu_old <- mu_new
r <- x - mu_new
abs(r) > tau_new
w <- (as.numeric(abs(r) > tau_new))*(abs(r)/tau_new - 1)
mu_new <- sum(x/(w+1))/sum(1/(w+1))
}
est_mu1 = mu_new
}
robust_mean <- est_mu1
tau <- tau_new
return(robust_mean)
return(tau)
}


雷达卡



京公网安备 11010802022788号







