目的 Chow test を行う 使用法 chow(dat1, dat2) 引数 dat1 第一データセット dat2 第二データセット ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/chow.R", encoding="euc-jp") # チョウ検定 chow <-function(dat1, # 第 1 データセット dat2) # 第 2 データセット { ess <- function(dat) # 残差平方和を返す関数 { nc <- ncol(dat) ans <- lm(dat[,nc] ~ dat[,-nc]) # 右端の列が従属変数 return(sum(ans$residuals^2)) # 残差平方和 } method <- "Chow 検定" data.name <- paste(deparse(substitute(dat1)), "and", deparse(substitute(dat2))) dat1 <- subset(dat1, complete.cases(dat1)) # 欠損値を持つケースを除く dat2 <- subset(dat2, complete.cases(dat2)) # 欠損値を持つケースを除く ess12 <- ess(dat1)+ess(dat2) essc <- ess(rbind(dat1, dat2)) df1 <- ncol(dat1) # 第 1 自由度 df2 <- nrow(dat1)+nrow(dat2)-2*df1 # 第 2 自由度 f <- (essc-ess12)*df2/(df1*ess12) # 検定統計量 p <- pf(f, df1, df2, lower.tail=FALSE) # P 値 return(structure(list(statistic=c(F=f), parameter=c(df1=df1, df2=df2), p.value=p, method=method, data.name=data.name), class="htest")) } 使用例 > dat1 <- matrix(c( + 1.2, 1.9, 0.9, + 1.6, 2.7, 1.3, + 3.5, 3.7, 2.0, + 4.0, 3.1, 1.8, + 5.6, 3.5, 2.2, + 5.7, 7.5, 3.5, + 6.7, 1.2, 1.9, + 7.5, 3.7, 2.7, + 8.5, 0.6, 2.1, + 9.7, 5.1, 3.6 + ), byrow=TRUE, ncol=3) > > dat2 <- matrix(c( + 1.4, 1.3, 0.5, + 1.5, 2.3, 1.3, + 3.1, 3.2, 2.5, + 4.4, 3.6, 1.1, + 5.1, 3.1, 2.8, + 5.2, 7.3, 3.3, + 6.5, 1.5, 1.3, + 7.8, 3.2, 2.2, + 8.1, 0.1, 2.8, + 9.5, 5.6, 3.9 + ), byrow=TRUE, ncol=3) > > chow(dat1, dat2) Chow 検定 data: dat1 and dat2 F = 0.0715, df1 = 3, df2 = 14, p-value = 0.9742