2008-04-14

統計学I

自然環境,社会環境を問わず,世の中の現象は大なり小なり偶然変動を含んでいます。統計学はそのような偶然変動を含むデータから有用な情報を抽出する方法を提供します。講義では,データのまとめ方及び推測統計学の考え方について講述します。平均,分散,相関などデータの代表値の意味を理解するとともに,統計的推定や統計的仮説検定の概念を把握することを目標とします。

教科書は「入門 統計学」橋本智雄著 共立出版です。
ここには講義に関するコメントを気軽に書いてください。

講義中に説明した統計解析をパソコンを使って実行するための方法もこのブログに書いていきます。

講義で説明した度数分布表やヒストグラムを、表計算ソフトのエクセルを使って作成する方法を説明します。

準備

最初に一度だけ次の操作が必要です。
左上の丸いボタンを押して、「Excelのオプション」をクリックします。そして左側の「アドイン」をクリックして、下の「管理:Excelアドイン」の横の「設定」をクリックします。

するとアドインの画面に切り替わるので「分析ツール」にチェックをつけてOKをクリックします。 「インストールしますか」と聞かれたら「はい」と答えます。

例1.1 度数分布表とヒストグラム

教科書例1.1のデータをエクセルに入力します。
次に、階級の境界の数字をC2セル以降に入力します。

右上の「データ分析」をクリックして「ヒストグラム」をクリックしてOKを押します。
以下のように入力してOKを押します。

教科書で度数と書かれている部分が、エクセルでは頻度と表示されます。その右には累積相対度数が表示されます。
教科書と同じ結果になりましたか?もし違うなら、その理由を考えてみてください。

2008-04-11

統計学入門

自然環境,社会環境を問わず,世の中の現象は大なり小なり偶然変動を含んでいます。統計学はそのような偶然変動を含むデータから有用な情報を抽出する方法を提供します。講義では,データのまとめ方及び推測統計学の考え方について講述します。平均,分散,相関などデータの代表値の意味を理解するとともに,統計的推定や統計的仮説検定の概念を把握することを目標とします。

教科書は「入門 統計学」橋本智雄著 共立出版です。
ここには講義に関するコメントを気軽に書いてください。

シラバスにおいて未定だった計算機実習は、総合情報基盤センター情報実習室2にて行います。日程は講義の進捗に応じて、講義中にお知らせします。

第一章の内容が全て終わったら、情報基盤センターで実習を行いますが、既にエクセルを使える人で「第一章が終わるまで待てない!」という人は以下の方法でやってみてください。なお、今回はOffice2003までの使い方を説明していますが、情報基盤センターではOffice2007を使います。

準備

最初に一度だけ次の操作が必要です。
  1. エクセルを立ち上げて、ツール→アドインを選びます。

  2. 分析ツールにチェックをつけて、OKを押します。

例1.1 度数分布表とヒストグラム

教科書例1.1のデータをエクセルに入力します。
次に、階級の境界の数字をC2セル以降に入力します。

ツール→分析ツールを選びます。

ヒストグラムを選んでOKを押します。

以下のように入力してOKを押します。

教科書で度数と書かれている部分が、エクセルでは頻度と表示されます。 教科書と同じ結果になりましたか?もし違うなら、その理由を考えてみてください。

2008-04-10

Office2007とVBA

この講義では広く用いられているMicrosoft Excelを用いてデータ解析を行う方法を説明します。
まずExcelを立ち上げましょう。

初めて使う時にはいくつか聞かれますので、共にOKを押してください。


まず準備です。左上の丸いボタンを押して、「Excelのオプション」をクリックします。そして「[開発]タブをリボンに表示する」にチェックをつけてOKを押します。

すると右端に「開発」が表示されるのでクリックして、マクロのセキュリティをクリックして、「すべてのマクロを有効にする」に●をつけてOKを押します。


これで準備は完了です。
ではマクロでどんなことが出来るか見てみましょう。「マクロの記録」をクリックしてください。マクロの名前を聞かれますので、ここはそのままOKを押します。


