2007-10-25

Googleのブログ

Google Blogger
先週のようにGoogleにログインしたら、検索語句を入力する欄の上のmore≫をクリックしてください。Googleの色々なサービスが表示されますので、下のほうにある「Blogger」をクリックしてください。

確認のためにもう一度パスワードを尋ねられます。パスワードを入力してログインをクリックします。

氏名は前回カレンダーを使うときに入力したものがそのまま使われるようです。 ハンドルネームとはブログに投稿するときの名前です。本名ではないほうが良いでしょう。「利用規約に同意します」にチェックをつけて次へをクリックします。

ブログタイトルには自分の好きな名前を入力します。このブログならFueda's Blogです。漢字も使えます。 ブログアドレスは英数字だけが使えます。

ブログアドレスは他の人と同じものは使えません。入力したら「使用状況をチェック」をクリックしてください。

「このブログアドレスは使用できません」と言われたら他を試してください。


「このブログアドレスは使用できます。」と表示されたら、そのアドレスをちゃんと覚えてから「次へ」をクリックします。


ブログのデザインを選びます。自分の好きなもので構いません。このブログのデザインは一番右下にありました。 「次へ」をクリックするとブログの完成です。


「投稿を開始」をクリックすると、ブログを書くことが出来ます。


タイトルと本文を書きます。ラベルは、例えばこのブログで「情報処理入門」関連の日記だけを取り出して読んでもらうために、分野ごとにラベルをつけておくと便利です。

リンクを作ってみましょう。 「講義のページ」と書いた部分をクリックすると、このブログが表示されるようにします。

まず「講義のページ」と書いた部分の左端でマウスの左ボタンを押さえて、押さえたままマウスを動かして「講義のページ」を黒くします。

そしてリンクのボタンを押します。

アドレスを入力する画面が表示されるので、http://の後にfuedakaoru.blogspot.comと入力してOKを押します。

最後に「投稿を公開」をクリックすると公開されます。

ブログを見るをクリックして、今作ったばかりのブログを見てみましょう。 そして、少し色が薄くなっている「講義のページ」の部分をクリックして、このブログが表示されるか確かめてみましょう。 また、周囲の人に自分のブログのアドレスを伝えて、ちゃんと表示できているか確かめてください。

Googleノートブック
(先週のページの一番最後に書いていたことです。読んでいる人が少ないと思うので今週に移しました。)
インターネットで色々なページを見ているときに、気になったページをそのまま保存出来ます。
もう一度Googleの最初のページhttp://www.google.co.jp/に戻ってmore≫をクリックしてください。Googleの色々なサービスが表示されますが、下のほうにある「ノートブック」をクリックしてください。

確認のためにもう一度パスワードを尋ねられます。

先日のGoogleツールバー同様、学校のパソコンに勝手にインストールしてはいけませんので、ここは「ノートブックに戻る>」をクリックします。

ここに、前回の課題の時に使ったコピーと貼り付けを使って、保存したい情報を貼り付けます。

2007-10-24

