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

Made with Macintosh