遊び tokidoki 仕事

数学と音楽と教育と遊び

| おしごと - きょういく - がくせい - ゼミ - イベント | すうがく - おんがく - 数理音楽 - DTM - かがく - scratch
| Art - photo - おきにー - Tips - ものもう - あれこれ | About - Top

それでも正しいと思うからやり続けるだけなのさ

何がって,具体的に確率的現象を体験させるために
講義中にあれこれ実験してもらう作業のことさ.

今年は10年ぶりにがらりとやり方を変えた統計とコンピュータ,
記述統計が片付いてようやく推測統計学だ.
例年,大数の法則と中心極限定理を雰囲気だけでもつかんでもらおうと,
あれこれシミュレーションをやって見せるのだが,
全くと言っていいほど反応の無い,この講義中に最も無力感を味わう場面でもある.

さて,今年も性懲りもなく挑戦してみた.
ただ今回は大きく実験を取り入れてきたので,
大数の法則が容易に体験できそうな実験をと探し歩いてたら,
啓林館のページに中学生向けの授業実践に確率を扱ったものがあり,
それを利用させてもらった.www.shinko-keirin.co.jp
コインとペットボトルのキャップとピンをガラガラと振って,
それぞれが下の写真のようになる確率を予想して大きい順に並べよ,という題材だ.
f:id:okiraku894:20150601113132j:plain
この実験の最も良いところは,結果がどうなるかちょっと分からない,
人によって意見が分かれるという点だ.


さて2人一組になって下記の容器を50回ずつ振ってもらう.
一人は記録係となりEXCELに裏表をチェックしていく.
その後,10回毎のデータをGoogle formにて全員から採集,
一方,彼らのEXCELシートには表の比率が時系列と共にグラフ化されて
次第にそれぞれがある確率に近づいていく様子が描かれるという仕組みだ.
f:id:okiraku894:20150601112752j:plain

初めての試みでもあり,時間配分がどうなるのかさっぱりで始めたのだが,
無事実験が終わりデータも集まり,
そしてチェビシェフ不等式→大数の弱法則の証明まで90分の時間内に完了した.
10回毎に区切ったデータを送ってもらったのは他でもない,
その先にある中心極限定理をも現象として見せられるかもしれない,と期待したからだった.
もっとも一人50回,これがおよそ100人,わずか500個の標本平均値が集まるだけだから,
昨年度まで行っていた「ナンチャッテ世論調査」のように綺麗には正規分布は現れない.
(実際集めてみたが,いまいちだった...)

何にしてももらったデータをもとに相対度数を時系列表示すると以下のようになった.
f:id:okiraku894:20150607135854p:plain
これによれば「コイン」>「ピン」>「キャップ」となる.
だが問題はここからだ.本当にそう断言して良いのか,ということだ.
50回程度では確率が逆転しそうなところもあり怪しいわけだが,
この先の雰囲気からすれば,もうひっくりかえることは「無さそう」だ.
でも「無さそう」であって,「無い」という保証はない.
そして,このあやふやさに「信頼度」という概念を従えて
ある程度の白黒を付けるのが中心極限定理というわけだ.
さっきのグラフに「平均±2σ」のラインを書き加えてみよう.
f:id:okiraku894:20150607135855p:plain
中心極限定理が保証するのは標本平均が「平均±2σ」程度に収まるのが95%ということ,
だから各色の点線を超えて確率が逆転してしまうのは5%以下だ,と言っている.
上記グラフでは1300個の標本平均だと±3σでも余裕で確率が分離できている.
±3σは信頼度99%に相当する.
だから,この実験が間違った結論を導いている確率は1%以下だということだ.

しかし,先ほども書いたように集まるサンプル数が少ないため,
正規分布が見えるほどにならない.
というわけで,この先は連続な確率変数でのシミュレーションとして
過去数年,講義中に提示し続けてきたn本ダーツの重心の分布を見てもらうことにする.
といってもEXCELの計算量の関係から16本程度までしか実験していないのだが,
それでも次第に重心分布がボードの中心に収束していくとともに,
そのヒストグラムが一様分布から正規分布へと次第に形を変えていく様子が見えるはずだ.
f:id:okiraku894:20150607135853g:plain
f:id:okiraku894:20150607145228p:plain

