質問<3448>2006//
from=ゆりえ
「推定・検定」


1.正規母集団N(μ,σ^2)から大きさ5の標本値が
10.5,11.0,11.2,12.5,12.8,であった。  ①σ^2=0.81(機知)として、母平均μを信頼度    95%で推定せよ。  ②σ^2が未知のとき、母平均μを信頼度    95%で推定せよ。 2.ある政党Aの全国支持率は36%であるという。   ある選挙区から128人無作為抽出してしらべた    ところ政党Aの支持者が39人いた。この選挙区の   政党Aの支持率は全国並といえるか危険度5%   で検定せよ。 3.ある道路のA地点で30秒ごとに通る自動車の台数を   観測したところ、次の結果を得た。 通過台数 0 1  2 3  4  5 6 7 計 観測度数10 13 11 30 13 16 6 1 100   ①平均値Xバーを求めよ。  ②通過台数Xは平均Xバーのポアソン分布に従うといえるか危険度    1%で検定せよ。
以上よろしくご指導を。  ★希望★完全解答★

お便り2006/10/30
from=亀田馬志


う~ん・・・・・申し訳ありませんが、この質問の仕方は

「問題丸投げ」

のニオイがプンプンします。
と言うのも、教科書を調べれば分かる基礎的な問題までも含まれているので、「やる気」をまるで
感じられません。要するに「公式的に」当てはめれば済む問題が含まれているので、単に「答えが
知りたいだけではないか?」と解釈されるのです。これは宜しくありません。
従って、回答も「丸投げ」にします。コンピュータに解かせる事にしましょう。
検定に付いて基本的な事は質問<2506>質問<3251>辺りにも記述しているので、
少なくとも「過去ログを調べて」くらいはして下さい。

今回はフリーの統計解析ソフトRを用いてみましょう。
フリーの統計解析ソフトRをクリックしてパソコン上にインストールして下さい。

<1>
①これ位は基本中の基本です。教科書を参照して解いてみましょう。

②では実際フリーの統計解析ソフトRを起動して下さい。
フリーの統計解析ソフトRを起動したら、左上の「ファイル」メニューから「新しいスクリプト」を開きます。そうすると
フリーの統計解析ソフトR専用のエディタが開きます。
そこに次のように記述します。(ここからコピペしても結構です)

 x <- c(10.5, 11.0, 11.2, 12.5, 12.8) #問題のデータ入力。データ名をxとした。
                                        #c()にデータを入れる。<-は代入と言う意味。(半角で)
 t.test(x, mu=10)                      #t検定用関数。muはどんな数でもいい。

この2行を記入します。#以降はコメントと言って、計算には直接関係ありません。
さて、この2行をエディタに書き込んだ後、その2行をマウスで選択、そして右クリックで
「カーソル行またはRコードを実行」を選べば、R本体(Rconsole)の方に計算結果がズラズラ出てきます。
その中で、

 95 percent confidence interval:

と書いてある部分の下に出てる二つの数字が答えです。
なお、confidence intervalと言うのは、英語で「信頼区間」の事です。

<2>
<1>と同様にエディタに次のように記述して実行して下さい。

 binom.test(39, 128, p=0.36, alternative="two.sided", conf.level=0.95)

binom.testと言う関数は、その名の通り「二項分布」を使った検定用の関数です。

 binom.test(成功数, 試行総数, 対象とする確率, 検定形式, 信頼係数)

の順序で入力します。対象とする確率は今回は36%なので0.36、両側検定なんでalternative="two.sided"と
なり、信頼係数が0.95となっています。
さて、これを実行するとまたズラズラと計算結果が出てきますが、注目すべきはp-valueと書かれた部分です。
これが0.05より小さければ「この選挙区の政党Aの支持率は全国のと差がある」、大きければ「差がないとは
言えない」です。
どの道、「全国並みである」とは統計的には断定できないので、ヘンな問題と言えばヘンな問題です。

<3>
この問題は群馬大学の青木先生の力を借りましょう。
この問題を簡易に解いてくれるフリーの統計解析ソフトRの関数は存在しないようなので。
取りあえず理論的な事は青木先生このページに記述されています。
単純に言うと、これはカイ二乗検定、と言われるものの一種です。
ではエディタに青木先生の作られたpoissondist関数をコピペしましょう。
以下の部分です。

 poissondist <- function(d)
 {
    k1 <- (k <- length(d))-1
    n <- sum(d)
    x <- 0:k1
    lambda <- sum(d*x)/sum(d)

    result <- c(n, lambda)
    names(result) <- c("n", "lambda")

    p <- exp(-lambda)*lambda^x/c(1, cumprod(1:k1))
    p[k] <- 1-sum(p[-k])
    e <- n*p
    table <- cbind(x, d, p, e)
    rownames(table) <- paste("c-", 0:k1, sep="")

    while (e[1] < 1) {
        d[2] <- d[2]+d[1]
        e[2] <- e[2]+e[1]
        x <- d[-1]
        e <- e[-1]
        k <- k-1
    }
    while (e[k] < 1) {
        d[k-1] <- d[k-1]+d[k]
        e[k-1] <- e[k-1]+e[k]
        x <- d[-k]
        e <- e[-k]
        k <- k-1
    }
    chisq <- sum((x-e)^2/e)
    k <- k-2
    p <- pchisq(chisq, k, lower=FALSE)

    result2 <- c("chi sq."=chisq, "d.f."=k, "P value"=p)
    list(result=result, table=table, result2=result2)
 }

取りあえずここまでを一回エディタで実行します。
その後に次のように入力してまた実行しましょう。

 d <- c(10, 13, 11, 30, 13, 16, 6, 1) #問題のデータをdとして入力。
 poissondist(d)                         #青木先生作の関数を引数dとして実行。

これを実行すればまたズラズラと計算結果が出てきます。

①$resultの項目のlambdaの下の数字が答えです。

②計算結果の最後に出てくる「Pvalue」の下の数値に注目です。これが0.01以下だったら
「ポアソン分布に従っていない」、0.01以上だったら「ポアソン分布に従っていないとは言えない」です。
どの道、統計学的には「ポアソン分布に従っている」と言う結論を下す事が出来ないのは2と同じです。

以上です。

(※代入を表す<-の記号はすべて半角です。HTML言語の都合上全角で表記しました。管理人談)


お便り2006/10/31
from=ゆりえ


亀田様

問題丸投げでごめんなさい。他の質問及び解答例を参考に
基本から勉強してみます。今後ともよろしく御願い致します。