データの合計

  1. 前回の解答
    プログラムを実行してみたら,データの個数より1多くなった筈です。
    ループが終わった時点で,iの値は最後のセルの番号ではなくて,その次の,最初の空白のセルの番号になっていますので,1を引く必要があります。

    Sub 練習()
     i=1
     do until cells(i,1)=""
       i=i+1
     loop
     n=i-1
     cells(n+1,1)="データの個数"
     cells(n+1,2)=n
    End Sub

  2. 先週のプログラムはDo whileというのを使って書くことも出来ます。

    Do While 条件
     繰り返す部分
    Loop

    で、条件が成立している間(while)繰り返します。今回は空欄で無い間繰り返すのですから、等しくないを示す<> ""を使って

    Sub 練習()
     i=1
     do while cells(i,1) <> ""
       i=i+1
     loop
     n=i-1
     cells(n+1,1)="データの個数"
     cells(n+1,2)=n
    End Sub

    と書きます。

  3. ループのまとめ
    1. Do While 条件
        プログラム
      Loop
      最初に条件を判断し、条件が満たされている間(While)、Loopまでのプログラムを実行します。
    2. Do
        プログラム
      Loop While 条件
      まずプログラムを実行します。 その後条件が満たされている間(While)、Doに戻ってプログラムを実行します。
    3. Do Until 条件
        プログラム
      Loop
      最初に条件を判断し、条件が満たされるまで(Until)、Loopまでのプログラムを実行します。
    4. Do
        プログラム
      Loop Until 条件
      まずプログラムを実行します。 その後条件が満たされるまで(Until)、Doに戻ってプログラムを実行します。

  4. さてデータの数を数えたので、前回作ったプログラムを使ってデータの和を求めましょう。 ここで問題になるのが、Dim文はプログラムの先頭、sub のすぐ後に書かなければならないという決まりがあるのです。つまり上のプログラムでnを求めた後で Dim x(n)と書いたのではエラーになります。 この場合、配列の個数を後で変更出来るようにします。プログラムの大凡の流れは次のようになります。

    Sub 練習()
    dim x() as single,...使う変数の型を宣言します。
     前回の後半のプログラムでデータの個数を数えてnに代入するプログラムをここに書きます。
    redim x(n)
     前回の前半のプログラムを使って、データを配列xへ代入し、和を求めるプログラムをここに書きます。
    End Sub

    この講義では今後このように、この部分で何をすれば良いか、を言葉で書きますので、それまでに習ったことを思い出してプログラムを書いてください。

    配列の使い方のまとめ

    • プログラムの先頭のSubの次の行に
      Dim x(100)
      と書くと,x(0),x(1)からx(100)までを使うことができます。
    • プログラムの先頭のSubの次の行に
      Dim x( )
      と書くと,xという配列を使う用意はしましたが,実際に何個目まで使うかはまだ決まっていませんので,実際に使う前に
      ReDim x(100)
      とか
      n=100
      ReDim x(n)
      のように,実際に使う個数を用意します。

  5. 今回作ったプログラムをもう一度実行すると、今度は6番目のセルまで空欄で無いので、データは6個だと誤解して、6番目の"データの個数"も足そうとしてエラーになります。従って、プログラムを「セルが空欄でなく、かつ数字」の間だけ繰り返すように修正しましょう。二つの条件が同時に成立することは And を使って表します。

    Sub 練習()
     i=1
     do while cells(i,1) <> "" And IsNumeric(Cells(i, 1))
       i=i+1
     loop
     n=i-1
     cells(n+1,1)="データの個数"
     cells(n+1,2)=n
    足し算の部分は先ほどと同じ
    End Sub

    のように書きます。二つの条件の片方が成立すれば良いときには Or を使います。

2007-10-18

Googleの各種サービス

今日はGoogle Mapの使い方、メールへのコピー、貼り付けを勉強します。
早く終わった人は、Googleカレンダー、Googleノートブックについても見てください。
Google Map
先週のようにGoogleにログインしたら、検索語句を入力する欄の上の地図をクリックしてください。

ここに地名を入れることで、その場所の地図が表示されます。

航空写真を見ることも出来ます。

自分が見ている地図を友達にも教えたいならば、右上の「このページへのリンク」をクリックして表示されるアドレスをメールで教えればよいです。

長すぎて書き写すのは大変ですし、写し間違えそうですよね。そんな時は文字が白黒反転している状態で、その文字に合わせて右クリックして、表示されたメニューの中から「コピー」を選びます。
そして、AL-Mailのメールを書く部分でマウスを右クリックして「貼り付け」を選ぶと、コピーした文字がそのまま書かれます。

覚えておくと便利なこと
・Ctrlキーを押しながらCを押してもコピーできます。
・Ctrlキーを押しながらVを押しても貼り付けできます。
この方が操作が手短ですし、殆どのソフトでこの組み合わせを利用できます。


今度は「お店やサービスを検索」をクリックしてください。


指定した地域で探したい種類のお店を検索出来ます。


それぞれのお店の詳しい情報を見ることも出来ます。

Google Mapの使い方の最後に、目的地までの経路を検索してみましょう。
「お店やサービスを検索」の右隣の「ルートを検索」をクリックしてください。

岡山大学から関西空港までの経路を検索してみました。

就職活動などで役立つでしょう。

ここまでの課題として、何処か行ってみたい場所の
・地図を表示するためのリンク
・その場所への経路
をメールに書いて送ってください。メールの宛先は出席確認のアドレスと同じです。

Googleのこの機能を使って別のページを作ることも出来ます。これはその一つであるhttp://map.hatena.ne.jp/です。

Googleカレンダー
Googleの最初のページhttp://www.google.co.jp/やGoogle Mapのmore≫をクリックしてください。Googleの色々なサービスが表示されますが、下のほうにある「カレンダー」をクリックしてください。

確認のためにもう一度パスワードを尋ねられます。

Googleのカレンダーは、自分の予定表を友達に見せることが出来ます。主に仕事のときに使う機能ですが、お互いの空いている時間がわかると臨時の予定を入れるのに便利だからです。
その時に、誰の予定表なのか分かるように、名前の入力を求められます。
でもあまり個人情報を晒さない方が良いので、ここでは正確な本名は入れない方が無難です。
私は姓はev、名はfuedaと入力しました。

するとこのように表示されます。左側の「マイカレンダー」のところに、先ほど入力したevとfuedaが名姓の順序で表示されています。