と,こんな具合に今年もこの概念を何とか分かってもらうべく,
色々と道具立てして準備してみているのだが,
真にもって残念なのは,こういった実験中,ひたすら寝ている学生がいること.
もちろんここは大学,学びたくない者を叩き起こすなどという
園児相手のような低レベルなことをするわけがない.
そんな彼らに言いたいのは,いつも言っていること.
(とはいっても,この頃は当ブログを見ている現役学生もごく少数なわけだが)
自分の学びすら大切にできない者が
他者を学びに導けるわけがない.

まぁいい.
それでも自分の活動は少なくともその目指すところは間違っていないと思うから,
この先も淡々と続けるだけだ.

おっと,忘れずいつものも貼っておこう.

人を伸ばす力―内発と自律のすすめ

人を伸ばす力―内発と自律のすすめ

基数システムで遊び倒す

ネイピアの骨ってのは古来知られた計算盤として
しばしば教育現場でも取り扱われるネタだろう.
f:id:okiraku894:20150508124933p:plain
でも,Genaille-Lucasの計算盤は日本ではあまり有名ではないようだ.
自分も某講義の下準備のため調べていくうちに見つけた.
Genaille–Lucas rulers - Wikipedia, the free encyclopedia
で,やっぱり作ってしまった,Scratchで.
f:id:okiraku894:20150508145846g:plain
↓複数桁自然数×一桁のシミュレーションをやってくれる.

おまけに,Genaille-Lucasには割り算バージョンもあるのだ.

さて,毎度こちらがあれこれネタを用意して見せてきた某教科学.
そろそろテレビのように見てる学生らにもパフォーマンスを出してもらいたい.
ということでこのGenaille-Lucas計算盤を彼らに設計してもらうことにした.

初めにネイピアの骨で計算棒というアイディアに触れてもらって
それを踏まえて一部のみ分かるようにしたGenaille-Lucas計算棒一覧を渡し,
これを完成してもらう作業を課した.
もちろん,使い方そのものも自分たちで考えてもらうことから始めた.
これまで散々筆算で掛け算をやってきただろうし,
おまけに直前にネイピアの骨で繰り上がりの仕組みを再確認したから,
さすがに皆仕組みまで自ら発見するだろうと思いきや,それがなかなか.
最後までこの仕組みを納得できないで
見た目の法則だけで完成させたものもちらほら.

学生らがいかに形式的にしか物事を見ないで過ごしているのか
それを改めて思い知った場面だった.

芸は身を滅ぼす?

度々,免許更新講習やら訪問授業やら高大連携やらで
有名な27 card trickをやってきたのだけど,
その仕組みを説明するときPower Pointでのアニメーションでは説得力がなかった.
しかしBASICでやるのもビジュアルにあまり楽しくないし,ってことでScratchで作ってみた.
f:id:okiraku894:20150425154127p:plain
別に27枚でなくても良いのだけど3進数表示にマッチすることだし,
基数システムの話題に載りやすいので27枚でやっている.

スタートさせると27枚が番号付きで積みあがるので,その中から1枚クリックして選ぶ.
そしてDealボタンを押すと3つの山に配られ,
その後選んだカードのある山を真ん中にして3山を重ねる.
またDealボタンを押す...を多くても3回繰り返せば,
選んだカードは必ずB山の真ん中にくる.
その様子が見えるように作った.

さてなぜ必ず真ん中に来るか.
それは選んだカードのある山を真ん中に挟む操作が,
3進数で番号付けした各桁を順に特定することになるからだ.
そしてこの考え方を応用すると色々カードマジックができそうだ.
しぶしぶ講義する羽目になった「教科学」で実験するかもしれない.
そうなんだ,いつもは文系や一般人や高校生相手の話題だから
それほど突っ込んだ話にしなくても喜んでくれるのだけど,
「教科学」は数学の学生相手.すぐに見破られてしまうので,
ネタ探しに毎週土日を潰す羽目になってしまった.

「芸は身を助ける」というのが一般的に知られているが,
一方で「芸は身の仇」とも言うらしい.
何だろう,何か間違った方向にどんどん進んでいる気がしてならない.
(はいそこ,「今さら」とか突っ込まない.)

