カテゴリー別アーカイブ: R

Rで統計: CSVファイルの読み込み – read.csv()メソッド

読み込むCSVファイルは2007年度のセリーグの打撃成績の順位です。

参考:2007年度 セントラル・リーグ 個人打撃成績(規定打席以上)

batting2007.csv

プロンプト

read.csv()メソッドでCSVファイルを読み込み、そのデータフレームをbatting変数に格納しています。

実行結果を見ると、ファイル1行目のフィールド(列)名が変数名を表し、2行目以降がテーブル本体を表していることが分かります。これによって、例えば安打の列を抽出したい場合は、batting$安打と指定すればOKです。

ただ、毎回々々「batting$安打」と指定するのは億劫ですので、以下のコマンドで簡略化します。

attach()関数によってワークスペースにオブジェクトが保存され、データフレーム内の変数名のみでのアクセスが可能になります。

read.csv()メソッドのheader引数にFALSEを指定した場合

read.csv()メソッドはデフォルトでheader引数にTRUEが指定されていますが、以下のようにFALSE(必ず大文字)を指定することも出来ます。その場合の動作は以下のようになります。

ファイル1行目の列名がテーブル本体のデータセットに組み込まれていることが分かります。この場合の列へのアクセスは上の実行結果から、batting$V3と分かります。フィールド(列)名(一行目)を省略したCSVファイルを読み込みたい場合にはこのオプション引数を指定します。

Rで統計: ヒストグラムの描画 – hist()関数

使用データは、ある30点満点のテストの20人分です。

プロンプト

hist()関数の引数にベクトル変数を代入することでヒストグラムを描画できます。

実行結果

30点満点テスト20人分の成績のヒストグラム

横軸が階級値で縦軸が度数(階級に入るデータ数)です。例えば、15x20点の範囲の人が5人いる、と読めます。ただし、左端の0点データは0~5の階級に入ります。ここでは範囲の境界に注意しましょう(主に私が)。

データ作成に使用した乱数生成スクリプト

つい最近慣れ始めたPythonで書いてしまいました。リスト内包表記が地味に便利なところです。リスト内包表記についてはこちらをご覧ください。→Python: リスト内包表記をfor文に書き換える

そして、乱数モジュールの使い方に関してはこちらを、→Python: 乱数の生成 – random()、randint()、uniform()、seed()メソッド

また、重複のない乱数を生成するスクリプトはこちらをご覧ください。→Python: モジュールにテスト関数を定義 – 重複のない乱数(整数MIN以上MAX以下)の生成

Rで統計: ベクトル変数に対する操作 – 複数データを一括処理

ベクトル変数は複数のデータを1つにまとめた変数で、他言語でいえば配列はリストに相当する機能を備えています。なので「[]」演算子によるベクトル変数の要素、スカラー値へのインデックス指定が可能です。今回はRのベクトル変数内の全要素に対する演算の例を取り上げます。

プロンプト

ベクトル変数名に対してそのまま演算子が使えるのが直感的で良いですね。

プロンプトを使用する際は、print()関数を使用しなくても、変数名のみで値を出力することが可能ですが、私はRファイルにprint()を書き残す習慣があるので、こちらでも付けてあります。

Rで統計: *.Rソースファイルの読み込みと実行 – source()関数

これまでの例は数行のコマンドでしたのでプロンプトに直接を打っていましたが、何十行というロジックをプロンプトに順々に打っていくのは非効率です。今回は、予め外部のテキストファイルにソースコードを書き、そのファイルをプロンプトから呼び出す手順を次の例で示します。

以下のソースコードを拡張子Rのテキストファイルで保存し、プロンプトから読み込んで実行してみましょう。

test.R

このテキストファイルを作業ディレクトリにおきます。なお、作業ディレクトリの設定方法はこちらをご覧ください。→作業ディレクトリの設定と確認 – setwd()、getwd()関数

プロンプト

print()関数を用いて画面へ出力しています。

ここで、この状態のままプロンプトで以下のように入力すると、

このように、読み込んだソースファイル中の変数が使えることが分かります。これは、関数宣言等を別ファイルに保存し、プロンプトから呼び出したい場合によく使います。

Rで統計: 作業ディレクトリの設定と確認 – setwd()、getwd()関数

プログラムからテキストやCSVファイル等を読み込む為にファイルパスの指定する際、ファイル名のみで読み込むホームディレクトリのことを作業ディレクトリといい、その設定方法は以下の2種類あります。

RGuiを使用している場合は、[ファイル]→[ディレクトリの変更]から任意のディレクトリを選択。

コマンドで変更する場合はプロンプトで、

の様に、setwd()関数の引数にディレクトリのパスを代入することで指定します。

また、作業ディレクトリを確認する関数はgetwd()です。

getwd は get work directoryの略かな。

あと、Windowsの場合は作業ディレクトリ設定を恒久的に保存する方法のひとつに、Rgui.exeのショートカットのプロパティの作業フォルダにパスを設定する方法があります。

Rで統計: データ集合中の最大、最小、平均、中央値 – summary()関数

使用するデータに2007年度のセリーグの打撃成績の1位~10位までの安打を用います。

参考:2007年度 セントラル・リーグ 個人打撃成績(規定打席以上)


選 手
1 青木 宣親 (ヤ) 193
2 ラミレス (ヤ) 204
3 谷 佳知 (巨) 172
4 小笠原 道大 (巨) 177
5 栗原 健太 (広) 175
6 高橋 由伸 (巨) 155
7 佐伯 貴弘 (横) 122
8 相川 亮二 (横) 118
9 赤星 憲広 (神) 120
10 宮本 慎也 (ヤ) 139

上表より安打の基本統計量を求めるには以下のコマンドを使用します。

1行目の「> 」以降の文字列がコマンドで2、3行目がその実行結果となり、実行結果の項目の意味はそれぞれ下表のようになります。

summary()関数の戻り値の意味

summary() 意味
Min 最小値
1st Qu 第一四分位数
Median 中央値
Mean 平均値
3rd Qu 第三四分位数
Max 最大値

ここで、中央値とはデータ集合中の中央の順位に位置する値であり、第一四分位数と第三四分位数はそれぞれ、下から数えて1/4、3/4の順位に位置する値です。

ただし、データ個数が偶数個の場合は、中央(1/4、3/4)の順位に近い2つの値の算術平均をとります。

コマンドの説明

c()関数の引数に10人の安打数をカンマ区切りで代入し、戻り値として10人のデータをまとめたベクトル変数を得ます。summary()関数にそのベクトル変数を代入することで今回の実行結果を得ています。

ちなみに、c()の c は combine の頭文字からきています。

中央値と平均値の使い分け

平均値はデータ集合の散らばり具合が分かりませんので、その平均値がデータ集合全体を表すのに妥当かどうか判断できません(→散らばり具合は分散、偏差から分かる)。ただ、中央値によってそれをある程度補完することが出来ます。

仮に、上のデータに年間安打1000本の選手(現実そんなに打席に入れません>_<)を入れると

これによって平均値がかなり押し上げられていますが、中央値は1つずれただけですね。中央値はデータの個数と順序によって決まるものなので、突出したデータが少数入っていてもあまり影響は受けません。

最大値、最小値、平均値、中央値を求める関数(別個に)

ベクトル変数を以下のように設定したとき、

最大値、最小値、平均値、中央値はそれぞれmax()、min()、mean()、median()関数で求まります。