上の方の「月」をクリックすると月間予定表になります。

左側の「追加」から「公開カレンダー」をクリックしてください。

「カレンダーを参照」をクリックします。

「日本の祝日」の「カレンダーを追加」をクリックしてください。面白そうなので「月の位相」の「カレンダーの追加」もクリックします。


一番下の「OK」をクリックします。


カレンダーに表示されました。

カレンダーに予定を記入するには、記入したい日付をクリックします。

自分の予定表を友達に見せるにはこの画面右上の「設定」をクリックします。

カレンダー設定の画面から「カレンダー」をクリックするとこの画面になります。

その中の「このカレンダーを共有」をクリックします。

「新しいユーザーを追加」欄に予定表を見せたい人のメールアドレスを書いて「保存」をクリックすると、そのアドレスに招待状が届きます。但し、この講義内では実習しません。

2007-10-17

配列

今回から、具体的なプログラミングについて解説します。レポート課題は講義のときに指定します。
  1. 前回では、
     x1=cells(1,1)
     x2=cells(2,1)
     x3=cells(3,1)
    のように、合計する3つのセルの内容をそれぞれ記憶するための変数を用意しましたが、この方法ではFor文を使ってまとめられないので、足すセルの数が増えるとプログラムが長くなってしまいます。 そこで配列というものの使い方を勉強しましょう。 まず前回のことを思い出しながらSub 練習3()というプログラムを作ってください。その中に以下の様に書いていきます。

    最初に、3つのセルの内容を記憶する配列を用意します。
     Dim x(3) as single, wa as single, i as integer
    綴りを正しく入力すると、VBAの専門用語(予約語と呼びます)の先頭文字は大文字に変わります。x(3)はセルの内容を記憶する変数、waは後で使います。iはfor文で使いますので整数型(integer)です。

    次に配列へセルの内容を記憶させます。前回同様
     x(1)=cells(1,1)
     x(2)=cells(2,1)
     x(3)=cells(3,1)
    でも動きますが、このように何度も似たようなことを書く代わりに、今回は配列を使っているのでFor文を使って
     for i=1 to 3
       x(i)=cells(i,1)
     next i
    のようにまとめて書きます。 for文で繰り返される部分は右にずらして書いておくと後で読みやすいです。

    記憶させたら、今度は足します。前回の1+2+・・・+10の計算を参考にして
     wa=0
     wa=wa+x(1)
     wa=wa+x(2)
     wa=wa+x(3)
    で、足すことは出来ますが、簡潔にするために代わりにFor文を使って
     wa=0
     for i=1 to 3
       wa=wa+x(i)
     next i
    のようにまとめます。 計算結果を表示する部分は前回と同じなので省きます。以上の説明を元に、プログラムを完成させてください。

    全体の流れは

    Sub 練習()
    Dim x(3) as single

    セルに書かれている数字を配列x(i)に読み込みます。

    配列x(i)の値を足します。

    Cells(4, 1) = "合計"
    Cells(4, 2) = wa

    End Sub

    これが今日のプログラムの基本です。この後で、このプログラムを発展させていきます。

  2. 集計するための数字がいつもA1セル以降に存在するとは限りません。例えばC3,C4,C5セルに書かれていたらどうしましょうか。
     x(i)=cells(i+2,3)
    でも正しいですが、プログラムを書くときに勘違いしやすいです。その場合はまず
    cells(3,3).select
    と書きます。するとC3セルが選択されます。この後
     x(1)=selection.cells(1,1)
    と書くと、選択されたC3セルを(1,1)とみなしてセルを参照できますので、
     x(2)=selection.cells(2,1)
    と書くとC4セルに、
     x(3)=selection.cells(3,1)
    と書くとC5セルになります。 上のプログラム同様、これもFor文を使ってまとめましょう。 これを使って、C3,C4,C5セルに書かれた数字を合計するプログラムを完成させてください。

  3. ここまではプログラム作成時に、合計する数字がどのセルに書かれているかを指定していましたが、今度はプログラム実行時に「ここから縦に3つのセル」と指定するプログラムを書きましょう。先ほどのプログラムから
     cells(3,3).select
    を削除します。するとプログラム実行前にマウスで選択したセルから縦に3つのセルを合計します。

  4. データの個数を数えましょう

    となっていたらデータは5個ですね。これを数えるために、Do Until文を使います。使い方は
    Do Until 条件
     繰り返す部分
    Loop
    で、条件が成立するまで(until)繰り返します。今回はcells(1,1)から初めてcells(2,1),cells(3,1),...の順番に、セルが空欄になるまで繰り返し下方向を調べるので
     i=1
     do until cells(i,1)=""
       i=i+1
     loop
    このように書きます。

    Sub 練習()
     i=1
     do until cells(i,1)=""
       i=i+1
     loop
     cells(i,1)="データの個数"
     cells(i,2)=i

    End Sub
    この方法でちゃんと数えられましたか?もし数えた結果が違うのでしたら、何故違うのか考えてみてください。

