サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ノーベル賞
takenaka-akio.org
R でプログラミング:データの一括処理とグラフ描き 13. 見栄えのよいグラフ(その2):複数の図と軸の説明(+ 日本語の表示) updated on 2009-03-31 この章では,複数のグラフを並べた図に,見栄えよく軸の説明などを描く方法を紹介します (できあがり参考例). 並べた図にきれいに軸の説明をつける まずは並べる ひとつの作図画面(ないしは作図デバイス)に複数のグラフを並べるには, すでに 6章 で説明したように,par で mfrow や mfcol というパラメータに 値を設定します. 前の章で使ったのと同じ, w_h_data.txtを使います.このファイルには "Q. nana と Q. hatena という二種類の木の サイズ(太さと高さ)の情報が書かれています.前の章では一枚のグラフに二種のデータを 重ねてプロットしました.こんどは,それぞれ別のグラフに描いて並
R でプログラミング:データの一括処理とグラフ描き(7章の補足) apply系関数の使い方 updated on 2014-08-25 統計処理は、たくさんのデータを使って行います。 プログラミング言語の多くは、多量のデータの処理を効率よく記述できる 文法が用意されています。R は、特にそうした機能が充実しています。 たとえば、 a <- c(1, 3, 5) a <- a + 1 と書けば、a の3つの要素すべてに 1 が加えられて、2, 4, 6 となります。 同じことは for ループでもできます。 for (i in 1:3) { a[i] <- a[i] + 1 } けれども、このような書き方をするとプログラムが長くなるし、実行時間が余計にかかることもあります (参考: Perl, R, Ruby, C++ で作成したプログラムの実行速度の比較)。 Rでは、for ループを使わず
変数,あるいはオブジェクトがいつ作られ,いつまで存在するのか,また, 存在するあいだ,どこから見ることができ,どこからは見えないか,という話を まとめました。自分で関数を定義しながらやや長いプログラムを書くのに必要な基礎知識です。 説明ばかりで退屈かもしれませんが,一通り目を通してください。 グローバルな世界,ローカルな世界 長いプログラムになると,どこでどんな名前の変数を使っているのか, だんだん分からなくなってきます。 こっちで x という変数の値を変更したら, あっちでも x という変数を使ってたので,プログラムの動作がめちゃくちゃになった ということもありそうです。 こういう問題を解決するために,多くのプログラミング言語では,変数名の有効範囲を 限定することができるようになっています。ここで x という変数名を使うとき, プログラムのほかで同じ名前の変数が使われてるかどうかを気にし
R をはじめる R はフリーですので,だれでも無料でダウンロードして使うことができます. R の使い方の情報は,ネット上でも書籍でも,どんどん増えています. ひとつだけあげるとしたら,日本の R ユーザたちが育てている Wiki サイト, RjpWiki. 多量の情報が集積されています. 他の有用なページへの リンク集 も充実しています. R 初心者のかたは,ここの R習得段階別厳選リンク集にもあげられている, R-Tips (舟尾さん) からはじめるのがよいでしょう. いままでまったく R の経験がないなら,R-Tips の基本知識篇だけでもながめてから こちらのページに戻ってきて,そのあとは適宜いったりきたり していただくとよいかと思います. また,以下のページのなかでも頻繁に「詳細は R-Tipsのこのページを」と,R-Tipsへの リンクを設定してあります. R-Tips は包括的
Perl, R, Ruby, C++ で作成したプログラムの実行速度の比較 from 2013-01-24 updated on 2013-09-30 はじめに コンピュータにやって欲しい仕事を指示するため、人はプログラムを書きます。 そのための言語にはさまざまなものがあります。目的に応じて書きやすいものを使えばよいのですが、 多量の計算が必要な場合、計算のスピードも気になります。 私自身、および私の周囲に使用者がいる言語4つ(Perl, R, Ruby, C++) で、 簡単な比較(ベンチマークテスト)をしてみました。 R ではデータの処理方法によって大きく計算時間が変わるといわれていますので、 データ構造やデータの処理法間の比較もしてみました。 なお、この結果は実行するプログラムの内容によって大きく変わりますし、 処理系によっても変わります。あくまで参考程度の情報です。 言語の選び方に
R でプログラミング:データの一括処理とグラフ描き 10. データファイルの順次処理:ファイル名を書き並べる ひとつのデータファイルを読んで処理することができるようになったら、 今度はいくつものデータファイルの処理も自動的にやってもらいましょう. 人間が一回一回ファイル名を指定して、手動で10回も20回も繰り返す などということをしてはいけません.そんな単純作業はコンピュータにだって できるのですから、コンピュータにやらせます. 基本的な流れ ほとんど新しい知識は必要ありません. ファイルからのデータの読み込みはすでに実習済みです. あとは,読み込むファイル名を変えながら,同じ作業を繰り返すだけです. もちろん,同じ作業内容をプログラムのなかで何度も書くなどという 無駄なことはしません.繰り返し構文という便利なものを活用します. 擬似コードで書くとこんな感じです. for (...){ #
プログラミングを習得するには、とにかく自分で試してみることが大切です。 R での作図だの統計解析だのを試すとなると、まずはデータが必要です。 手元に適当なデータがない場合は、自分で架空データを作成することになります。 for 構文を使えばいろいろなデータを作成できますが、 既存の関数ひとつで書けるならそのほうが楽です。 このページではそうした便利な関数の使い方を簡単に紹介します。 プログラムで作ったデータは、数値シミュレーションにも活用できます。 特に乱数はシミュレーションに不可欠です。 R では、さまざまな確率分布にしたがう乱数の発生関数が提供されています。 こちらは for 構文を使えば済むというわけにはいきません。 用意されている関数をありがたく利用します。 素朴に書き並べる 便利な関数を紹介と書いたそばから、いきなり手作業的なやりかたの紹介ですが、 すべての基本は c という関数で
plotで散布図が一枚書けたというレベルから, 使える図を作るレベルへと進むには 描画を制御するパラメータを適切に設定できる 描画関数を何度も呼び出して重ね描きができる ことがポイントになります. このページでは,まずはパラメータの設定について説明します. とくに,文字のサイズやシンボルのサイズを自由に制御する方法を解説します. 続いて,高水準関数を何度も呼び出したり,高水準関数と低水準関数を 組み合わせたりして重ね描きするときの注意点を説明します. この場合は,座標系の設定の理解が重要になります. これらを理解すれば,プログラムで作図することもおっくうでなくなるでしょう. なお,グラフ描きのためのさまざまなワザを網羅的に紹介することはしません. 実用的な見栄えの,ごくふつうのグラフを描くための基礎に限って紹介します. もっと凝ったことがやりたくなったら,自分で調べてみてください. なお,
配列のリファレンスをサブルーチンに渡す これからしばらく,リファレンスの活用法をいくつか紹介します. まずはサブルーチンに渡す引数としての利用です 数百行程度以上のプログラムになると,サブルーチンを使うことが必須になってきます. 独立性のあるサブルーチンを書くには,グローバルな(プログラム中のどこからでも見える) 変数はあまり使いたくありません.なるべく引数として受け取ったものを処理させるように するのが望ましい設計です. けれども, 「サブルーチンの引数はスカラーが並んだひとつのリスト」 という制約があるために,サブルーチンに2つの配列を渡したり,ハッシュを渡したり するのが困難だという話は前のページに書いたとおりです. でも,リファレンスという特別なスカラーを使えばこの問題は解決です. 配列でもハッシュでも,サブルーチンにほんとに渡したいもののリファレンスを渡し, サブルーチンではこの
ファイルからデータを読み込む 前のページでは,Perl のプログラムの出力を,DOS窓のリダイレクト機能を 使ってファイルに書き込んでみました. このページでは,DOS窓でプログラムを起動するときに指定した 既存ファイルを読み込む方法を説明します (※プログラム中で名前を指定してファイルを作ったり読んだりする方法は, もっとあとで出てきます). # コマンドラインで指定したファイルから一行ずつ読み込み, # 行番号をつけて画面に表示する. $no = 1; # 行番号カウント用の変数の初期設定. while ($line = <>) { # 一行読んで,$line という変数に代入.詳しくは下記. print $no, "\t", $line; # 行番号,タブ,行の内容. ++$no; # 行番号カウンタを増やす. } print "There are ", ($no - 1), " l
R でプログラミング:データの一括処理とグラフ描き 11. データファイルの順次処理:ファイル名のいろいろな決め方 まずは前の章の復習です.いくつものデータファイルを読んで処理する場合の基本的な 流れは, for (...){ # ファイルごとの繰り返し ファイル名を設定する. ファイルの内容を読み込む. 読み込んだデータを使ってなんらかの処理をする. } とうものでした.前の章では,読み込むデータファイルの名前を プログラム中に書き並べるという素朴な方法をためしてみました. この章では,ほかの方法を紹介します. ファイル名を規則的に生成する ファイル名が規則的についているなら,プログラムのなかで生成することができます. こういうプログラムが書きやすいように,データファイルを作る段階からファイル名に 工夫をしておくとよいでしょう. プログラム中でのファイル名生成には, sprintf が活
The Insignificance of Statistical Significance Testing 統計学的な有意性検定の意味のなさ Johnson, Douglas H. 1999. The Insignificance of Statistical Significance Testing. Journal of Wildlife Management 63(3):763-772. 全文 この論文の存在は, 久保拓弥さん(北大)の ページで知りました. The Wildlife Society Award for Outstanding Publication in Wildlife Ecology and Management を受賞したものです. 安易に使われがちな統計学的有意性検定がいかに無意味かを解説しています. なかなか勉強になりました. 自分用に下手な抄録を作って
入力画面にもファイルにも出力できる. 出力対象はいくつも , で区切って並べられる 出力対象は文字列. 文字列以外のオブジェクトを渡すと,可能なかぎり文字列に自動変換. 最後に改行コードがつかない 文字列に,二重引用符 "" はつかない x <- mean(d$width) # 書きたいものを並べる. # 最後に改行コード \n も出力させる. cat("mean = ", x, "\n") # 画面に出力 # ファイル result.txt に出力. # すでにファイルがあるなら末尾に追加. cat("mean = ", x, "\n", file = "result.txt, append = TRUE)
R でプログラミング:データの一括処理とグラフ描き started on 2005-06-06 updated on 2017-09-16 竹中明夫 この文書は,フリーの統計解析・作図システム R を使って, データの一括処理と図化のプログラムを書けるようになるためのチュートリアルです. R の経験がまったくなくても読めるように書いています. ただし統計解析手法そのものについての解説はほとんどしていません. ひとつ覚えた統計解析用の関数を使って、 数十セットのデータを一度に処理しりたいとか、 ついでに自動的に作図してしまいたいとか、 統計解析の前にデータを一通りグラフにして全体像を見たいとか、 解析・作図の手順をプログラムとして書きとめ、 再利用できるようにしたいといった要望に応えるための文書です。 まずは はじめに:この文書のねらい をごらんください。 終りにでも、この文書の守備範囲に触
R でプログラミング:データの一括処理とグラフ描き リストにオブジェクトをしまう updated on 2012-09-21 ベクトルは、同じ型のデータをまとめて並べたデータ構造です。 これに対し、リストはどのような型のデータでもしまえるデータ構造です。 ベクトルでもリスト自身でもデータフレームでも統計解析関数が返す複雑なオブジェクトでも、なんでも格納できます。 自動化した処理の結果をいくつもまとめておいて、最後にまとめて処理したいなどという場合にも便利でしょう。 なお、データフレームもリストの一種です。 このページでは、リストの使い方の基本を紹介します。 柔軟なデータ処理に活かしてください。 プログラム例はいずれもそのまま動作するように書いてあります。 ぜひ R のコンソールにコピーして試してみてください。 リストの作成、要素の指定、要素の代入 リストの作成 リストを作るには、 関数 l
R で自動作図 どんな絵でも,何十回でも,何百枚でも 竹中明夫 (国立環境研) プログラミング環境 +実行環境 統計解析関数群 描画関数群 プログラム作図のすすめ まずは描いてみる 高水準作図関数と低水準作図関数 繰り返し作業をプログラムで 画像の保存 × Rのプログラムで絵が描けるよう になる ○ Rのプログラムで絵が描けそうな 気になる ◎ Rのプログラムで絵を描きたくなる この話の目指すところ やる気にさえなれば,世の中に はさまざまな情報がある. 0 5 10 15 20 25 30 0 5 10 15 20 25 30 Amount of job Required efforts 楽 苦労 楽をするための苦労は惜しまない 手作業 プログラム プログラミングの心構え 作図プログラムを書いて しまえば… • 多量のデータでも片っ端から同じ 形式でグラフ化できる • デザインをちょっと
学術雑誌に投稿された論文は,担当編集者が査読者(校閲者とも呼ぶ)に 読んで評価してもらい,これを参考にしながら受理したり改訂を指示したり 却下したりします. 東北大学の酒井さんのページ に, このプロセスの詳細についての解説 があります. 査読者は,一編の論文あたり2人のことが多いようです. 学術雑誌の平均受理率を40%とし,どの論文も2人の査読者がチェックすると すると,世に出る論文の数の5倍の査読レポートが書かれている計算になります. 論文の書き方についてはいろいろな成書もあり,インターネット上でもさまざまな 情報を得ることができます(たとえば上記の酒井さんの 「若手研究者のお経」 が有名). なのに,その5倍も書かれているはずの査読レポートの書き方の心得の ようなものは,寡聞にして知りません(※).考えるに,査読をするような人なら それなりの見識と経験を持っているはずで,今さら論文の
昔々、わたしが大学院の修士課程1年のとき、学会の地区大会に参加しました。 規模の小さい集まりです。口頭発表のほか、何件かのポスター発表がありました。 そのなかに、ちょっとだけど私の研究と関連がありそうなものがあったので、 おそるおそる近寄ってみました。 発表者はその近くにいましたが、ただ黙って立っているだけでした。 いっぽう、気が小さい私はとても自分から声をかけることはできません。 ポスター発表のメリットは、発表者と聞き手のあいだで密なコミュニケーションが 持てることです。でも、このときは発表者も聞き手もひたすら「……」 「……」で、まったくやりとりのないまま数分が経過し、 いたたまれなくなった私はその場を離れました。 この時から、ポスター発表は発表者も聞き手も気まずい思いをするものだという 警戒感を持ってしまいました。 でも、その後、聞き手としても話し手としてもポスター発表を体験する機会
学会発表の心得など 聞き手と触れあうポスター発表のために (2015-02-24 改訂) 聞き手に届く学会発表のために(口頭発表の心得) (2008-09-08 改訂) 学会やセミナーで質疑応答を楽しむ (2009-08-17 改訂) 宴のあとに:学会が終わってからやること (2002-02-22) プレゼン用ソフトのスマートな操縦:ショートカットキーの覚え書き (2011-09-02) 研究者がウェブで語れば皆が楽しい (2004-02-06 改訂) ウェブにのせる図の作り方(Windows 版)+ PowerPoint での画像の貼りこみ (ファイルサイズを抑える) (2008-08-21 改訂) 投稿論文の査読のしかたを考える (2001-01-29)
R でプログラミング:データの一括処理とグラフ描き 14. R の入出力画面を経由せずに実行:他のプログラムからの呼び出し ※このページは,Perl や Ruby などのスクリプト言語から R を呼び出す際に 必要な情報を説明しています.こうした言語の知識がないと意味不明かも知れませんが, その場合にはそもそもここで書いた知識を使うことはないでしょう. ※実行環境としては Windows のコマンドプロンプトを想定していますが, Unix 系OS の仮想端末でもほぼ同様のことができるでしょう. R の入出力画面を経由しないことのメリット R での作業を自動化するにあたって,GUI (R の入出力ウィンドウ)での手作業が じゃまになることもあります. GUI を経由せず, Perl や Ruby といったスクリプト言語のプログラム中で R のプログラムの実行も制御できれば,さらに自動化の幅は
プログラムでグラフを描くメリット データを表のまま眺めていたのでは,なかなか特徴はつかめません. まずはグラフを描いてじっくり吟味すると,おもしろいパターンが見えてくる かもしれません. R は,統計解析関数が豊富に用意されているだけでなく,グラフを描く機能も充実しています. ごくごく簡単な命令で '適当に' 図を描いてくれる関数がある一方で, 細かいところまで思うままに制御して描画することも可能です. RjpWiki のページ一覧中の グラフィックス参考実例集 のあたりをあちこちながめると,じつに多彩なグラフが描けることが分かるでしょう. 地図だって描けます (たとえば Rmapを使った地図表示を参照). プログラムで図を描くのは,マウスなどで手作業するのに比べて めんどうそうな気がします.でも,一度プログラムを書いてしまえば 何枚でも同じフォーマットで描けますし,たくさんのデータファイ
ウェブにのせる図の作り方(Windows 版) +おまけ:PowerPoint での画像の貼りこみ (ファイルサイズを抑える) 2005-01-07 updated on 2008-08-21 わたしがウェブページ(いわゆるホームページ)に載せる画像ファイルを どのように作っているのかを簡単なメモにまとめるつもりで 書きはじめた文章ですが,画像ファイルの基礎知識まで 詰め込んでしまい,あんまり簡単ではなくなってしまいました. 写真だけでなくグラフなどの図を扱うことが多いかたを イメージして書きました.MS Windows 上で作業することを想定していますが, 画像形式の話など,他の OS を使っている場合にも参考になる部分があるかもしれません. 特定のアプリケーションに依存しない一般的なことを中心に書きましたが, PowerPoint での画像の貼りこみについても少しだけ書きました. この
前のページで,ひとつのデータファイルの内容を読み込んで,データフレームにしまいました. それから,データフレーム中の特定のデータを指定する方法をいろいろ試してみました. このページでは,データフレームを使って簡単な計算をしてみます. そしてその結果をファイルにしまう方法を紹介します. 簡単な統計計算 平均などを計算させる まえのページで使ったのと同じ,len_width.txt のデータを使います. これを d <- read.table('len_width.txt', header 2015) でデータフレームに読み込んであるとします. まずはほんとに簡単な関数,何個のデータがあるかを求める length, 平均を計算する mean, 分散(標本分散でなく不偏分散)を計算する var, 中央値を計算する median を使ってみます. d にしまったデータフレームの1列め,len とい
よいプログラムはよいデータ構造から アルゴリズム(計算手順)+データ構造がプログラムだと言われます. アルゴリズムを考えることだけではなく,データ構造の設計も プログラムの設計の重要な要素です. データ構造とは,「複数のデータを結びつけて管理するときの,まとめ方の構造」 とでも言ったらよいでしょうか.たとえば,配列は複数のデータを順番に並んだ ものとしてまとめて管理するひとつのデータ構造ですし,ハッシュは キーになる文字列とそれに対応する値というペアを,順不同でまとめて 管理するデータ構造です. 配列もハッシュもなしでプログラムを書くとなるとどんなに不自由かを考えれば, データ構造の重要性は想像がつくでしょうか. 表計算ソフト(Excelなど)は,2次元配列というデータ構造が基本になってますね. では,配列とハッシュだけ(あるいは2次元配列だけ)あればすべて済むかというと, そんなことはあ
この文書の最終的な目標は,いくつものデータセットを一括処理するためのプログラムを 書くことですが,そのまえに,ひとつのデータファイルを読み込んでの処理を ごくごく簡単に練習してみます. 練習用ディレクトリとデータファイルの用意 すでに前のページの練習のためにディレクトリは作ってあるかもしれません. それならそれを使いましょう.まだ作ってないなら,さっそく用意してください. 名前はなんでもけっこうです. そのディレクトリの中に,最初に使う練習用データ len_width.txt を入れます. >データファイル len_width.txt クリックするとそのまま内容が表示される場合,全体をコピーしてから エディタの新規文書に貼りつけるとか,「対象をファイルに保存」「リンク先を保存」 (ブラウザによる)というようなメニュー項目を選ぶとかしてみてください. このファイルに,以下のように3列のデータ
消去せずに上書き 座標系の設定というのは,横軸と縦軸それぞれの最小値,最大値を いくつにするかを決めるということです. 高水準作図関数は,与えられたデータの値の範囲から,それらがうまく おさまり,かつ軸の両端が中途半端な値にならないように,座標系を 設定してくれます. 高水準作図関数は,ふつうは前のグラフを消して新しい図を書きます. けれども,描画前に par(new=T) として,グラフィックパラメータ new にT(真) を設定すると, まっさらな作図デバイスが用意されたものと思って,消去作業をしません. ただし,そこに何が描かれているかはいっさい関知しない(なにせ白紙だと思っている)ので, 前の作図のときの座標系も知りません. ですから,同じ座標系でプロットを重ねたいなら,座標系を明示的に指定してやる必要があります. <練習> 前のページで, t <- read.table('tem
※以下の説明を読むときには,正規表現を整理した 別表 を別ウインドウで開いておくと便利かもしれません. >別表を別ウインドウで開く '同じパターンが再現する'というパターンは後方参照で 前のページで,正規表現を使ったパターンマッチについて簡単に説明しました. ここまでの知識を使って,いろんなパターンの表現方法を考えてみてください. たとえばメールアドレスをどう表現するか,電話番号をどう表現するか, 自分の扱うデータのなかに出てくる文字列パターンをどう表現するか. パズル的な工夫で,いろんなことが表現できます. 後方参照というものを使わないと表現がむずかしいパターンもあります. 後方参照は別表のエスケープシーケンスの終わりの ほうに載っています.パターンの中で,() で囲った部分にマッチした文字列を 意味するものです.() の出てきた順番に,\1, \2,...と書いて指定します. 特殊変数
次のページ
このページを最初にブックマークしてみませんか?
『TAKENAKA's Web Page』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く