こどもたちはやり方を知りたいと思うと,それを学習するのです.

さあ,新年度開始.だから初年次演習も始まる.
過去2年やってみたが,何か地に足がついた講義になっている気がしない.
それは何より私自身,主張はあれど
それを実現するきちんとした基盤を持てないでいるからだ.
それでも明日から始まる.今回,もう少しだけ形を変えてみたい.
何か学生が自発的に「学び」に気付く方法は無いものかと.

で,再びふらふら歩いていたら,TEDの良いトークにぶつかった.
スガタ・ミトラの自己学習にまつわる新しい試み,だ.www.ted.com
そこから印象深い言葉を幾つか拾おう.
「こどもたちはやり方を知りたいと思うと,それを学習するのです.」
またこのトークではアーサー C.クラークと対談したシーンがあるのだが,
そこでのアーサーの言葉.
『機械で替えがきく教師は 替えるべきだ』
『子どもたちが興味を抱いたとき,そこに教育が生まれる』

それに続いて,
「これは間違いなく 人の役にたちますよ.
 子どもたちは やり方をすぐ理解して夢中になって面白いことを探しますからね.
 興味を持てれば教育を受けているのと同じことです.」
そしてトークの最後は次で締めくくられる.
教育は自己学習システムです.そこでは学習が創発的現象なのです.
実験的に証明するには数年かかるでしょうがやってみるつもりです.」

とりあえず,明日からの初年次ではこのトークの一部を紹介するつもりだ.
教えられることに慣れ過ぎた学生に,小さな変化を起こす導火線になればと.

統計とコンピュータも方法を大きく変えたいと思い,プロジェクト学習なんかも視野に入れて
(もちろんとてもそんな大がかりなことはできないけど)講義を考え直している.
その参考とした書物の中に次の言葉があった.
そうあって欲しいという教育者の願いが込められた言葉に思える.

「子どもは教えないと何も知らないかもしれません.
しかし大事なことはすでに知っている気もします.
人間は知識の入れ物ではありません.
その深いところに『高き心』や『知』を希求する魂や
『考える』ということでしか良き未来への道はないことを知っているかのような存在
と私には感じます.」

プロジェクト学習の基本と手法―課題解決力と論理的思考力が身につく

プロジェクト学習の基本と手法―課題解決力と論理的思考力が身につく

おっと,いつものあれももちろん.

人を伸ばす力―内発と自律のすすめ

人を伸ばす力―内発と自律のすすめ

箱ひげ図自動作成マクロ作ったよ

統計教育の必要性が叫ばれ始めて随分と経つそうだ.
そして今年度もやがて始まる講義,統計とコンピュータ用に作ってみた.
講義内容・方法を全面的に変えようと画策しているが,未だ目処が立たず.
ちょっと気が滅入ってきている今日このごろ.
f:id:okiraku894:20150402190751p:plain
五数要約と平均値が書かれていれば,その範囲を選択して【Ctrl+b】をすると
そのシートに箱ひげ図ができあがる,というものだ.
2015/04/27 修正!
項目の方向を自動判定させず常に
横方向が項目となるようにした.
余分な系列が表示されていたので消した.
散布図で平均の位置を描いていたのを変更.
項目が文字だとエラーが出るので訂正した.

あちこちサイトを回ってかき集めた情報で何とか作ったシロモノなので,ソースは汚い.
サーフィンしてみてわかったけど,苦労している人が多そうだから
ここにのっけておく.結構需要高いと思う.
あ,エラー対策してないから,間違った範囲選択でCtrl+bするとマクロ画面に変わります.
20150427_boxplot_macro.xlsm 直

