LoginSignup
3
4

More than 5 years have passed since last update.

分散不均一検定

Last updated at Posted at 2016-04-05

 線形回帰分析をする時、誤差項が同じ分布に従うという条件があります。分散不均一の場合、一般線形モデル(GLM、General linear model)で分析することが知られています。分散不均一性を検出する方法は、いくつあります。今日は、例を挙げて、Breusch–Pagan検定を紹介します。
 Breusch–Pagan検定は、下記URLに参考してください。ここで説明しません。
   https://en.wikipedia.org/wiki/Breusch%E2%80%93Pagan_test

簡単に説明します。図Total、A、B、C、D、Eは豆腐の生産量を表しています。生産量を目的関数と、気温、気温差、降水量を説明変数とし、モデル構築します。
分散不均一11.png

図Total、A、B、C、D、Eの真ん中部分の変動は激しい。一方、気温、気温差、降水量の変動はそんなに差はない。直観に、誤差項の分散は同じではないと判断します。では、検定してみましょう。

分散不均一.png

検定の結果は、分散不均一であることが分かりました。

コードを添付します。

BP.rb
# データの読み取り
tofu<-read.csv("tofu.csv",header=T,sep=",",fill=T)
# 欠損値の処理
tofu<-tofu[-(51:52),]
tofu<-tofu[-46,]  
BP<-matrix(0,1,6)
colnames(BP)<-c("total","A","B","C","D","E")
for (i in 1:6) {
  # 回帰
  R<-lm(tofu[,i]~tofu[,7]+tofu[,8]+tofu[,9])
  x<-as.matrix(tofu[,6:9])
  x[,1]<-1
  xx<-as.matrix(R$coefficients)
  # 残差の自乗を計算する
  u2<-(tofu[,2]-x%*%xx)^2  
  # 補助式の回帰
  RR<-lm(u2~tofu[,7]+tofu[,8]+tofu[,9])    
  # BP検定の補助回帰式の決定係数
  R2<-summary(RR)$r.squared    
  BP[1,i]<-nrow(tofu)*R2
}
# True⇒分散均一  False⇒分散不均一
BP<=qchisq(0.05,3,lower.tail=FALSE)
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4