ch_stat34
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン | |||
| ch_stat34 [2020/01/11 12:24] – [ドリトル 統計機能 (V3.4)] klab | ch_stat34 [2020/01/11 12:25] (現在) – [ドリトル 統計機能 (V3.4)] klab | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | # ドリトル 統計機能 (V3.4) | ||
| + | |||
| + | 本項では、ドリトルの統計機能について下記の通り説明を行います。 | ||
| + | |||
| + | * データ入力 (データファイルの読み込み、配列でのデータ作成) | ||
| + | * データ処理 (扱うデータの範囲を絞る、並び替え等) | ||
| + | * データ分析 (相関係数や度数分布等) | ||
| + | * データの可視化(グラフや表の描画・表示) | ||
| + | |||
| + | |||
| + | ## 1. テーブルオブジェクトの作成 | ||
| + | |||
| + | 統計機能ではテーブルオブジェクトにより、データを表のように扱うことができます。テーブルオブジェクトの持つ表形式のデータをテーブルと呼びます。テーブルオブジェクトは、外部データを読み込む方法と配列を使って作成する方法の2種類の方法で作成できます。 | ||
| + | |||
| + | ### 1.1 外部データの読み込みによる作成 | ||
| + | 次のようなテキストファイルからデータを読み込むことができます。Excelなどの表計算ソフトでは、保存時に「テキスト(タブ区切り)(*.txt)」を選びます。保存されたファイルの拡張子は「.txt」のままでも扱えますが、「.tsv」に変更しておくとタブ区切りであることが明確になります。 | ||
| + | |||
| + | * 1行目は各列のフィールド名を書きます。フィールド名には漢字/ | ||
| + | * フィールド名には記号を含む名前は使えません。数字で始まるフィールド名は、先頭に「F」のような英字が付けられた形で読み込まれます。 | ||
| + | * 1列目は主キーとなる重複のないデータを置きます。 | ||
| + | * フィールド名やデータの間はタブまたはカンマで区切ります。ファイルの1行目がタブで区切られていた場合はタブで、そうでない場合はカンマで区切る形で読み込まれます。 | ||
| + | * 標準の文字コードは環境に依存します(以後、環境標準文字コードと称します)。 | ||
| + | * Windows: | ||
| + | * Mac:UTF-8 | ||
| + | * Linux:UTF-8 | ||
| + | |||
| + | |||
| + | |||
| + | タブとカンマ以外の区切り文字を使う場合は、テーブルオブジェクトの「区切り文字」メソッドで指定してください。環境標準文字コード以外の文字コードのファイルを読み込む場合は、「文字コード」メソッドでファイルで利用されている文字コード(「UTF-8」など)を指定してください。 | ||
| + | |||
| + | ここではドリトルに標準で用意されている「data/ | ||
| + | このデータは、西宮市の高等学校に通う生徒のデータの想定で作成されており、「出席番号」「通学手段」「住所」「読書冊数」「自宅までの距離」「年度」という6つのフィールドから構成されています。各データはタブで区切られています。 | ||
| + | |||
| + |  | ||
| + | |||
| + | 次のプログラムでは「school.tsv」から、テーブルオブジェクトを作成し、「通学データ」という変数に代入しています。 | ||
| + | |||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | </ | ||
| + | |||
| + | ^外部データの読み込み^ | ||
| + | |テーブルオブジェクト名=テーブル!" | ||
| + | |||
| + | |||
| + | 次のプログラムでは、区切り文字を「, | ||
| + | |||
| + | < | ||
| + | 例題=テーブル!"," | ||
| + | </ | ||
| + | |||
| + | ^区切り文字の指定^ | ||
| + | |テーブルオブジェクト!" | ||
| + | ^文字コードの指定^ | ||
| + | |テーブルオブジェクト!" | ||
| + | |||
| + | ファイル名が間違っている等の理由でファイルを読めない場合には、「ファイルから作る」メソッドは未定義オブジェクト(undef)を返します。未定義オブジェクトに「表示」などの命令を送ると「オブジェクトが作られていません」というエラーが表示されます。 | ||
| + | |||
| + | 次のようなエラーが表示された場合は、2行目で未定義オブジェクトに「表示」が送られていますので、1行目で通学データに未定義オブジェクトが代入されたことがわかります。1行目の「ファイルから作る」が正しく実行されてテーブルオブジェクトを返すのではなく、正しく実行されずに未定義オブジェクトを返していますので、その理由を検討してください。この例では、「data/ | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| + | テーブルオブジェクトの生成後に、フィールド名を変更することができます。以下のプログラムは、" | ||
| + | |||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | 通学データ!" | ||
| + | </ | ||
| + | |||
| + | ^フィールド名の変更^ | ||
| + | |テーブルオブジェクト!" | ||
| + | |||
| + | |||
| + | ### 1.2 プログラム中でデータを作る | ||
| + | テーブルオブジェクトをファイルからではなくプログラムの中で作ることができます。テーブルオブジェクトを生成する際に引数としてフィールド名を記述します。以下のプログラムでは最初に通学データという名前で6個のフィールドを持つテーブルオブジェクトを作成しています。次に、[追加]命令を使い、通学データに対して1レコードずつデータを追加しています。 | ||
| + | |||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | 通学データ! 1 " | ||
| + | 通学データ! 2 " | ||
| + | 通学データ! 3 " | ||
| + | 通学データ! 4 " | ||
| + | 通学データ! 5 " | ||
| + | </ | ||
| + | |||
| + | ## 2 テーブルオブジェクトの表示 | ||
| + | |||
| + | テーブルを実行画面へ出力するには、[表示]命令を使います。テーブルは[表示]命令を使って出力できます。以下の例では、「通学データ」という名前のテーブルオブジェクトのテーブルを実行画面に新しく、テキストエリアとして表示します。データ中の欠損値は「NA」と表示されます。 | ||
| + | |||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | 通学データ!表示。 | ||
| + | </ | ||
| + | |||
| + | ^表示^ | ||
| + | |テーブルオブジェクト!表示。| | ||
| + | |||
| + | |||
| + | |||
| + | ## 3 テーブルオブジェクトのデータ操作 | ||
| + | |||
| + | データ分析を行うために必要なデータ処理を行います。テーブルオブジェクトに対して、フィールド(列)やレコード(行)の抽出や複数のテーブルの結合など、データベース操作と同様の処理を施すことができます。これらの機能を利用することで、抽出したレコードやフィールドのデータに計算を行ったり、グラフを描画したりすることができます。また、データを昇順、降順に並べ替えたり、重複するデータを削除したりする機能もあります。 | ||
| + | |||
| + | ### 3.1 選択:レコード(行)の抽出 | ||
| + | テーブルから条件に該当するレコード(行)を取り出します。以下の例では、" | ||
| + | |||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | 結果=通学データ!「住所==" | ||
| + | 結果!表示。 | ||
| + | </ | ||
| + | |||
| + | |||
| + | ^選択:レコード(行)の抽出^ | ||
| + | | テーブルオブジェクト!「フィールド名== " | ||
| + | |||
| + | |||
| + | 本機能を活用することで、指定したフィールドの特定の検索条件に該当するデータに対して平均値や合計値等を算出できます。以下の例は、" | ||
| + | |||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | 結果=通学データ!「住所==" | ||
| + | 結果!" | ||
| + | </ | ||
| + | |||
| + | ### 3.2 射影:フィールド(列)の抽出 | ||
| + | テーブルから条件に該当するフィールド(列)を取り出します。以下の例では、" | ||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | 結果=通学データ!" | ||
| + | 結果!表示。 | ||
| + | </ | ||
| + | |||
| + | ^選択:レコード(行)の抽出^ | ||
| + | | テーブルオブジェクト!" | ||
| + | |||
| + | ### 3.3 結合:テーブルオブジェクト同士の結合 | ||
| + | 2つのテーブルを結合したテーブルを作ります。2つのテーブルには、共通のフィールドが1個以上存在する必要があります。以下の例では「住所データ」と「読書データ」の2つのテーブルオブジェクトを結合し、「通学データ」というテーブルオブジェクトを作成しています。 | ||
| + | |||
| + | < | ||
| + | 住所データ=テーブル!" | ||
| + | 住所データ!1 " | ||
| + | 住所データ!2 " | ||
| + | 読書データ=テーブル!" | ||
| + | 読書データ!1 0.5 2015 追加。 | ||
| + | 読書データ!2 1 2015 追加。 | ||
| + | 通学データ=住所データ!(読書データ) 結合 表示。 | ||
| + | </ | ||
| + | |||
| + | ^選択:レコード(行)の抽出^ | ||
| + | | テーブルオブジェクト!(結合するテーブルオブジェクト) 結合。 | | ||
| + | |||
| + | |||
| + | ### 3.4 レコードの追加 | ||
| + | テーブルに新たなレコードを追加します。以下の例では、ファイルから作成したテーブルに2件のレコードを追加し表示しています。 | ||
| + | |||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | 通学データ!73 " | ||
| + | 通学データ!74 " | ||
| + | 通学データ!表示。 | ||
| + | </ | ||
| + | |||
| + | ^追加:レコード(行)の挿入^ | ||
| + | | テーブルオブジェクト!データ1 データ2... 追加。 | | ||
| + | |||
| + | |||
| + | ### 3.5 レコードの並べ替え:昇順・降順 | ||
| + | 並べ替えの基準となるフィールドを指定し、昇順あるいは降順に並べ替えます。 | ||
| + | |||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | 通学データ!" | ||
| + | 通学データ!" | ||
| + | </ | ||
| + | |||
| + | ^レコードの並べ替え:昇順^ | ||
| + | | テーブルオブジェクト!" | ||
| + | ^レコードの並べ替え:降順^ | ||
| + | | テーブルオブジェクト!" | ||
| + | |||
| + | |||
| + | ### 3.6 重複の削除 | ||
| + | テーブル内の重複するレコードを取り除きます。この命令は引数を取りません。以下の例では、通学データから住所のフィールドのみを取り出し、データの重複を取り除いて表示しています。 | ||
| + | |||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | 結果=通学データ!" | ||
| + | 結果!重複なし 表示。 | ||
| + | </ | ||
| + | |||
| + | ^重複なし:重複の削除^ | ||
| + | | テーブルオブジェクト!重複なし。 | | ||
| + | |||
| + | |||
| + | |||
| + | ## 4 統計関数 | ||
| + | |||
| + | 作成したテーブルオブジェクトに対して統計処理を行えます。関数を実行すると、算出したデータを含むテーブルオブジェクトが返ります。 | ||
| + | |||
| + | テーブルの中で、データが入っていない箇所(欠損値)は「NA」と表示されます。統計関数では欠損値を対象から除いて処理が行われます。 | ||
| + | |||
| + | 引数の数が足りない場合、関数は未定義オブジェクト(undef)を返します。合計値のような数値を処理する関数は、データ中に文字列などの数値以外のデータが存在する場合は未定義オブジェクト(undef)を返します。 | ||
| + | |||
| + | 処理結果は[配列にする]命令を使うことで、テーブルオブジェクトの値を配列として取得できます。また、[数にする]命令を使うことで、テーブルオブジェクトの値を数値として取得できます。[数にする]命令は複数の数値が結果としてある場合には一番目の要素を返します。 | ||
| + | |||
| + | 以下の例では、" | ||
| + | |||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | 結果=通学データ!" | ||
| + | 結果の配列=結果!配列にする。 | ||
| + | 結果の数値=結果!数にする。 | ||
| + | ラベル!(結果の配列) 作る。 | ||
| + | ラベル!(結果の数値) 作る。 | ||
| + | </ | ||
| + | |||
| + | |||
| + | ^配列にする^ | ||
| + | | テーブルオブジェクト!配列にする。 | | ||
| + | ^数にする^ | ||
| + | | テーブルオブジェクト!数にする。 | ||
| + | |||
| + | |||
| + | ### 4.1 合計値 | ||
| + | 指定した1つのフィールドの合計値を算出します。以下の例では、" | ||
| + | |||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | 通学データ!" | ||
| + | </ | ||
| + | |||
| + | を算出します。以下の例では、" | ||
| + | |||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | 通学データ!" | ||
| + | </ | ||
| + | |||
| + | を算出し、級数ごとに度数を算出します。級数はスタージェスの公式を用いて算出されます。以下の例では、" | ||
| + | |||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | 通学データ!" | ||
| + | </ | ||
| + | |||
| + | を求めるために、[クロス集計]命令を使って " | ||
| + | |||
| + | を求めるために、[クロス集計]命令を使って" | ||
| + | |||
| + | を求めるために、[クロス集計]命令を使って " | ||
| + | |||
| + | を求めるために、[クロス集計]命令を使って " | ||
| + | |||
| + |  縦軸間隔。 | | ||
| + | |||
| + | |||
| + | ### 6.2 横軸タイトル | ||
| + | グラフの横軸のタイトルを設定します。 | ||
| + | |||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | 結果=通学データ!" | ||
| + | 結果!" | ||
| + | </ | ||
| + | |||
| + | |||
| + | ^横軸タイトル変更:グラフの横軸のタイトルを設定する^ | ||
| + | | グラフ!" | ||
| + | |||
| + | |||
| + | ### 6.3 縦軸タイトル | ||
| + | グラフの縦軸のタイトルを設定します(現在は縦書き文字に対応していないため、()などの記号は表示が崩れます)。 | ||
| + | |||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | 結果=通学データ!" | ||
| + | 結果!" | ||
| + | </ | ||
| + | |||
| + | |||
| + | ^縦軸タイトル:グラフの縦軸のタイトルを設定する^ | ||
| + | | グラフ!" | ||
| + | |||
| + | ### 6.4 位置の指定 | ||
| + | グラフを描画するときの原点(縦軸と横軸の交点)の位置を絶対座標で指定できます(円グラフの場合は中心が原点となります)。 | ||
| + | |||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | 結果=通学データ!" | ||
| + | </ | ||
| + | |||
| + | ^位置:原点を絶対座標で移動させる^ | ||
| + | | グラフ!(横方向の位置) (縦方向の位置) 位置。 | | ||
| + | |||
| + | ### 6.5 移動する | ||
| + | グラフを描画するときの原点(縦軸と横軸の交点)の位置を相対座標で指定します(円グラフの場合は中心が原点となります)。 | ||
| + | |||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | 結果=通学データ!" | ||
| + | </ | ||
| + | |||
| + | |||
| + | ^移動する:原点を相対座標で移動させる^ | ||
| + | | グラフ!(横方向の位置) (縦方向の位置) 移動する。 | | ||
| + | |||
| + | ### 6.6 描画 | ||
| + | グラフオブジェクトからグラフを画面に出力します。 | ||
| + | |||
| + | < | ||
| + | 通学データ=テーブル!" | ||
| + | 結果=通学データ!" | ||
| + | </ | ||
| + | |||
| + | ^描画:画面にグラフを出力する^ | ||
| + | | グラフオブジェクト!描画。 | | ||