2007-10-15

交差検証法

さて前回は

y=β01x12x23x3+誤差

というモデルを考えたのですが(これをモデル0と呼ぶことにします)、これが最適とは限りません。今回は他のモデルも考えてみて、比較しましょう。他のモデルとして、非線形項を入れることにすると考えるモデルが多くなりすぎて収集がつかなくなるので、今回は比較対象の一例として変量を減らしたモデルを考えます。経度は気温への影響が少ないかも知れないので

y=β01x13x3+誤差

というモデルを考えて(これをモデル1と呼ぶことにします)、これとモデル0のどちらが良いか比較します。

比較の方法として

i=120 {yi-(β01xi12xi23xi3)}2

i=120 {yi-(β01xi13xi3)}2

の最小値が小さい方、という比較は意味がありません。必ず前者の方が等しいか、小さくなります。何故なら前者で β2=0と置けば後者になるので、後者の最小値と同じ値を前者はとることが出来るからです。 注意すべきは、もし仮にx2がyと関係なくても、前者の方が小さくなってしまうので、これらの 小ささを比較していては不要な変数もどんどん採用してしまいます。

ではどのように比較すればよいでしょうか?大事なのは

y=β01x12x23x3+誤差

y=β01x13x3+誤差

が、yの値を知らないときにその予測として役に立つか、ということです。なので例えば β01x112x123x13がy1の推定として役に立っているか確認するなら、β0, β1, β2, β3を推定するためにy1の値を使っては確認になりません。

従って、次の手順でモデル0の推定のよさを調べることになります。

1.
都市番号2,3,...,20のデータを用いてβ0, β1, β2, β3の値を推定し、そのβ0, β1, β2, β3を用いて推定誤差
y1-(β01x112x123x13) を求めます。
2.
都市番号1,3,...,20のデータを用いてβ0, β1, β2, β3の値を推定し、そのβ0, β1, β2, β3を用いて推定誤差
y2-(β01x212x223x23) を求めます。
……
20.
都市番号1,2,...,19のデータを用いてβ0, β1, β2, β3の値を推定し、そのβ0, β1, β2, β3を用いて推定誤差
y20-(β01x20,12x20,23x20,3) を求めます。
これらの推定誤差を2乗して足したものを、モデル0の推定誤差として用います。モデル1についても同様の手順で推定誤差を求め、これらが小さいほうのモデルを採用します。

2007-10-11

インターネットの使い方

検索
インターネットで見ることが出来る情報はあまりに多いので、その中から自分の必要とする情報を探すのは大変です。そのために様々な検索サイトが用意されています。
まずデスクトップにあるInternet Explorerをダブルクリックして、
http://www.okayama-u.ac.jp
と書いてある部分を
http://www.google.co.jp/
に書き直してEnterキーを押します。すると

この画面が表示されますので、検索したい単語(例えば 岡山大学)を入力して Google検索 ボタンをクリックすると、岡山大学に関連するページの一覧が表示されます。

この画面上部の
  • 画像 をクリックすると岡山大学に関連する画像が表示されます。
  • ニュース をクリックすると岡山大学に関連するニュースが表示されます。
  • 地図 をクリックすると岡山大学の地図が表示されます。航空写真を見ることも出来ますし、地図の上でマウスの左ボタンを押さえてからマウスを動かすと、航空写真を動かすことも出来て面白いです。
  • グループ をクリックすると岡山大学関連のニュースグループ(インターネットに古くから存在する掲示板みたいなもの)が表示されます。
Googleアカウントの作成
以上のように、単に検索するだけでもGoogleは便利ですが、使っているうちに「先日検索して見つけたページはどれだったかな?」ということが分からなくなることがあります。こんな場合のためにこれまでに検索して見に行ったページなどを記録したり、画面の設定を保存するためにGoogleアカウントを作成します。既に自分でGoogleアカウントを持っている人はそれを使っても構いません。
もう一度アドレス欄に http://www.google.co.jp/ と入力してEnterキーを押してGoogleの最初の画面に戻ります。

次に、右上の ログイン をクリックします。すると

この画面が表示されるので、右側の

Googleアカウントをお持ちでない方はこちらから
今すぐアカウントを作成

をクリックします。すると

この画面に切り替わるので、(↑クリックするともっと大きく表示されます)

