Rev 88598 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/stats/man/line.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2018 R Core Team% Distributed under GPL 2 or later\name{line}\alias{line}\alias{residuals.tukeyline}\title{Robust Line Fitting}\description{Fit a line robustly as recommended in \emph{Exploratory Data Analysis}.Currently by default (\code{iter = 1}) the initial median-median line is \emph{not} iterated (asopposed to Tukey's \dQuote{resistant line} in the references).}\usage{line(x, y, iter = 1)}\arguments{\item{x, y}{the arguments can be any way of specifying x-y pairs. See\code{\link{xy.coords}}.}\item{iter}{positive integer specifying the number of\dQuote{polishing} iterations. Note that this was hard coded to\code{1} in \R versions before 3.5.0, and more importantly that suchsimple iterations may not converge, see \I{Siegel}'s 9-point example.}}\details{Cases with missing values are omitted.Contrary to the references where the data is split in three (almost)equally sized groups with symmetric sizes depending on \eqn{n} and\code{n \%\% 3} and computes medians inside each group, the\code{line()} code splits into three groups using all observationswith \code{x[.] <= q1} and \code{x[.] >= q2}, where \code{q1, q2} are(a kind of) quantiles for probabilities \eqn{p = 1/3} and \eqn{p = 2/3}of the form \code{(x[j1]+x[j2])/2} where \code{j1 = floor(p*(n-1))}and \code{j2 = ceiling(p(n-1))}, \code{n = length(x)}.Long vectors are not supported yet.}\value{An object of class \code{"tukeyline"}.Methods are available for the generic functions \code{coef},\code{residuals}, \code{fitted}, and \code{print}.}\references{\bibinfo{R:Velleman+Hoaglin:1981}{note}{Chapter 5}%% MM has C version of the Fortran code for rline() there\bibshow{R:Tukey:1977,R:Velleman+Hoaglin:1981,R:Emerson+Hoaglin:1983,R:Johnstone+Velleman:1985}}\seealso{\code{\link{lm}}.There are alternatives for robust linear regression more robust andmore (statistically) efficient,see \code{\link[MASS]{rlm}()} from \CRANpkg{MASS}, or\code{\link[robustbase]{lmrob}()} %% \code{lmrob()}from \CRANpkg{robustbase}.}\examples{require(graphics)plot(cars)(z <- line(cars))abline(coef(z))## Tukey-Anscombe Plot :plot(residuals(z) ~ fitted(z), main = deparse(z$call))## Andrew Siegel's pathological 9-point data, y-values multiplied by 3:d.AS <- data.frame(x = c(-4:3, 12), y = 3*c(rep(0,6), -5, 5, 1))cAS <- with(d.AS, t(sapply(1:10,function(it) line(x,y, iter=it)$coefficients)))dimnames(cAS) <- list(paste("it =", format(1:10)), c("intercept", "slope"))cAS## iterations started to oscillate, repeating iteration 7,8 indefinitely}\keyword{robust}\keyword{regression}