Chow 検定 Last modified: Aug 21, 2009
目的
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
直前のページへ戻る
E-mail to Shigenobu AOKI