現在のメールアドレス:先週設定した自分のメールアドレスを書きます。
パスワードの設定:自分で決めたパスワードを書きます。情報基盤センターのパスワードとは別にした方が安全です。別にしたほうが良い理由。他の人に見られないように、入力した文字は表示されません。
パスワードを再入力してください:すぐ上の欄に入力したパスワードは表示されないので、間違っていないか確認のためにもう一度同じパスワードを入力します。
文字の確認:いたずら防止のため、表示されている読み難い文字を読んで、下の欄に書き写します。
全部書いたら、一番下の「同意して、アカウントを作成します」をクリックします。

しばらくすると先週設定したAl-Mailに「Google によるメール アドレスの確認」というメールが届くはずです。そこに書かれた

Google アカウントへようこそ。アカウントを開設したりメール アドレスを確認するには、次のリンクをクリックしてください。

http://www.google.com/accounts/VE?c=(ここは人によって違います)

をクリックするとアカウント作成は完了です。

Googleにログイン
もう一度 http://www.google.co.jp/ に戻ってログインを押してこの画面を表示します。

今度はここに先ほど登録したメールアドレスとパスワードを入力して「ログイン」ボタンをクリックします。するとさっきまでと良く似ているけれど少し違う画面になります。

一番上にメールアドレスが表示され、左上に「アカウント」という項目が表示されていますのでクリックしてみましょう。

Googleのアカウントで利用できるサービスが表示されています。この中のウェブ履歴をクリックしてください。
使っている途中でもこのように再びパスワードの入力を求められることがあります。そんな時はもう一度パスワードを入力してください。

Googleツールバーをインストールしてくださいと言われますが、大学のパソコンにインストールしてはいけないので、右側の「検索の履歴だけを記録する」を選んでください。
今は登録したばかりなので履歴は空っぽですが、今後ログインしてから検索すると、表示したページを覚えてくれます。
iGoogle
右上の「Googleホーム」をクリックして今度は「iGoogle」をクリックしてください。

色々な項目がありますが、後から選んだり消したり出来るのでここはそのまま「保存」をクリックしてください。

各項目を並べ替えることも出来ますし、いらない項目は右上の×を押せば消すことも出来ます。さらに「コンテンツを追加」することも出来ます。
さらに「テーマを選択」することで背景を変えることが出来ます。一部の背景は時間や天気によって変化するので、現在地を設定する必要がありますが、岡山が選択肢にないので一番近い高松にしましょう。
ニュース
iGoogleの画面で右上の「ホーム」をクリックしてGoogleのトップページに戻ってから「ニュース」をクリックするか
あるいはアドレス http://news.google.co.jp/ を入力すると、Googleが色々な報道機関のニュースを集めたページが表示されます。
このページも自分で変更できます。右側の

をクリックすると

この画面になるので、ニュースが表示される場所を変更することが出来ます。
また、この中の「カスタム セクションの追加」をクリックすると、自分の興味ある分野のニュースだけを選び出すことが出来ます。

岡山大学に関するニュースを表示するにはこのように入力して「セクションの追加」ボタンを押します。

2007-10-10

For文を用いた計算

  1. Excelセルに書き込んでいるだけではデータ解析の準備にならないので、今度はセルに書かれた数字を計算してみましょう。ExcelのA1,A2,A3セルに好きな数字を入力してください。その数字を合計して、別のセルに表示する「練習2」というプログラムを書きましょう。既に書いた「練習1」プログラムの「End Sub」より下をクリックして、「sub 練習2」と入力してEnterを押してください。
     Sub 練習1()
     ...中略...
     End Sub
     


     Sub 練習2()

     End Sub
    となったと思います。
    ここに
     x1=cells(1,1)
     x2=cells(2,1)
     x3=cells(3,1)
     sum=x1+x2+x3
     cells(4,1)="合計"
     cells(4,2)=sum
    と書いて、プログラムを実行してください。正しく合計を計算できた人は、それぞれの行の意味を考えてください。

    このプログラムはこのままでも動きますが、プログラムの先頭、つまりSub 練習2()とx1=cells(1,1)の間に
    dim x1 as single, x2 as single, x3 as single, sum as single
    という行を入れてください。このdim文は

    • プログラムミスの発見を容易にする
    • 必要な計算精度を確保する
    • 不必要に計算精度を高めることによる速度低下を防ぐ
    ために重要です。主な変数の型を整理しておきます。
    Integer
    整数型:1,2,3のような整数を記憶します
    Long
    長い整数型:Integerより広い範囲の整数を記憶できます
    Single
    単精度浮動小数点型:3.14のような小数も記憶できます
    Double
    倍精度浮動小数点型:Singleより精度が高いです
    String
    文字型:文字列を記憶します
    1+2+・・・+10を計算するにはどうすればよいでしょうか。直接式を書くと 長くなるので、まず
    wa=0
    としておいて
    wa=wa+1 (この時点でwaは1)
    wa=wa+2 (この時点でwaは1+2)
    wa=wa+3 (この時点でwaは1+2+3)
    wa=wa+4
    wa=wa+5
    wa=wa+6
    wa=wa+7
    wa=wa+8
    wa=wa+9
    wa=wa+10
    とするとwa=1+2+3+・・・+10になります。10回繰り返すのですからFor文を使いたいと思います。皆さん考えてみてください。

