地学、地学概論

R言語を使ってみる

この授業の、計算機を使う実習として、 数値計算と、データの作図をしたい。 そのための道具はいろいろありうるが、 わたしは、本来は統計学的データ解析のためのソフトウェアである「R」を、 プログラム言語処理系としても使うことにしたい。

Rについて

Rは、統計学的データ解析のためにつくられたプログラム言語である。 Rの代表的な処理系は、オープンソースソフトウェアとして開発されており、 無料でつかうことができる。ただしメーカー保証はない。 R処理系は、MS Windows、Mac OS、Linuxなど多くのOSで動くものがつくられているので、 自分のパソコンにインストールすれば、 大学のパソコンでも自分のパソコンでも基本的に同じプログラムで処理ができる。

また、Rの作成者は統計学のうちでもデータを図にして見ることを重視していたので、 R処理系には、グラフを作成する機能がふくまれている。

わたしの授業でおもにやりたいことは、 観測データの可視化と、数値シミュレーションの初歩で、Rが最適とは必ずしもいえないが、 Rでも可能ではあり、表計算ソフトウェアでやるよりはだいぶみとおしがよくなる。 また、グラフ作図の機能は、統計学的データ解析のばあいと共通のものが使える。 2019年春学期から、板倉のパソコン教室でRが利用可能になったので、 2019年度の計算の実習は、おもにRで実行するプログラム例を用意し、 すこしだけ編集して動かしてもらうものにした。 2020年度はオンラインだけになってしまったので、R と 表計算ソフトウェアの両方を提示し、 各人ができるものでやってみてほしいという形にした。 2021年度は、2019年度と同じ形を基本にしたい。

Rの入門書をいくつか、本の紹介のページのRに関するところにあげておく。

Rの処理系をインストールする (教室のパソコンにはインストールずみ)

Rの処理系は、CRAN (The Comprehensive R Archive Network)というウェブサイトから配布されている。 ソフトウェアのダウンロードは、 インターネット上で自分に近いミラーサイトからしたほうがよい。 日本では、統計数理研究所にあるミラーサイト [外]https://cran.ism.ac.jp/がよいだろう。

「Download and Install R」のところで、 自分が使うパソコンのOS用をえらび、そのさきで「base」をえらぶ。 バージョン選択があれば、2021-11-07現在の最新版 4.1.2 でよいだろう。 (使いたい応用パッケージがある人は、そのパッケージが対応しているバージョンをえらぶ。)

Windowsのばあいは、".exe" でおわる名まえのファイルをダウンロードする。 そして、それをローカルに実行すると、インストールがおこなわれる。 ただし、パソコンの管理者権限を要求されることがある。 管理者権限をもつユーザーでログインしていれば、「はい」で応答すればさきにすすめるだろう。 Windows用は、ひとつのパッケージに、計算機の機械語がちがう、 32ビット版 (i386) と 64ビット版 (x64)のものがはいっている。 自分のパソコンのOSがどちらの版であるかによって選択する。 Windows 10のパソコンならばたいてい64ビット版だけでよいと思う。

Linuxについては、Debian, Redhat, Suse, Ubuntu むけのパッケージが用意されていて、 それぞれの Linux distribution のソフトウェアインストール手つづきが使える。 それにあてはまらないばあいは、CRANのトップのページにもどって、Source Code を ダウンロードして、"make" する。

補足

一行計算 (「電卓」的な使いかた)

Rのコンソール画面に計算式をうちこんで Enter キーをおすと、計算結果が表示される。

この計算式は、(電卓によくある「=」でおわる形ではなく) 数学の数式のようなもので、等式の「=」のあと(右辺)をかくと考えればよい。 「たす」は「+」、「ひく」は「-」、「かける」は「*」(アステリスク)、 「わる」は「/」(斜め線、スラッシュ)であらわす。 わりざんは分数のように考えるが、上下に積むかわりに斜め線をつかう。 演算の順序は、かけざん・わりざんが、たしざん・ひきざんよりも優先される。 かっこ「( )」を使うことによって、 「(2+3)*10」のように、演算の順序を指定することができる。

変数を使うことができる。 変数名は複数文字からなる文字列が使える。(変数名では使えない文字もある。)

「x = 3」のような文は、文脈によって、x に 3 を代入することを意味したり、 x が 3 にひとしいことを意味したりする。 代入は、代入の演算子「 <- 」をつかって「x <- 3」と書くほうがよい。

1行ずつ実行しても、変数は、(原則としてそのコンソール画面を終了するまで) ひきつがれている。

変数に値を代入したあとで、変数名だけを書いて Enter キーをおすとどうなるか、やってみよう。

数値計算は、実数を有限の桁数で近似した「浮動小数点数」で計算するので、 厳密解がわかっている問題でも誤差が生じることがある。

定数 pi 、関数 sin(), cos(), tan(), exp(), log() などがくみこまれている。 三角関数でつかう角度の単位はラジアンである。「度」単位の値を換算するには、pi/180 をかける。 log() は自然対数(eを底とする対数)である。常用対数(10を底とする対数)の log10() もある。

簡単な計算と作図の例題

一次関数、二次関数、指数関数、対数関数、三角関数などを、数値とグラフで見てみよう。

Rでは、複数の数値がならんだ「ベクトル」変数を使うことができる。 次のように「c()」をつかって、ベクトル変数をつくって、値を入れることができる。

また、「seq()」をつかって、次の例ならば、10 から 16 まで 2 おき、つまり「10, 12, 14, 16」という内容を入れることができる。

計算式のなかにベクトル変数名をかくと、ベクトルのそれぞれの要素についてその計算が実行された結果からなるベクトルができる。

plot() 関数に、ふたつのベクトル変数をあたえると、それを縦軸・横軸にしたグラフをかく。

操作の手順についてのおぼえがき

教材プログラム例を使うばあいの操作 (1行プログラム)

教材プログラム例を使うばあいの操作 (1行プログラムではないばあい)

数値計算をしてグラフをつくる例文プログラム

変数 v の値が、時間 t によって変わる。変わりかたがつぎの法則にしたがうばあいを考える。

dv/dt = g v 【g は定数。成長 (growth) に関連する定数というつもりであり、重力加速度ではない。】

これは微分方程式としてとくことができ、解は指数関数で書ける。

v(t) = v(0) exp(g t)

しかし、もうすこし複雑な問題の準備として、わざと、時間間隔 Δt きざみで計算してみる。 右辺にでてくる v は、各時間区間のはじめの時点での値を使うことにする (わたしの知っている専門用語では「前方差分」。 別の教材ページ 「数値計算の教材: 時間発展問題の差分計算」で説明している。)

(v(t+Δt) - v(t))/Δt = g v(t)

v(t+Δt) = v(t) + Δt g v(t)

プログラム例では、v(0) = 100, g は 0.02, -0.02, 0 の3とおり、Δt = 2 とした。 これらの数値は、プログラム内に書きこんである。それを変更すると結果も変わる。

例文プログラムの変種

[2019-09-28のブログ記事]に 図を2つ入れた。この図は、Rのプログラムで作図したもので、 そのプログラムは上にのべた例文プログラムを変形したものである。 (微分方程式を変えたところもあり、別の仮定をいれて数値をあたえてしまったところもある。) ひとまず説明ぬきに、プログラム例をリンクしておく (日本語文字はShift_JIS)。


(2019-09-30, 2020-06-14, 2020-06-21) 2021-11-07
増田 耕一 (MASUDA Kooiti)
[「地学」の授業の日程と各回の内容] [地学概論の授業の日程と各回の内容] [今学期授業向け情報目次] [地学の教材目次] [教材目次]