何か適当にExcelの操作をしてください。ここでは1から5の数字を入力してみました。
そして、記録終了をクリックしてください。

すると、Excelは今の操作を全部覚えています。確かめるために、今入力したものを全部消してから、今度は「マクロ」をクリックしてください。するとどのマクロを実行するか聞かれます。今は一つしかないのでそのまま「実行」を押します。
すると、先ほど自分でやったことがそのまま繰り返されたはずです。


一体どんな仕組みになっているか見るために「Visual Basic」のボタンを押します。するとVisual Basicの画面が開くので、左側のModule1をダブルクリックするとこの画面になります。


先ほど「マクロの記録」をクリックしてから「記録終了」をクリックするまでの操作が全てプログラムに書かれたのです。今すぐ覚える必要はありませんが、ActiveCell.FormulaR1C1 = "1"は選択しているセルに1を代入しなさい、Range("A2").SelectはA2セルを選択しなさい、という命令です。
このように自分の操作をプログラムに記録するのではなくて、今度は自分でプログラムを書いてみましょう。今、人によって色々違うことを書いたと思うので、一旦Excelを終了させて、もう一度立ち上げて、先ほど同様「開発」をクリックして「Visual Basic」をクリックしてください。
プログラムを書く部分を用意したいので「挿入」をクリックして「標準モジュール」をクリックしてください。

現れた画面にプログラムを書きます。
まず
sub 練習
とだけ書いて、Enterキーを押してください。すると自動的に

Sub 練習()

End Sub

となり、カーソルは真ん中の空行にあります。そこに
cells(1,1)=1
と書いてください。これは上から1番目、左から1番目のセルに1を代入しなさい、という命令です。
プログラムを書いたら、上の右向きの三角をクリックしてください。するとさっきと同じように、どのプログラムを実行するか聞かれます。今は一つしか書いていないのでそのまま実行を押すと、A1セルに1が代入されます。Excelの画面で「マクロ」を押しても実行できます。

このプログラムを保存する時の注意。
左上の「上書き保存」を押すと、どの形式でファイルを保存するか尋ねられます。ファイルの種類として「Excelマクロ有効ブック」を指定してください。
2階実習室で保存するときは、P:ドライブに保存してください。

さてこれでプログラムを書いて実行できるようになったので、具体的なプログラミングを始めましょう。
先ほどのCells(1,1)=1とEnd Subの間に
cells(2,1)=2
cells(3,1)=3
と書き込んで実行してみてください。
あるいは
cells(1,2)=-2
cells(1,3)=-3
と書いて、cellsの二つの添え字がExcelのどのセルに対応しているか確認しましょう。

10個続けて書くには、
cells(1,1)=1
cells(2,1)=2
cells(3,1)=3
cells(4,1)=4
cells(5,1)=5
cells(6,1)=6
cells(7,1)=7
cells(8,1)=8
cells(9,1)=9
cells(10,1)=10

と書くのは大変なので、これをFor文を使って

for i=1 to 10
 cells(i,1)=i
next i

と書きます。

次に下のような九九の表ができるようにプログラムを考えて見ましょう。

作成したプログラムのSub ...からEnd Subまでをメールの本文にコピーして提出してください。

レポートの提出先は fuedareport@ems.okayama-u.ac.jp です。

Office TANAKAにも詳しく書かれています。

Windowsからメールを送る方法

実習室のWindowsからメールを送る方法を説明します。
ますOutlook Expressを立ち上げます。「通常使用するメールクライアントとして選択しますか」と聞かれたら「はい」と答えてください。

自分の名前と、大学で使っているメールアドレスを書きます。

受信メールサーバーの種類は「POP3」のままにしてください。その下の「受信メールサーバー」「送信メールサーバー」に何を書くかは講義のときに説明します。

「アカウント名」欄にはログオンする時に使った名前を書いてください。「パスワード」欄には何も書かず「パスワードを保存する」のチェックを外してください。最後に「完了」をクリックしてください。