2007-10-09

R入門

RはフリーソフトでThe Comprehensive R Archive Networkから入手できます。
環境数理学科出身の受講生の皆さんにとっては復習だと思います。
準備
Windowsの場合いきなり

このように文字化けしていますので、

GUIプリファレンスを選んで

FontをMS Gothicにして、保存を選んで設定をファイルに保存してからOKを押します。
変数の扱い方
>
と表示されているところで
a=1
と入力してEnterを押すとaに1が代入されます。確認するには
a
と入力してEnterを押すと
[1] 1
と表示されます。[1]は1番目の要素ということです。
複素数も
a=1+1i
のように書いて扱うことが出来ます。1+iではないことに注意してください。単独のiは変数名として扱われます。

ベクトルはc(要素)と書きます。例えば
b=c(10,20,30)
と書けば、ベクトル(10,20,30)になります。
ベクトルは特に指定しなければ縦ベクトルになりますが、横ベクトルでなければ都合が悪いときは勝手に転置してくれます。
スカラーの場合と同じように確認すると
[1] 10 20 30
と表示されます。
1,2,...,100のような列なら
c=1:30
と書きます。これを確認すると
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
[21] 21 22 23 24 25 26 27 28 29 30
のように表示されます。[21]は折り返して表示された一番左が21番目の要素ということです。

要素を取り扱うには[]を使います。例えば
b[2]
と確認すると
[1] 20
ですし、
b[2]=200
と代入してから
b
を確認すると
[1] 10 200 30
となります。
複数の要素を扱うには、[]の中にベクトルを書きます。例えば1番目と3番目の要素なら
b[c(1,3)]
[1] 10 30
です。また負の数を指定すると、それを除いた他の要素になります。
b[-2]
[1] 10 30
ベクトルの定義の方法には他にも色々ありますが、詳しくは左の欄の教科書を見てください。

行列の定義の方法も色々ありますが、見た目で分かりやすいのはベクトルを並べることでしょう。
c=rbind(c(1,2,3),c(4,5,6),c(7,8,9))
とすると、各ベクトルをrowベクトル(行ベクトル)として並べて行列を作ります。一方
d=cbind(c(1,2,3),c(4,5,6),c(7,8,9))
とすると、各ベクトルをcolumnベクトル(列ベクトル)として並べて行列を作ります。
行列の成分の指定方法は、いちいち列挙すると大変なので例を並べます。

コマンド

機能

c[2, ]

2 行目を取り出す

c[ ,2]

2 列目を取り出す

c[1, 2]

1 行 2 列目の成分を取り出す

c[c(1,2), 2]

1,2 行 2 列目の成分を取り出す

c[c(1,2), c(1,3)]

1, 2 行目と 1, 3 列を取り出す

c[ ,-c(1, 3)]

1, 3列を除外した行列を取り出す

