裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

例数が少ないと検定はできないのか?

2016年03月24日 | 統計学

> 「そもそも、21とか14という少ない検体数では偶然の産物である場合が多すぎて、科学的にどうということは論じられない。そのため検定を行うことはほと んど意味をもたず、だから発表では検定の結果を示さなかったのかもしれない。今後の計画では150人に検体を増やしていくらしいが、少なくとも現段階での データは科学的意味を全く持たない」

 

そんなばかなことはない。

得られているサンプルサイズにおいて結果を判断するのが検定だ。

サンプルサイズが小さいということは,誤差も大きいということ。

その誤差よりも測定結果の差が大きいかどうかをみるのが検定だ。

「ミルクティーを作るとき,ミルクに紅茶をいれるのと,紅茶にミルクをいれるのがおなじかどうか」という話を知らないとはいわせないぜ。

http://analyze1842.blog133.fc2.com/blog-entry-36.html

まさに,「両側F検定(プププッ,変な名称を使うなよ)」だぜ。

 

> 150人のHLAを調べた結果が14人のときと全く同じであるとは考えられない。

 

サンプリングに偏りがないならば,150 人のときの該当数は 14 人のときの該当数の 150/14 倍になることが期待される。もっとも,その場合には,期待される該当数はおおむね 11 ずつ変化するので,誤差は大きいだろうけど。

もし,そうならないということなら,(最初の14人と後の何人かにおいて)サンプリングに偏りがあったということだ(どちらがズレているかはわからないが)。時間経過で傾向が変わったとか,複数の母集団を対象にした(背景因子が異なる集団からサンプリングされた)とか,理由はいろいろ。

さらに,もし該当の割合が大きく変わらないならば,サンプルサイズが大きくなるということは p 値は小さくなるということになる。

サンプルを2倍集めただけで,結論は大きく変わる。

結局の所は,ちゃんとした結果を出すために,どれくらいのサンプルを取らないといけないかを事前に評価してからデータを集める必要があるということ。

「データが増えるとどうなるかわからない」というのは,「適当にデータを集めて検定する」というのと,本質的に同じだ。

> fisher.test(matrix(c(1139, 1827, 24, 18), 2))

    Fisher's Exact Test for Count Data

data:  matrix(c(1139, 1827, 24, 18), 2)
p-value = 0.01625


> fisher.test(matrix(c(1139, 1827, 24*2, 18*2), 2))

    Fisher's Exact Test for Count Data

data:  matrix(c(1139, 1827, 24 * 2, 18 * 2), 2)
p-value = 0.000886

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

曜日の計算(ややリアル編)

2016年03月24日 | ブログラミング

締め切りが 2016/03/24 10:00 AM なので,その 1 分後に公開されるように予約投稿

【概要】
年月日を指定します。曜日を計算してください。
ただし、地球ではなく、遠い昔、はるか彼方の銀河系にあった CodeIQ 星の「ラゲ暦」と呼ばれるカレンダーです。

日本で現在使われているカレンダー(グレゴリオ暦)との違いを下表にまとめました。


項目     ラゲ暦
曜日     t, u, v, w, x, y, z
一年の日数     345 日または344 日
一年の月数     11ヶ月 (A月~K月)
一ヶ月の日数
  ■平年の場合
   A, B, D, F, H, I, K月は31日
   C, E, G, J月は32日
  ■うるう年の場合
   A, B, D, E, F, H, I, K月は31日
   C, G, J月は32日
※ グレゴリオ暦と異なり、うるう年の方が一日短い
うるう年     ラゲ暦年が20で割り切れる年はうるう年
ただし、ラゲ暦年が80で割り切れる年は平年
ただし、ラゲ暦年が4000で割り切れる年はうるう年

なお、ラゲ暦の最初の日、1600年A月1日は、t曜日です。

【入力と出力】
入力は
1600.A.1
のような形で、標準入力から来ます。

ドット区切りで、左から順に 年月日 です。「年」は4~7桁、「日」は1~2桁です。
ラゲ暦は、1600年A月1日以降です。
CodeIQ星は栄華を誇り、このあと百万年ほど繁栄を続けます。
というわけで、入力 1600年A月1日から、1000000年K月31日 までの範囲です。

出力は、曜日です。
アルファベット小文字を一文字出力してください。

【入出力の例】
入力     出力
1600.A.1     t
1601.B.7     x
1602.C.14     v
1603.D.19     z
1604.E.25     w
1605.F.31     u

【補足】

    不正な入力("1700.A.11.B"、"Use your force, Luke"など)に対応する必要はありません。
    グレゴリオ暦と同じく、月の最初の日は 1日 です。0日はありません。

171 文字以下にはできそうになかった

s=scan(file("stdin","r"),"",sep=".")
y=(v=as.integer)(s[1])
E=y%%20|!y%%80&y%%4000
cat(letters[(y*2-y%/%20+y%/%80-y%/%4000-4-E+cumsum(c(0,3,3,4,3,3+E,3,4,3,3,4))[utf8ToInt(s[2])-64]+v(s[3]))%%7+20])

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

曜日の計算(初級)

2016年03月24日 | ブログラミング

締め切りが 2016/03/24 10:00 AM なので,その 1 分後に公開されるように予約投稿

【概要】
年月日を指定します。曜日を計算してください。
ただし、地球ではなく、遠い昔、はるか彼方の銀河系にあった CodeIQ 星の「キュラ暦」と呼ばれるカレンダーです。

項目     キュラ暦
曜日     t, u, v, w, x, y, z
一年の日数     345 日
一年の月数     11ヶ月 (A月~K月)
一ヶ月の日数     A, B, D, F, H, I, K月は31日
                C, E, G, J月は32日
うるう年     ない
なお、キュラ暦500年の最初の日は、t曜日です。

【入力と出力】
入力は
500.A.1
のような形で、標準入力から来ます。
ドット区切りで、左から順に 年月日 です。「年」は3~4桁、「日」は1~2桁です。
キュラ暦は、500年A月1日に始まり、1599年J月26日で終わるので、入力はこの範囲の値になります。

出力は、曜日です。
アルファベット小文字を一文字出力してください。

【入出力の例】

入力     出力
500.A.1     t
501.B.4     u
502.E.7     v
503.J.17     w
504.K.28     z

【補足】
    不正な入力("123.Z.456"、"Force will be with you."など)に対応する必要はありません。
    グレゴリオ暦と同じく、月の最初の日は 1日 です。0日はありません。


(R だと,?)71 文字以下にはできそうになかったので,短くする努力はしない。

f = function(s) {
    ymd = unlist(strsplit(s, "\\."))
    y = as.integer(ymd[1])
    m = which(ymd[2] == LETTERS)
    d = as.integer(ymd[3])
    days = cumsum(c(0,31,31,32,31,32,31,32,31,31,32,31))
    day = (y-500)*345+days[m]+d-1
    letters[day%%7+20]
}
con = file("stdin", "r")
s = readLines(con)
cat(f(s))

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村