次に「ツール」の「アカウント」をクリックします。「メール(既定)」「使用可能な接続」と書かれた行が、恐らくこの図とは違って一番上にあると思いますが、その左端をクリックしてから「プロパティ」をクリックします。

「詳細設定」をクリックして「サーバーにメッセージのコピーを置く」にチェックをつけます。付け忘れると、このソフトを使っている時に受信したメールが他のパソコンやLinuxからは読めなくなってしまいます。チェックをつけたら「OK」をクリックします。

次に「ツール」の「オプション」をクリックして「送信」の「メール送信の形式」として「テキスト形式」を選んで「OK」をクリックします。
メールを送るときは、まず「メールの作成」をクリックします。宛先はfuedareport@ems.okayama-u.ac.jp、件名欄には講義の日付と学籍番号を書いてください。最後に「送信」をクリックするとメールが送信されます。

2008-03-26

夕方、外が暗くなったので見てみると、西のほうから雨が迫っていました。

雨が東へ通り抜けていくと、綺麗な虹が出ていました。あまりにも大きくてカメラに入りきれません。

あっという間に雨はやんで、青空が出てきました。

WindowsXPのデフラグ

XP以降のWindowsは、起動時に読み込むファイルの履歴を記録して、それに基づいて自動的にデフラグすることで起動を速くすることになっています。
ですがこれではSSDなどフラッシュメモリにOSをインストールした時にもデフラグされてしまいます。 フラッシュメモリの場合ランダムアクセスでも読み出し時間は殆ど変わらないのでデフラグの効果はないですし、フラッシュメモリは書き換え可能回数が数万回までなので、デフラグしないほうが良いです。

どうやったらデフラグを止めさせることが出来るかな、と探していたら、 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dfrg\BootOptimizeFunction] "Enable"="N" で止めることが出来ると教えてもらいました。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OptimalLayoutに EnableAutoLayoutをDWORDで作り値を0にする
というのも見ました。
良く分からないので両方やっておくことにします。

SSD環境のOS設定(WindowsXPの設定)も参考になります。

また、カセットテープに録音していた音楽をパソコンに取り込む方法を高校時代からの友人と話していて、先輩のブログを教えてもらいました。懐かしいです。
パソコンへ取り込む場合はレベル調整も編集も簡単で、高校時代、FMからオープンリールへ録音してカセットテープへダビングしていた頃より遥かに楽ですね。

日本語への旅: 常体と敬体(その2)を紹介してもらいました。

ITギアのアクセスカウンタを入れてみました。

2008-03-09

SigmaのデジタルカメラDP-1の作例

週末、いくつかのブログを見ました。
光と遊ぶ
ちはやさんのブログ
Foveon SIGMA SD14/SD10/SD9/DP1 画像掲示板
他にもいくつか見ましたが、アドレスが分からなくなりました。

印象として
・原理的にローパスフィルターが不要なので解像度は凄い
・逆に、原理的に色の分離が難しいので、綺麗な色で撮るには使いこなしに工夫が必要。
という感じです。Y川さんなら使いこなしてくださるでしょう。

今週末は早野たづ子-創作人形の世界 Taduko Hayanoも見に行きました。

帰りにハタダに寄りました。美味しかったです(^^)

面白そうな映画が沢山

2008-02-29

松心

中華料理の松心へ行ってきました。
牡蠣入り春巻きとか、白子入り麻婆豆腐とか、豆乳(だったかな)担担麺とか、殻付エビチリとか、ユニークなんだけど、普通に食べさせて欲しかった気がします。
材料は良いので尚更残念です。

考えてみれば、中華料理は長い歴史がありますから、ちょっとやそっとの変更は既に試されていると思います。今回食べたメニューも、かつて誰かが試してみてボツになったんじゃないかな。
だからと言って、トンでもない変更をされても食べきれませんが。

年末年始の旅行記を書きました。写真はまだです。

2008-02-08

統計学入門期末試験

第1問

Xが正規分布N(μ, σ2)に従い、Y=X2とおいたとき、Yの期待値を求めなさい。