演算
+,-は普通の演算と同じです。
但し、ベクトル、行列の型がそろっていない場合、エラーにならず足りないほうを繰り返し使ってくれます。
ですから、例えば行列cの全ての成分に1を足したいなら
c+1
だけで出来ます。
*,/は成分ごとの掛け算、割り算になります。型がそろっていない場合の対応は足し算、引き算と同じです。
行列の掛け算は %*% です。この場合はちゃんと行列の型が揃っていないとエラーになります。
行列cの転置行列はt(c), 逆行列はsolve(c)です。連立一次方程式を解くということでsolveなのでしょう。
計算練習
さてここまで準備しておけば、昨年度のこの講義の最後の課題 環境データ解析の例も簡単に解くことが出来ます。
このデータを全部入力していると大変ですから、ホームページからコピーしたいのですが、InternetExplorerでは表の区切りがタブにならないので、MozillaかFirefoxで開いてください。
  1. パソコンにmozillaやFirefoxがインストールされている場合
    indexcityyx1x2x3
    1稚内-8.0 45.42 141.68 2.8
    2旭川-13.6 43.77 142.37 111.9
    3札幌-9.5 43.05 141.33 17.2
    4青森-5.4 40.82 140.78 3.0
    5盛岡-6.7 39.70 141.17 155.2
    6仙台-3.2 38.27 140.90 38.9
    7金沢-0.1 36.55 136.65 26.1
    8長野-5.5 36.67 138.20 418.2
    9高山-7.6 36.15 137.25 560.2
    10軽井沢-10.0 36.33 138.55 999.1
    11名古屋-0.9 35.17 136.97 51.1
    12飯田-4.7 35.52 137.83 481.8
    13東京-0.4 35.68 139.77 5.3
    14鳥取0.5 35.48 134.23 7.1
    15京都-0.6 35.02 135.73 41.4
    16広島0.2 34.37 132.43 29.3
    17福岡1.5 33.58 130.38 2.5
    18鹿児島2.0 31.57 130.55 4.3
    19高知0.1 33.55 133.53 1.9
    20那覇13.5 26.23 127.68 34.9
    この表を、一番上の項目名も含めてコピーしてから、Rで
    data1=read.delim("clipboard", sep="\t")
    と入力すると、コピーしたデータがdata1に貼り付けられます。
  2. パソコンにInternetExplorerしか入っていない場合
    表を何らかの方法でCSVファイルとして保存します。上の表を表計算ソフトに貼り付けてCSVファイルとして保存するか、下のテキストをエディタに貼り付けてdata.csvというファイル名で保存してください。
    index,city,y,x1,x2,x3
    1,稚内,-8,45.42,141.68,2.8
    2,旭川,-13.6,43.77,142.37,111.9
    3,札幌,-9.5,43.05,141.33,17.2
    4,青森,-5.4,40.82,140.78,3
    5,盛岡,-6.7,39.7,141.17,155.2
    6,仙台,-3.2,38.27,140.9,38.9
    7,金沢,-0.1,36.55,136.65,26.1
    8,長野,-5.5,36.67,138.2,418.2
    9,高山,-7.6,36.15,137.25,560.2
    10,軽井沢,-10,36.33,138.55,999.1
    11,名古屋,-0.9,35.17,136.97,51.1
    12,飯田,-4.7,35.52,137.83,481.8
    13,東京,-0.4,35.68,139.77,5.3
    14,鳥取,0.5,35.48,134.23,7.1
    15,京都,-0.6,35.02,135.73,41.4
    16,広島,0.2,34.37,132.43,29.3
    17,福岡,1.5,33.58,130.38,2.5
    18,鹿児島,2,31.57,130.55,4.3
    19,高知,0.1,33.55,133.53,1.9
    20,那覇,13.5,26.23,127.68,34.9
    保存したら
    data1=read.csv(file.choose())
    と入力すると、ファイルを選択する画面になるので、読み込みたいcsvファイルを指定してください。
いずれの方法でも、これでデータ名および項目名がdata1に読み込まれましたので、例えばx1は
data1$x1
として取り扱うことが出来ます。
読み込めたら、実際にデータ解析してみましょう。
このデータは、20地点の1月の日最低気温の月平均値y, 緯度x1, 経度x2, 標高x3のデータです。この緯度、経度、標高と気温の関係を数式で表したいと思います。 また神戸の緯度は34.68、経度は135.18、標高は59.30です。神戸の気温を推定しましょう。

緯度、経度、標高と気温の関係は色々考えることが出来ますが、今回は緯度、経度、標高の3変量を使う最も簡単なものとして

y=β01x12x23x3+誤差

という形を考えます。
β0123はどうやって決めましょうか。
本当の気温yと、緯度、経度、標高から推定した気温β01x12x23x3 との差が小さくなるように決めましょう。

データの
1番目の都市の気温をy1、緯度をx11、経度をx12、標高をx13
2番目の都市の気温をy2、緯度をx21、経度をx22、標高をx23
・・・・・
20番目の都市の気温をy20、緯度をx20,1、経度をx20,2、標高をx20,3
と書きます。すると、本当の気温と推定した気温の差は

y1-(β01x112x123x13)
y2-(β01x212x223x23)
・・・・・
y20-(β01x20,12x20,23x20,3)

です。これらはプラスになったりマイナスになったりするので、そのまま足すと打ち消しますから、二乗して足して

i=120 {yi-(β01xi12xi23xi3)}2

が最小になるようなβ0123を求めることにします。
一見、求めるのは難しそうに見えます。でもこれはβ0123に関する二次式で、しかもは二乗して足していますから0以上です。だからグラフは下に凸になっていて、どこかで最小値を取ります。

公式の導出は省略しますが、実は最小にするβ0123は次の連立一次方程式を解くことで求めることが出来ます。

まず未知数β0123を縦に並べた ベクトル

β0
β1
β2
β3
をΒとおき、

ベクトル
y1
y2
y20
をYとおき、

最後に行列
1x11x12x13
1x21x22x23
1x20,1x20,2x20,3
をXとおきます。
1が縦に並んでいるのはβ0の係数だからです。この時、最小にするβ0123は 連立一次方程式

