Brian Borchers의 대답은 상당히 훌륭합니다. 이상한 특이 치가 포함 된 데이터는 종종 OLS에서 잘 분석되지 않습니다. 그림, Monte Carlo 및 일부 R
코드 를 추가하여이 기능을 확장하려고 합니다.
매우 단순 회귀 모델을 고려 :
와이나는 ϵ나는= β1엑스나는+ ϵ나는= ⎧⎩⎨⎪⎪엔( 0 , 0.04 )31− 31승 . p .승 . p .승 . p .0.9990.00050.0005
이 모델은 경사 계수가 1 인 설정을 따릅니다.
첨부 된 그림은 x 변수가 0에서 1까지 실행되는이 모델에서 100 개의 관측치로 구성된 데이터 집합을 보여줍니다. 플롯 된 데이터 집합에는 이상치 (이 경우 +31)로 나타나는 오류에 대한 하나의 그림이 있습니다. . OLS 회귀선은 파란색으로 표시되고 최소 절대 편차 회귀선은 빨간색으로 표시됩니다. 특이 치에 의해 OLS는 있지만 LAD는 어떻게 왜곡되는지 확인하십시오.
Monte Carlo를 통해이를 확인할 수 있습니다. Monte Carlo 에서 위의 분포를 10,000 번 사용하여 동일한 와 ϵ 를 사용하여 100 개의 관측치 데이터 집합을 생성합니다 . 10,000 번의 복제에서 우리는 대다수의 이상 치를 얻지 못할 것입니다. 그러나 몇 가지 경우에 이상 치가 나오고 매번 LAD가 아닌 OLS를 망칠 것입니다. 아래 코드는 몬테 카를로를 실행합니다. 기울기 계수에 대한 결과는 다음과 같습니다.엑스ϵR
Mean Std Dev Minimum Maximum
Slope by OLS 1.00 0.34 -1.76 3.89
Slope by LAD 1.00 0.09 0.66 1.36
OLS와 LAD는 모두 편향 추정량을 생성합니다 (기울기는 10,000 개의 복제에 대해 평균 1.00입니다). OLS는 표준 편차가 0.34와 0.09보다 훨씬 높은 추정량을 생성합니다. 따라서 OLS는 편향되지 않은 추정기 중에서 가장 효율적이지 않습니다. 물론 여전히 파란색이지만 LAD는 선형이 아니므로 모순이 없습니다. 최소 및 최대 열에서 OLS가 발생할 수있는 와일드 오류를 확인하십시오. LAD가 아닙니다.
그래프와 Monte Carlo에 대한 R 코드는 다음과 같습니다.
# This program written in response to a Cross Validated question
# http://stats.stackexchange.com/questions/82864/when-would-least-squares-be-a-bad-idea
# The program runs a monte carlo to demonstrate that, in the presence of outliers,
# OLS may be a poor estimation method, even though it is BLUE.
library(quantreg)
library(plyr)
# Make a single 100 obs linear regression dataset with unusual error distribution
# Naturally, I played around with the seed to get a dataset which has one outlier
# data point.
set.seed(34543)
# First generate the unusual error term, a mixture of three components
e <- sqrt(0.04)*rnorm(100)
mixture <- runif(100)
e[mixture>0.9995] <- 31
e[mixture<0.0005] <- -31
summary(mixture)
summary(e)
# Regression model with beta=1
x <- 1:100 / 100
y <- x + e
# ols regression run on this dataset
reg1 <- lm(y~x)
summary(reg1)
# least absolute deviations run on this dataset
reg2 <- rq(y~x)
summary(reg2)
# plot, noticing how much the outlier effects ols and how little
# it effects lad
plot(y~x)
abline(reg1,col="blue",lwd=2)
abline(reg2,col="red",lwd=2)
# Let's do a little Monte Carlo, evaluating the estimator of the slope.
# 10,000 replications, each of a dataset with 100 observations
# To do this, I make a y vector and an x vector each one 1,000,000
# observations tall. The replications are groups of 100 in the data frame,
# so replication 1 is elements 1,2,...,100 in the data frame and replication
# 2 is 101,102,...,200. Etc.
set.seed(2345432)
e <- sqrt(0.04)*rnorm(1000000)
mixture <- runif(1000000)
e[mixture>0.9995] <- 31
e[mixture<0.0005] <- -31
var(e)
sum(e > 30)
sum(e < -30)
rm(mixture)
x <- rep(1:100 / 100, times=10000)
y <- x + e
replication <- trunc(0:999999 / 100) + 1
mc.df <- data.frame(y,x,replication)
ols.slopes <- ddply(mc.df,.(replication),
function(df) coef(lm(y~x,data=df))[2])
names(ols.slopes)[2] <- "estimate"
lad.slopes <- ddply(mc.df,.(replication),
function(df) coef(rq(y~x,data=df))[2])
names(lad.slopes)[2] <- "estimate"
summary(ols.slopes)
sd(ols.slopes$estimate)
summary(lad.slopes)
sd(lad.slopes$estimate)