第2問

正しいサイコロを180回投げて、1の目が出た回数をXとします。
問1 Xの確率分布の種類とパラメータの値を述べなさい。
問2 Xの平均と分散を求めなさい。
問3 P(25≦X≦40)を求めなさい。近似値で構いません。

第3問

次のデータが観測されました. 母平均の信頼区間を95%の信頼係数で求めなさい. 有効数字3桁で求めなさい.
8.69, 8.71, 8.72, 8.70, 8.73, 8.69, 8.74, 8.69
必要ならば次の近似値を使っても構いません
S=0.01833, U=0.01959

2008-02-01

中国語

台北ノートで紹介されています。

歌詞はこちら
ロケ地:烏鎮
http://www.tourzj.jp/wuzhen.html

2008-01-24

Googleドキュメント

今日は最後のまとめとして、これまでに勉強したことを組み合わせて使ってみましょう。
まず、去年作ったgoogleアカウントを使ってログインしてください。googleの画面も少し変更されています。
パスワードを忘れたときは「アカウントにアクセスできない場合」をクリックして表示される「アカウントにログインしようとしたときの問題の状況」の画面で「パスワードを忘れた場合」をクリックすると、自分のアドレスにパスワード再設定用の情報が送られてきます。
いたずら防止に、読みにくい字が表示されるので、それを読んで入力してください。

しばらく待つと、自分のメールアドレスに「Google パスワード アシスタンス」というメールが届きます。「次のリンクにアクセスしてください。」という指示に従ってクリックするとパスワードをもう一度設定することが出来ます。

無事にログイン出来たら、左上の「more」をクリックして「ドキュメント」をクリックしてください。
「 Googleドキュメントを開始する」再び名前を聞かれますので、ニックネームか名前を入力して「次へ」をクリックください。

するとGoogleドキュメントという画面になります。左側の「新規作成▼」をクリックすると「文書」「スプレッドシート」「プレゼンテーション」を作ることが出来ます。それぞれ、これまでにWord, Excel, PowerPointと同じようなものです。「スプレッドシート」を選んでみましょう。もう一度「Googleドキュメントを開始する」と表示されて「次へ」をクリックします。
Excelと同じような画面が表示されます。正直言って、Excelの方が使いやすいのですが、これには
・作った文書をインターネットで公開できる
・無料で使える
という長所があります。岡山大学の学生さんなら情報基盤センターでExcelを使えるので二番目の長所は活きませんが、一番目の長所の活かし方を説明します。

まず、表にExcelの練習の時と同じように数字を入力してください。そして右上の「Save」をクリックしてください。私の画面は何故か英語になっていますが「保存」と表示されているかもしれません。
Excelで保存するとき同様、名前をつけて保存します。
次に右上の「Publish」をクリックし、表示された画面で「Publish Now」をクリックします(日本語で表示されるかも知れません)。
すると、例えば私が作ったページは「http://spreadsheets.google.com/pub?key=p9RYdGewatilAfOfhkXVjdA」というアドレスで公開された、と表示されます。このアドレスを教えることで、自分が用意した文書やデータを人に見せることが出来ます。

今度はこれを先週勉強したHTMLファイルと組み合わせてみましょう。
「more publishing option」をクリックします。別のウィンドゥが開きますので、File Formatから「HTML to embed in webpage」を選んで「Generate URL」をクリックしてください。そこで表示された<iframe>から</iframe>までを先週作ったhtmlファイルの本文の部分に貼り付けます。
そのhtmlファイルを開いてみると、先ほど作った表が表示されます。

最後に、今度はブログに貼り付けて見ましょう。Googleのブログの講義を思い出しながら、ブログを書いた画面の「作成」の隣の「HTMLの編集」をクリックしてください。ここにもHTMLを書くことが出来ますので、先ほどの<iframe>から</iframe>までを貼り付けると、自分のブログに表を表示することが出来ます。

2008-01-23