(Xt・X)Β=(Xt・Y)

を解くことで得られます。Xの右上のtは転置を表します。

この連立一次方程式を解いて、β0123を求めてみましょう。

この公式のYは単純に

Y=data1$y

あるいはdata1の3列目ですので

Y=data1[,3]

で得られます。
Xはまず1を縦に20個並べたベクトルが1列目、後はdata1のx1,x2,x3です。
1を20個並べたベクトルを作るには
rep(1, length=20)
とします。よってXは

X=cbind(rep(1, length=20),data1$x1,data1$x2,data1$x3)

あるいは

X=cbind(rep(1, length=20),data1[,c(4,5,6)])

で与えられそうですが、後者のように複数行まとめて取り出すと行列ではなくデータフレームと呼ばれる変数名込みのデータになっているので

X=as.matrix(cbind(rep(1, length=20),data1[,c(4,5,6)]))

とする必要があります。
行列の積は%*%、転置はt( )、逆行列はsolve( )でしたので、上記の公式を使って係数ベクトルβを求めて変数bに代入してください。

また神戸についてはx1=34.68、x2=135.18、x3=59.30でしたので、先頭に1をつけてc(1, 34.68, 135.18, 59.30)をベクトルbに掛けて下さい。約0.23になります。実際の気温は1.2でした。

2007-10-05

統計学入門

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

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

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

2007-10-04

電子メールの使い方

はじめに
講義の資料はこのブログに書きます。
総合情報基盤センターのパソコンでこのブログを見るときには、InternetExplorerの代わりにNetscapeを使った方が見やすいです。デスクトップの「アプリケーション」と書かれたフォルダをダブルクリックします(マウスの矢印を合わせて、左ボタンを二回続けて押す)。その中にNetscapeと書かれたアイコンがあるのでそれをダブルクリックすることでNetscapeを起動できるので、そこにこのブログのアドレス
http://fuedakaoru.blogspot.com/
を書いて、左上の目次から「情報処理入門」をクリックします。

電子メールの設定
総合情報基盤センター利用の手引き第三分冊の3ページからを見ながら設定します。設定が終わったら確認のために私宛にメールを送ってください。
宛先のアドレスは fuedareport@ems.okayama-u.ac.jp
題名は今日の日付と学籍番号
本文には名前
を書いてください。
私に届いたら、返事を送ります。
来週から、出席はこのメールを送ることで確認しますので、パソコンを立ち上げたらすぐにメールを送ってください。
漢字入力
文字を入力する画面で、キーボード左上の

半角/
全角

というボタンを押すたびに、画面右下の A が あ になったり戻ったりします。
A と表示されているときはキーボードで入力したアルファベットがそのまま表示され
あ と表示されているときはローマ字として変換されます(例えば A を押すと あ になります)
A のような幅の狭い文字を半角文字、あ とか A(分かりにくいでしょうけれど、先ほどのAより幅が広いです)のように幅の広い文字を全角文字と言います。全角文字は人間が読むための文字で、パソコンは理解できないので、メールアドレスを入力するときは必ず、画面右下を A にして半角文字で入力してください。

Googleアカウントの作成
以上が終わったら、来週以降の準備としてGoogleアカウントを作成します。既に自分でGoogleアカウントを持っている人はそれを使っても構いません。
画面左下の「スタート」をクリックして、表示された「インターネット」をクリックします。
アドレス欄に http://www.google.co.jp/ と入力してEnterキーを押しますと、次の画面が表示されます。

次に、右上の ログイン をクリックします。すると

この画面が表示されるので、右側の

Googleアカウントをお持ちでない方はこちらから
今すぐアカウントを作成

をクリックします。すると

この画面に切り替わるので、(↑クリックするともっと大きく表示されます)

現在のメールアドレス:先ほど設定した自分のメールアドレスを書きます。
パスワードの設定:自分で決めたパスワードを書きます。情報基盤センターのパスワードとは別にした方が安全です。他の人に見られないように、入力した文字は表示されません。
パスワードを再入力してください:すぐ上の欄に入力したパスワードは表示されないので、間違っていないか確認のためにもう一度同じパスワードを入力します。
文字の確認:いたずら防止のため、表示されている読み難い文字を読んで、下の欄に書き写します。
全部書いたら、一番下の「同意して、アカウントを作成します」をクリックします。

しばらくすると「Google によるメール アドレスの確認」というメールが届くはずです。そこに書かれた
Google アカウントへようこそ。アカウントを開設したりメール アドレスを確認するには、次のリンクをクリックしてください。

http://www.google.com/accounts/VE?c=(ここは人によって違います)

をクリックするとアカウント作成は完了です。