Sub boxplot()
'
' boxplot Macro
'
' 五数要約(上から順に,最大・第3四分位・中央・第1四分位・最小値・平均値)とした表から
' 箱ひげ図を作る
'
' Ver. 2015/04/27
' http://tokidoki.hatenablog.jp/
'
' Keyboard Shortcut: Ctrl+b
'
    Dim box0, dWisker, uWisker, Mean
    
    ActSht = ActiveSheet.Name 'アクティブシート名取得
    Set ActArea = Selection
    ActCell = ActArea.Address '選択範囲のアドレスを取得(項目名,最大~平均値を囲う)
    box0 = Range(ActCell)
    UB = UBound(box0, 2)
    UBB = UBound(box0, 1)
    ReDim boxName(1 To UB)  '(1,i):項目名
    ReDim boxLB(1 To UB) '(2,i):箱の下境界
    ReDim boxMid(1 To UB) '(3,i):中央線まで
    ReDim boxUB(1 To UB) '(4,i):箱の上境界まで
    ReDim dWisker(1 To UB) '(5,i):下ヒゲ長
    ReDim uWisker(1 To UB) '(6,i):上ヒゲ長
    ReDim Mean(1 To UB)  '(7,i):平均値
    
    '五数要約からグラフ表示用のデータに変換
    For i = 1 To UB
        boxName(i) = box0(1, i)
        boxLB(i) = box0(5, i)
        boxMid(i) = box0(4, i) - box0(5, i)
        boxUB(i) = box0(3, i) - box0(4, i)
        dWisker(i) = box0(6, i) - box0(5, i)
        uWisker(i) = box0(2, i) - box0(3, i)
        Mean(i) = box0(7, i)
    Next i
    
    'メインの箱の系列データをセット,グラフをSheet内に配置
    Charts.Add
    With ActiveChart
        .ChartType = xlColumnStacked
        .PlotBy = xlRows
        .SeriesCollection(6).Delete
        .SeriesCollection(5).Delete
        .SeriesCollection(4).Delete
        .SeriesCollection(1).XValues = boxName
        .SeriesCollection(1).Values = boxLB
        .SeriesCollection(2).Values = boxMid
        .SeriesCollection(3).Values = boxUB
        .HasLegend = False
        .Location Where:=xlLocationAsObject, Name:=ActSht
    End With
    
    'メインの箱の色と線を変更
    ActiveChart.SeriesCollection(1).Select
    Selection.Format.Fill.Visible = msoFalse
    ActiveChart.SeriesCollection(2).Select
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoThemeColorAccent5
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = 0.6
        .Transparency = 0
        .Solid
    End With
    With Selection.Format.Line
        .Visible = msoTrue
        .ForeColor.RGB = RGB(0, 0, 0)
        .Transparency = 0
    End With
    ActiveChart.SeriesCollection(3).Select
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoThemeColorAccent5
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = 0.6
        .Transparency = 0
        .Solid
    End With
    With Selection.Format.Line
        .Visible = msoTrue
        .ForeColor.RGB = RGB(0, 0, 0)
        .Transparency = 0
    End With
    
    '上下のひげ.ただし下ヒゲもxlErrorBarIncludePlusValuesで行ったので,
    '使う値dWisker()は負になるよう計算してある.
    With ActiveChart
        .SeriesCollection(3).HasErrorBars = True
        .SeriesCollection(3).ErrorBar Direction:=xlY, Include:= _
            xlPlusValues, Type:=xlErrorBarTypeCustom, amount:=0
        .SeriesCollection(3).ErrorBar Direction:=xlY, Include:= _
            xlErrorBarIncludePlusValues, Type:=xlErrorBarTypeCustom, amount:=uWisker
        .SeriesCollection(1).HasErrorBars = True
        .SeriesCollection(1).ErrorBar Direction:=xlY, Include:= _
            xlErrorBarIncludePlusValues, Type:=xlErrorBarTypeCustom, amount:=dWisker
    End With
    
    '平均値をマーカーのみの折れ線グラフで追加
    With ActiveChart
        .SeriesCollection.NewSeries
        .SeriesCollection(4).Values = Mean
        .SeriesCollection(4).ChartType = xlLineMarkers '折れ線グラフ
        .SeriesCollection(4).Select
    End With
    With ActiveChart.SeriesCollection(4)
        .MarkerStyle = 4 'マーカーは×
        .MarkerSize = 8
        .Format.Fill.Visible = msoFalse 'マーカーを塗りつぶさない
        .Format.Line.Visible = msoFalse '折れ線は消す
        .MarkerForegroundColor = RGB(255, 0, 0) 'マーカーは赤で
    End With
    
    ActiveChart.Axes(xlValue).MajorGridlines.Delete ' 横目盛線消去
End Sub