期末試験

  1. 前回の解答

    このブログでの説明どおりにプログラムを書くと次のようになります。

    Sub 連立一次方程式1()
    Dim x(3, 4) As Single
    Dim i As Integer, j As Integer, k As Integer, basho As Integer

    Sheets(1).Select
    For i = 1 To 3
     For j = 1 To 3
      x(i, j) = Selection.Cells(i, j)
     Next j
    Next i

    Sheets(2).Select
    For i = 1 To 3
     x(i, 4) = Selection.Cells(i, 1)
    Next i

    Sheets(3).Select
    basho = 1
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    Rem (1,1)成分を1にするために第一行を(1,1)成分で割るプログラムを書いてください。

    k = x(1, 1)

    For j = 1 To 4
     x(1, j) = x(1, j) / k
    Next j

    basho = basho + 4
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    Rem (2,1)成分を0にするために第2行から第1行×(2,1)成分を引きます。

    k = x(2, 1)

    For j = 1 To 4
     x(2, j) = x(2, j) - x(1, j) * k
    Next j

    Rem (3,1)成分を0にするために第3行から第1行×(3,1)成分を引きます

    k = x(3, 1)

    For j = 1 To 4
     x(3, j) = x(3, j) - x(1, j) * k
    Next j

    basho = basho + 4
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    Rem (2,2)成分を1にするために第2行を(2,2)成分で割ります

    k = x(2, 2)

    For j = 1 To 4
     x(2, j) = x(2, j) / k
    Next j

    basho = basho + 4
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    Rem (1,2)成分を0にするために第1行から第2行×(1,2)成分を引きます

    k = x(1, 2)

    For j = 1 To 4
     x(1, j) = x(1, j) - x(2, j) * k
    Next j

    Rem (3,2)成分を0にするために第3行から第2行×(3,2)成分を引きます

    k = x(3, 2)

    For j = 1 To 4
     x(3, j) = x(3, j) - x(2, j) * k
    Next j

    basho = basho + 4
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    Rem (3,3)成分を1にするために第3行を(3,3)成分で割ります

    k = x(3, 3)

    For j = 1 To 4
     x(3, j) = x(3, j) / k
    Next j

    basho = basho + 4
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    Rem(1,3)成分を0にするために第1行から第3行×(1,3)成分を引きます

    k = x(1, 3)

    For j = 1 To 4
     x(1, j) = x(1, j) - x(3, j) * k
    Next j

    Rem (2,3)成分を0にするために第2行から第3行×(2,3)成分を引きます

    k = x(2, 3)

    For j = 1 To 4
     x(2, j) = x(2, j) - x(3, j) * k
    Next j

    basho = basho + 4
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    End Sub

  2. 発展課題の解答

    レポート課題が出来た人には、似たようなことを繰り返し書いている部分をFor文を使ってまとめるプログラムを考えてもらいました。

    Sub 連立一次方程式2()

    Dim x(3, 4) As Single, i As Integer, j As Integer, k As Integer, basho As Integer

    Sheets(1).Select
    For i = 1 To 3
     For j = 1 To 3
      x(i, j) = Selection.Cells(i, j)
     Next j
    Next i

    Sheets(2).Select
    For i = 1 To 3
     x(i, 4) = Selection.Cells(i, 1)
    Next i


    Sheets(3).Select
    basho = 1
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i


    For i = 1 To 3
     For k = i + 1 To 4
      x(i, k) = x(i, k) / x(i, i)
     Next k
     x(i, i) = 1
     For j = 1 To 3
      If i <> j Then
       For k = i + 1 To 4
        x(j, k) = x(j, k) - x(i, k) * x(j, i)
       Next k
       x(j, i) = 0
      End If
     Next j
    Next i

    basho = basho + 4
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    End Sub

  3. 期末試験

    Sheet1に書かれた行列の行の数と列の数を数えて、その転置行列、つまり行と列を入れ替えた行列をSheet2に出力するプログラムを書きなさい。
    例えば、Sheet1に

    12
    34
    56
    と書かれていたら、Sheet2に
    135
    246
    と出力するプログラムです。