5. 일반화 회귀 분석 (GLS) (R)
출처: Montgomery, D. C., Peck, E. A., & Vining, G. G. (2012). Introduction to linear regression analysis (Vol. 821). John Wiley & Sons.
데이터: http://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=9068&itemId=0470542810&resourceId=36322
5장
목차
- GLS
- WLS
1. Generalized Least Squares¶
Constant variance 가정: $var(\mathbf{\epsilon})=\sigma^{2} \mathbf{I}$
Constant variance 가정 성립 안할 때: $var(\mathbf{\epsilon})=\sigma^{2} \mathbf{V}$, 여기서 $\mathbf{V}$는 known, uncorrelated(diagonal)
=> Constant variance 가정 성립 안할 때 Variance에 대한 추가적인 가정
$\mathbf{V}$ nonsingluar and positive definite => $\mathbf{V}=\mathbf{K}^{'}\mathbf{K}=\mathbf{K}\mathbf{K}$인 nonsingular symmetric $\mathbf{K}$ 존재
$\hat{ \mathbf{\beta} }_{GLS}=(\mathbf{X}^{'}\mathbf{V}^{-1}\mathbf{X})^{-1}\mathbf{X}^{'}\mathbf{V}^{-1}\mathbf{y}$
$Var(\hat{ \mathbf{\beta} }_{GLS})=\sigma^{2}(\mathbf{X}^{'}\mathbf{V}^{-1}\mathbf{X})^{-1}$
$var(\mathbf{\epsilon})=\sigma^{2} \mathbf{V}$ 일 때 $\hat{ \mathbf{\beta} }_{GLS}$는 BLUE (Best linear unbiased estimator) of $\mathbf{\beta}$
2. Weighted Least Squares¶
$\mathbf{W}=\mathbf{V}^{-1}$
$diag(\frac{1}{w_{1}},..,\frac{1}{w_{n}})$
WLS를 사용하기 위해서는 $\frac{1}{w_{1}},..,\frac{1}{w_{n}}$가 known이어야 됨
1) 산업에 대한 지식 사용
2) Residual analysis를 통해 $Var(\epsilon_{i})=\sigma^{2}x_{ij}=>w_{i}=\frac{1}{x_{ij}}$와 같은 단서를 찾음
setwd('C:/Users/bki19/desktop/Linear_Regression/data')
df<-read.csv('./Restaurant_Food_Sales.csv')
colnames(df)<-c('Income','Expense')
df
Restaurant Food Sales data
음식 판매로 인한 30개 음식점의 월평균 수입
Y:음식 판매로 매달 평균 수입
X:이에 상응하는 30개 음식점의 연 광고비 지출
fit<-lm(Income~Expense,data=df)
par(mfrow=c(2,2))
plot(fit)
Fitted value와 residual이 점점 퍼지는 것으로 보아 constant variance assumption이 성립 안함
원래 데이터를 봤을 때 데이터의 몇개 군집이 있어 보임(near neighbor로 보임)
Cluster<-list(c(1:3),c(4:5),c(6),c(7:11),c(12:16),c(17:22),c(23),c(24:25),c(26),c(27:30))
n<-length(Cluster)
n
Cluster_mean<-rep(0,n)
Cluster_sd<-rep(0,n)
for (i in 1:n){
Cluster_mean[i]<-mean(df$Expense[Cluster[[i]] ])
Cluster_sd[i]<-sd(df$Income[Cluster[[i]] ])^2
}
Cluster_mean
Cluster_sd
$\hat{s}_{y}^{2}=\hat{\beta_{0}}+\hat{\beta_{1}}\bar{x}$
클러스터의 분산과 분평으로 회귀분석 적합
df_sd_mean<-na.omit(cbind(Cluster_mean,Cluster_sd))
df_sd_mean<-data.frame(df_sd_mean)
df_sd_mean[,1]<-round(df_sd_mean[,1],1)
df_sd_mean
fit_sd<-lm( Cluster_sd ~Cluster_mean,data=df_sd_mean)
summary(fit_sd)
x 값에 따라 군집을 나눴을 때 y의 분산이 x값에 따라 어떻게 변하는지 살펴 봄
클러스터 평균 $\bar{x}$이 $s_{y}^{2}$와 근사적으로 linear 함
=> 클러스터마다 분산의 특징이 다르기 때문에 WLS 사용
=> $w=\frac{1}{s_{y}^{2}}$로 설정
Weights<-1/predict(fit_sd, newdata=data.frame(Cluster_mean=df$Expense))
fit_wls<-lm(Income~Expense,data=df,weights=Weights)
summary(fit)
summary(fit_wls)
par(mfrow=c(2,1))
plot(fitted(fit),resid(fit))
plot((Weights^0.5)*fitted(fit_wls),((Weights)^0.5)*resid(fit_wls))
$w_{i}^{1/2}e_{i}$ vs $w_{i}^{1/2}\hat{y}_{i}$ plot 확인
- OLS fit 보다 나음
WLS 사용시 주의점
- 변수가 많으면 이러한 클러스터 분석 시각적으로 보기 어려운 문제 있음
- weight 추정할 때 x 값이 작으면 음수가 생길 수 있음
- weight가 합리적인지 확인
댓글 쓰기
0 댓글