35.1%という割合があったとする。
これは何人にアンケートした結果であると
考えることができるだろうか?

母集団が50人以下だったとすると、
37人である。13/37 = 0.351351... となる。
そして、他のどんな組み合わせの数で割り算をしても、
50以下なら、0.351に近い数にはならない。


この考え方は、もっと応用できる。


中身より、データが気になったこのページ↓

http://beautystyle.jp.msn.com/express/ranking/008_1/default.htm

有効回答人数が 414人で、結果として、

26.7% 13.7% 13.2% 12.0% 11.8%
19.3% 13.0% 12.6% 10.6% 8.7%

といった数字が並んでいる。

僕は意地悪なので、対象人数が正しいだろうか、
こういう数字を出す時に、書き写し間違いが無い
だろうか、確かめたい気になった。




ということで、Rubyでプログラミング↓

何をしているかというと、414人または、別の数を分母とした時に、
上記の数が比率して出現しうるかどうかを考えた。(比率を割り算で
出した時に、四捨五入でも切り捨てでもどちらでもいいとする。)
さらに、いろんな分母に対して、10個の数のうち何個が出現可能で
あるかを数えることとした。

require 'matrix'

def match_round ( d, y , n ) # shishagonyuu
j = ( n * ( 1.0 * y / (10**d) ) ) . round
y == ( 1.0 * j * (10**d) / n ) . round ? 1 : 0
end

def match_truncate ( d, y , n ) # kirisute
j = ( n * ( 1.0 * y / (10**d) ) ) . ceil
y == ( 1.0 * j * (10**d) / n ) . round ? 1 : 0
end



def show_matches( a, d )
print a[0],"..",a[-1],": "
p d.collect { | di | Vector.elements( a.collect{|i|
1-(1-match_round( 3, di ,i ) ) * ( 1- match_truncate( 3, di ,i ) )
#match_round( 3, di ,i )
} ) } \
.inject{|r,i| r+i} . to_a . collect {|x| x.to_i}
end


d = [267,137,132,120,118, 193,130,126,106,87]
#d += [ 281,189, 139, 106, 70]
#d = d + [82,502,298,118]
## d = d+ [ 214,188,177,173,122 ]
#d= d+[ 173,492,252,43, 24]

a = (400..424).to_a ; show_matches(a,d)
a = (425..449).to_a ; show_matches(a,d)
a = (450..474).to_a ; show_matches(a,d)
a = (475..499).to_a ; show_matches(a,d)


結果は以下の通り。

400..424: [4, 6, 3, 2, 5, 4, 3, 4, 6, 6, 4, 0, 3, 2, 6, 8, 8, 5, 2, 3, 3, 1, 4, 7, 9]
425..449: [6, 3, 3, 1, 2, 5, 6, 6, 4, 4, 6, 4, 4, 6, 6, 5, 4, 4, 3, 3, 6, 7, 3, 3, 4]
450..474: [5, 6, 3, 6, 6, 3, 3, 4, 3, 5, 7, 8, 6, 3, 2, 3, 4, 5, 7, 5, 5, 5, 4, 4, 3]
475..499: [5, 8, 4, 3, 3, 2, 4, 6, 9, 7, 6, 5, 2, 2, 2, 5, 8, 8, 7, 5, 3, 2, 3, 6, 7]

414を分母とすると、6個しか適合しない。
ところが、424を分母とすると、10個中、9個適合する。

▽ このことにより、以下の結論が導かれる。

ひょっとしたら、上記のアンケートは、414人ではなくて、
424人が分母であった可能性がある。そして、比率に関しては、
10個の数字のうち、9個は正しく書き写したが、1個書き間違えた
のではないか、とも考えられる。