Inference of Cook's Distance Plot What can we infer from cook's distance or the cook's distance plot  of regression model? 
How can it be used to refine model further ? 
Should we remove the values which are high influencers or lie out of cook's distance threshold?
Here is something similar being discussed - http://analyticspro.org/2016/03/07/r-tutorial-how-to-use-diagnostic-plots-for-regression-models/
 A: Cook's distance is a measure of influence and you use the plot to find highly influential points.  However, what you should do about those data depends on the reasons for their influence and what you are trying to do.
First, check that the data is correctly entered and not impossible.  Often, highly influential points come from some sort of error.  If this can be corrected, do so and if not, then delete the point. (Sometimes these are only impossible values in a multivariate sense.  E.g. if you have data on human age and height across the lifespan, then a 2 year old is not impossible and a 6 foot tall person is not impossible, but a 6 foot tall 2 year old is impossible).
Second, if the data are not in error, then it is usually wrong to simply delete them. In the old days, a commonly recommended strategy was to run the model with and without the influential points and then try to do something intelligent.  That's not a bad way, but... I suggest using modern methods that rely less on these points.  Quantile regression, for example, will usually be much less affected by influential points. Robust regression methods also exist to deal with this. 
A: To add to Peter's answer.
This code may be of help.  This boils away the observations that out too influential.  
cook.influentials=function(m){
  #this finds those observations that out too influential
  cd=cooks.distance(model = m)
  tossing=which(cd>4/(length(cd)-length(coef(m))))
  cat("cooking boiling off",length(tossing),"of", length(cd),"is",round(100*length(tossing)/length(cd)),"%")
  return(tossing);
}


cook.model=function(m,tossing=-1*cook.influentials(m)){
  #this cooks the model by removing elements that have leverage
  #the idea is to test this with a test set.  
  if(length(tossing)==0){
    message("all good none to boil away");
    return(m);
  }
  f=formula(m)
  subw=m$weights
      subdf=m$model[,all.vars(f)]
  print(f)  
  subdf=subdf[tossing,];  ##note the -1 above!!
  if(is.null(subw)){
    m2=lm(formula(as.character(f)),subdf); 
  }else{
    subw=subw[tossing];
    m2=lm(formula(as.character(f)),subdf,weights = subw); 
  }
  m2=stepAIC(m2,trace=F)  
  cat('m adj.r.squared=',summary(m)$adj.r.squared,
          ' m.sigma=',summary(m)$sigma,
      '\nm2 adj.r.squared=',summary(m2)$adj.r.squared,      
          ' m2.sigma=',summary(m2)$sigma,
      "\n")
  m2;
}

