Sas-quick-guide

提供:Dev Guides
移動先:案内検索

SAS-概要

*SAS* は *Statistical Analysis Software* の略です。 SAS Instituteによって1960年に作成されました。 1960年1月1日から、SASはデータ管理、ビジネスインテリジェンス、予測分析、記述的および規範的分析などに使用されました。 それ以降、多くの新しい統計手順とコンポーネントがソフトウェアに導入されました。

統計用のJMP(Jump)の導入により、SASはMacintoshによって導入された*グラフィカルユーザーインターフェイス*を利用しました。 Jumpは基本的に、シックスシグマ、設計、品質管理、エンジニアリング、科学分析などのアプリケーションに使用されます。

SASはプラットフォームに依存しないため、LinuxまたはWindowsのいずれかのオペレーティングシステムでSASを実行できます。 SASは、SASデータセットに対して複数の操作シーケンスを使用してデータ分析用の適切なレポートを作成するSASプログラマーによって推進されています。

長年にわたり、SASは製品ポートフォリオに多数のソリューションを追加してきました。 データガバナンス、データ品質、ビッグデータ分析、テキストマイニング、不正管理、健康科学などのソリューションがあります。 SASにはあらゆるビジネスドメイン向けのソリューションがあると想定できます。

利用可能な製品の一覧を確認するには、https://www.sas.com/en_in/software/all-productsl [SAS Components]にアクセスしてください。

SASを使用する理由

SASは基本的に大規模なデータセットで機能します。 SASソフトウェアの助けを借りて、次のようなデータに対してさまざまな操作を実行できます-

  • データ管理
  • 統計分析
  • 完璧なグラフィックスによるレポート作成
  • 事業計画
  • オペレーションズリサーチとプロジェクト管理
  • 品質改善
  • アプリケーション開発
  • データ抽出
  • データ変換 *データの更新と変更

SASのコンポーネントについて話すと、SASでは200を超えるコンポーネントが利用可能です。

Sr.No. SAS Component & their Usage
1
  • Base SAS*

これは、データ管理機能とデータ分析用のプログラミング言語を含むコアコンポーネントです。 また、最も広く使用されています。

2

SAS/GRAPH

適切な形式で結果をよりよく理解し、紹介するためのグラフ、プレゼンテーションを作成します。

3

SAS/STAT

分散分析、回帰、多変量分析、生存分析、心理測定分析、混合モデル分析を使用して統計分析を実行します。

4

SAS/OR

オペレーションズリサーチ。

5

SAS/ETS

計量経済学と時系列分析。

6

SAS/IML

CInteractiveマトリックス言語。

7

SAS/AF

アプリケーション機能。

8

SAS/QC

品質管理。

9

SAS/INSIGHT

データマイニング。

10

SAS/PH

臨床試験分析。

11

SAS/Enterprise Miner

データマイニング。

SASソフトウェアの種類

  • WindowsまたはPC SAS
  • SAS EG(エンタープライズガイド)
  • SAS EM(エンタープライズマイナー、すなわち 予測分析用)
  • SAS手段 *SAS統計

ほとんどの場合、組織およびトレーニング機関でWindow SASを使用します。 一部の組織ではLinuxを使用していますが、グラフィカルユーザーインターフェイスがないため、クエリごとにコードを記述する必要があります。 しかし、ウィンドウSASには、プログラマーを非常に支援する多くのユーティリティが用意されており、コードの作成時間も短縮されます。

SaSウィンドウには5つの部分があります。

Sr.No. SAS Window & their Usage
1
  • Log Window*

ログウィンドウは、SASプログラムの実行を確認できる実行ウィンドウのようなものです。 このウィンドウでは、エラーも確認できます。 プログラムを実行した後、ログウィンドウを毎回確認することは非常に重要です。 プログラムの実行について適切に理解できるようにします。

2

Editor Window

エディターウィンドウは、SASのすべてのコードを記述する部分です。 それはメモ帳のようなものです。

3

Output Window

出力ウィンドウは、プログラムの出力を確認できる結果ウィンドウです。

4

Result Window

これは、すべての出力のインデックスのようなものです。 SASの1つのセッションで実行したすべてのプログラムがそこにリストされ、出力結果をクリックして出力を開くことができます。 しかし、これらはSASの1つのセッションでのみ言及されています。 ソフトウェアを閉じてから開くと、結果ウィンドウは空になります。

5

Explore Window

ここにすべてのライブラリがリストされています。 ここからシステムのSASサポートファイルを参照することもできます。

SASのライブラリ

ライブラリはSASのストレージのようなものです。 ライブラリを作成し、そのライブラリにすべての同様のプログラムを保存できます。 SASは、複数のライブラリを作成する機能を提供します。 SASライブラリの長さはわずか8文字です。

SASでは2種類のライブラリが利用可能です-

Sr.No. SAS Window & their Usage
1

Temporary or Work Library

これはデフォルトでSASのライブラリです。 他のライブラリを割り当てない場合、作成するすべてのプログラムはこの作業ライブラリに保存されます。 この作業ライブラリは、エクスプローラーウィンドウで確認できます。 SASプログラムを作成し、そのライブラリに永続ライブラリを割り当てていない場合、その後セッションを終了するとソフトウェアが起動し、このプログラムは作業ライブラリに含まれなくなります。 これは、セッションが終了する限りWorkライブラリにのみ存在するためです。

2

Permanent Library

これらは、SASの永続的なライブラリです。 SASユーティリティを使用するか、エディターウィンドウでコードを記述することにより、新しいSASライブラリを作成できます。 これらのライブラリは、SASでプログラムを作成し、これらの永続的なライブラリに保存すると、必要な限り利用可能になるため、永続的な名前が付けられます。

SAS-環境

SAS Institute Inc. SASプログラミングの学習に十分な無料の SAS University Edition をリリースしました。 BASE SASプログラミングで学習する必要があるすべての機能を提供します。これにより、他のSASコンポーネントを学習できます。

SAS University Editionのダウンロードとインストールのプロセスは非常に簡単です。 仮想環境で実行する必要がある仮想マシンとして使用できます。 SASソフトウェアを実行する前に、仮想化ソフトウェアをPCにインストールしておく必要があります。 このチュートリアルでは、 VMware を使用します。 以下に、SAS環境のダウンロード、セットアップ、およびインストールの検証の手順の詳細を示します。

SAS University Editionをダウンロード

*SAS University Edition* は、https://www.sas.com/en_us/software/university-edition/download-softwarel [SAS University Edition]からダウンロードできます。 ダウンロードを開始する前に、下にスクロールしてシステム要件を確認してください。 このURLにアクセスすると、次の画面が表示されます。

SAS_environment_download_link

仮想化ソフトウェアのセットアップ

同じページを下にスクロールして、インストールstpe-1を見つけます。 このステップでは、あなたに合った仮想化ソフトウェアを入手するためのリンクを提供します。 システムにこれらのソフトウェアのいずれかが既にインストールされている場合は、この手順をスキップできます。

SAS_environment2_vm_options

クイックスタート仮想化ソフトウェア

仮想化環境を初めて使用する場合は、手順2で利用できる次のガイドとビデオを参照して、仮想化環境に慣れることができます。 繰り返しますが、すでに慣れている場合は、この手順をスキップできます。

SAS_environment3_vm_guides_videos

Zipファイルをダウンロードする

手順3では、お使いの仮想化環境と互換性のあるSAS University Editionの適切なバージョンを選択できます。 unvbasicvapp9411005vmxensp0__1.zipに類似した名前のzipファイルとしてダウンロードします

SAS_environment4_vm_download

zipファイルを解凍します

上記のzipファイルを解凍し、適切なディレクトリに保存する必要があります。 この例では、解凍後に次のファイルを表示するVMware zipファイルを選択しました。

SAS_environment5_file_unzip

仮想マシンの読み込み

VMwareプレーヤー(またはワークステーション)を起動し、拡張子が.vmxで終わるファイルを開きます。 以下の画面が表示されます。 vmに割り当てられたメモリやハードディスク容量などの基本設定に注意してください。

SAS_environment6_vm_machine

仮想マシンをパワーオンする

緑の矢印マークの横にある[この仮想マシンのパワーオン]をクリックして、仮想マシンを起動します。 次の画面が表示されます。

SAS_environment7_vm_machine_poweron

SAS vmがロード状態にあると、実行中のvmがSAS環境を開くURLの場所に移動するプロンプトを表示すると、次の画面が表示されます。

SAS_environment8_vm_running

SASスタジオの開始

新しいブラウザタブを開き、上記のURL(PCごとに異なります)をロードします。 SAS環境の準備ができたことを示す次の画面が表示されます。

SAS_environment9_vm_start_studio

SAS環境

[SAS Studioの開始]をクリックすると、SAS環境が取得されます。これは、デフォルトで以下に示すようにビジュアルプログラマモードで開きます。

SAS_environment10_vm_visual_programming

ドロップダウンをクリックして、SASプログラマーモードに変更することもできます。

SAS_environment11_vm_SAS_Programmer

これで、SASプログラムを作成する準備が整いました。

SAS-ユーザーインターフェース

SASプログラムは、 SAS Studio と呼ばれるユーザーインターフェイスを使用して作成されます。

以下は、さまざまなウィンドウとその使用法の説明です。

SASメインウィンドウ

これは、SAS環境に入るときに表示されるウィンドウです。 左側には、さまざまなプログラミング機能をナビゲートするために使用されるナビゲーションペインがあります。 右側には、コードを記述して実行するために使用される*作業領域*があります。

ui_main_screen1.JPG

コードのオートコンプリート

これは、SASキーワードの正しい構文を取得するのに役立つ非常に強力な機能であり、そのキーワードのドキュメントへのリンクを提供します。

ui_program_code2.JPG

プログラム実行

コードの実行は、左から最初のアイコンである実行アイコンまたはF3ボタンを押すことで実行されます。

ui_program_run_4.JPG

プログラムログ

実行されたコードのログは、 Log タブで利用できます。 プログラムの実行に関するエラー、警告、または注意を説明します。 これは、コードをトラブルシューティングするためのすべての手がかりを得るウィンドウです。

ui_program_log_5.JPG

プログラム結果

コード実行の結果は、[結果]タブに表示されます。 デフォルトでは、HTMLテーブルとしてフォーマットされます。

ui_program_result_6.JPG

プログラムタブ

ナビゲーション領域には、プログラムを作成および管理する機能が含まれています。 また、プログラムで使用するビルド済みの機能も提供します。

サーバーのファイルとフォルダー

このタブでは、追加のプログラムを作成し、分析するデータをインポートして、既存のデータを照会できます。 また、フォルダショートカットの作成にも使用できます。

ui_program_multiple_7.JPG

タスク

[タスク]タブには、入力変数のみを指定することで、組み込みのSASプログラムを使用する機能が用意されています。 たとえば、statisticsフォルダーの下には、SASデータセット名と変数名のみを指定することで線形回帰を行うSASプログラムがあります。

ui_program_tasks_8.JPG

スニペット

[スニペット]タブには、SASマクロを記述し、既存のデータセットからファイルを生成する機能があります

ui_program_snippets_9.JPG

プログラムライブラリ

SASは、データセットをSASライブラリに保存します。 一時ライブラリは単一のセッションでのみ使用でき、WORKという名前が付けられています。 ただし、永続ライブラリは常に利用可能です。

ui_program_libraries_10.JPG

ファイルのショートカット

このタブは、SAS環境の外部に保存されているファイルにアクセスするために使用されます。 そのようなファイルへのショートカットは、このタブの下に保存されます。

ui_program_file_shortcuts_11.JPG

SAS-プログラム構造

SASプログラミングでは、まずデータセットを作成してメモリに読み込み、次にこのデータを分析します。 これを達成するために、プログラムが書かれているフローを理解する必要があります。

SASプログラムの構造

以下の図は、SASプログラムを作成するために指定された順序で作成されるステップを示しています。

ps_flow_1

すべてのSASプログラムには、入力データの読み取り、データの分析、分析結果の出力を完了するために、これらすべてのステップが必要です。 また、各ステップの実行を完了するには、各ステップの最後にある RUN ステートメントが必要です。

データステップ

この手順では、必要なデータセットをSASメモリにロードし、データセットの変数(列とも呼ばれる)を識別します。 また、レコード(観測またはサブジェクトとも呼ばれます)もキャプチャします。 DATAステートメントの構文は次のとおりです。

構文

DATA data_set_name;     #Name the data set.
INPUT var1,var2,var3;       #Define the variables in this data set.
NEW_VAR;            #Create new variables.
LABEL;                  #Assign labels to variables.
DATALINES;              #Enter the data.
RUN;

以下の例は、データセットに名前を付け、変数を定義し、新しい変数を作成し、データを入力する簡単なケースを示しています。 ここで、文字列変数の末尾には$があり、数値にはそれがありません。

DATA TEMP;
INPUT ID $ NAME $ SALARY DEPARTMENT $;
comm = SALARY*0.25;
LABEL ID = 'Employee ID' comm = 'COMMISION';
DATALINES;
1 Rick 623.3 IT
2 Dan 515.2 Operations
3 Michelle 611 IT
4 Ryan 729 HR
5 Gary 843.25 Finance
6 Nina 578 IT
7 Simon 632.8 Operations
8 Guru 722.5 Finance
;
RUN;

PROCステップ

このステップでは、SAS組み込みプロシージャを呼び出してデータを分析します。

構文

PROC procedure_name options; #The name of the proc.
RUN;

以下の例は、 MEANS プロシージャを使用して、データセット内の数値変数の平均値を出力することを示しています。

PROC MEANS;
RUN;

OUTPUTステップ

データセットのデータは、条件付き出力ステートメントで表示できます。

構文

PROC PRINT DATA = data_set;
OPTIONS;
RUN;

以下の例は、出力でwhere句を使用して、データセットから少数のレコードのみを生成することを示しています。

PROC PRINT DATA = TEMP;
WHERE SALARY > 700;
RUN;

完全なSASプログラム

以下は、上記の各ステップの完全なコードです。

ps_complete_code

プログラム出力

結果 ps_program_output

SAS-基本構文

他のプログラミング言語と同様に、SAS言語にはSASプログラムを作成するための独自の構文規則があります。

SASプログラムの3つのコンポーネント-ステートメント、変数、およびデータセットは、構文に関する以下のルールに従います。

SASステートメント

  • ステートメントはどこでも開始でき、どこでも終了できます。 最後の行の終わりにあるセミコロンは、ステートメントの終わりを示します。
  • 多くのSASステートメントは同じ行に置くことができ、各ステートメントはセミコロンで終わります。
  • スペースを使用して、SASプログラムステートメント内のコンポーネントを分離できます。
  • SASキーワードでは大文字と小文字は区別されません。
  • すべてのSASプログラムは、RUNステートメントで終了する必要があります。

SAS変数名

SASの変数は、SASデータセットの列を表します。 変数名は以下の規則に従います。

  • 最大32文字の長さにすることができます。
  • 空白を含めることはできません。
  • 文字A〜Z(大文字と小文字を区別しない)またはアンダースコア(_)で始まる必要があります。
  • 最初の文字としてではなく、数字を含めることができます。
  • 変数名は大文字と小文字を区別しません。

# Valid Variable Names
REVENUE_YEAR
MaxVal
_Length

# Invalid variable Names
Miles Per Liter #contains Space.
RainfFall%      # contains apecial character other than underscore.
90_high     # Starts with a number.

SASデータセット

DATAステートメントは、新しいSASデータセットの作成をマークします。 データセット作成のルールは次のとおりです。

  • DATAステートメントの後の1つの単語は、一時的なデータセット名を示します。 つまり、セッションの終了時にデータセットが消去されます。
  • データセット名の前にライブラリ名を付けると、永続的なデータセットになります。 つまり、セッションが終了した後もデータセットは保持されます。
  • SASデータセット名が省略された場合、SASは、SASによって生成された名前(DATA1、DATA2など)で一時データセットを作成します。

# Temporary data sets.
DATA TempData;
DATA abc;
DATA newdat;

# Permanent data sets.
DATA LIBRARY1.DATA1
DATA MYLIB.newdat;

SASファイル拡張子

SASプログラム、データファイル、およびプログラムの結果は、さまざまな拡張子でウィンドウに保存されます。

  • **。sas *-SASエディターまたは任意のテキストエディターを使用して編集できるSASコードファイルを表します。
  • **。log *-SASログファイルを表し、送信されたSASプログラムのエラー、警告、データセットの詳細などの情報が含まれます。
  • *。mht/*l -SAS結果ファイルを表します。
  • **。sas7bdat *-変数名、ラベル、計算結果を含むSASデータセットを含むSASデータファイルを表します。

SASのコメント

SASコードのコメントは、2つの方法で指定されます。 以下は、これら2つの形式です。

*メッセージ;タイプコメント

    • メッセージ; *の形式のコメントには、セミコロンや一致しない引用符を含めることはできません。 また、そのようなコメント内のマクロステートメントへの参照はありません。 複数行にまたがることができ、任意の長さにすることができます。 以下は、単一行のコメントの例です-
* This is comment ;

以下は複数行コメントの例です-

* This is first line of the comment
 *This is second line of the comment;

====/* メッセージ*/タイプコメント

*/* message */* の形式のコメントはより頻繁に使用され、ネストすることはできません。 ただし、複数行にまたがることができ、任意の長さにすることができます。 以下は、単一行のコメントの例です-
/*This is comment*/

以下は複数行コメントの例です-

/* This is first line of the comment
 *This is second line of the comment*/

SAS-データセット

SASプログラムが分析のために利用できるデータは、SASデータセットと呼ばれます。 DATAステップを使用して作成されます。SASは、* CSV、Excel、Access、SPSS、および生データ*などのデータソースとしてさまざまなファイルを読み取ることができます。 また、使用可能な多くの組み込みデータソースもあります。

  • データセットは、SASプログラムで使用され、セッションの実行後に破棄される場合、 temporary Data Set と呼ばれます。
  • ただし、将来使用するために永続的に保存される場合は、「永続データセット」と呼ばれます。 すべての永続データセットは、特定のライブラリに保存されます。

SASデータセットは、行と列の形式で保存され、SASデータテーブルとも呼ばれます。以下に、外部ソースからの赤だけでなく、組み込みの永続データセットの例を示します。

SAS組み込みデータセット

これらのデータセットは、インストール済みのSASソフトウェアですでに利用可能です。 これらは、データ分析用のサンプル式を作成する際に調査および使用できます。 これらのデータセットを調べるには、*ライブラリ→マイライブラリ→ SASHELP *に移動します。 展開すると、使用可能なすべての組み込みデータセットの名前のリストが表示されます。

data_sets_1_explore

下にスクロールして、 CARS という名前のデータセットを見つけます。このデータセットをダブルクリックすると、右ウィンドウペインで開き、さらに調査することができます。 。

data_sets_2_CARS

下のスクロールバーを使用して右にスクロールすると、テーブル内のすべての列とその値を確認できます。

data_sets_3_CARS_explore

外部データセットのインポート

SAS Studioで利用可能なインポート機能を使用して、独自のファイルをデータセットとしてエクスポートできます。 ただし、これらのファイルはSASサーバーフォルダーで使用可能でなければなりません。 したがって、 Server Files and Folders の下にあるアップロードオプションを使用して、ソースデータファイルをSASフォルダーにアップロードする必要があります。

data_sets_4_1_loacl_files_to_server

次に、上記のファイルをインポートしてSASプログラムで使用します。 これを行うには、以下に示すように*タスク→ユーティリティ→データのインポート*オプションを使用します。 [データのインポート]ボタンをダブルクリックして、右側のウィンドウを開き、データセットのファイルを選択します。

次に、右側のペインのデータインポートプログラムの下にある「ファイルを選択」ボタンをクリックします。 以下は、インポートできるファイルタイプのリストです。

data_sets_5_import_files

ローカルシステムに保存されている「employee.txt」ファイルを選択し、以下に示すようにファイルをインポートします。

data_sets_4_2_import_utility

インポートされたデータを表示する

実行オプションを使用して生成されたデフォルトのインポートコードを実行することにより、インポートされたデータを表示できます

data_sets_6_view_imported_data

上記と同じアプローチを使用して他のファイルタイプをインポートし、さまざまなSASプログラムで使用できます。

SAS-変数

一般に、SASの変数は、分析中のデータテーブルの列名を表します。 ただし、プログラミングループのカウンタとして使用するなど、他の目的にも使用できます。 現在の章では、SASデータセットの列名としてのSAS変数の使用について説明します。

SAS変数タイプ

SASには、以下の3種類の変数があります-

数値変数

これはデフォルトの変数タイプです。 これらの変数は数式で使用されます。

構文

INPUT VAR1 VAR2 VAR3;       #Define numeric variables in the data set.

上記の構文では、INPUTステートメントは数値変数の宣言を示しています。

INPUT ID SALARY COMM_PERCENT;

文字変数

文字変数は、数式で使用されない値に使用されます。 それらはテキストまたは文字列として扱われます。 変数名の最後にスペースを入れて$を追加すると、変数は文字変数になります。

構文

INPUT VAR1 $ VAR2 $ VAR3 $;     #Define character variables in the data set.

上記の構文では、INPUTステートメントは文字変数の宣言を示しています。

INPUT FNAME $ LNAME $ ADDRESS $;

日付変数

これらの変数は日付としてのみ扱われ、有効な日付形式である必要があります。 変数は、変数名の末尾にスペースを含む日付形式を追加することにより、日付変数になります。

構文

INPUT VAR1 DATE11. VAR2 MMDDYY10. ; #Define date variables in the data set.

上記の構文では、INPUTステートメントは日付変数の宣言を示しています。

INPUT DOB DATE11. START_DATE MMDDYY10. ;

SASプログラムでの変数の使用

上記の変数は、以下の例に示すように、SASプログラムで使用されます。

以下のコードは、3種類の変数がSASプログラムでどのように宣言され使用されるかを示しています

DATA TEMP;
INPUT ID NAME $ SALARY DEPT $ DOJ DATE9. ;
FORMAT DOJ DATE9. ;
DATALINES;
1 Rick 623.3 IT 02APR2001
2 Dan 515.2 OPS 11JUL2012
3 Michelle 611 IT 21OCT2000
4 Ryan 729 HR 30JUL2012
5 Gary 843.25 FIN 06AUG2000
6 Tusar 578 IT 01MAR2009
7 Pranab 632.8 OPS 16AUG1998
8 Rasmi 722.5 FIN 13SEP2014
;
PROC PRINT DATA = TEMP;
RUN;

上記の例では、すべての文字変数が宣言され、その後に$記号が続き、日付変数が宣言され、その後に日付形式が続きます。 上記のプログラムの出力は次のとおりです。

SAS_BS_variable_output

変数を使用する

変数は、データの分析に非常に役立ちます。 これらは、統計分析が適用される式で使用されます。 Libraries→My Libraries→SASHELP の下にある CARS という名前の組み込みデータセットを分析する例を見てみましょう。 それをダブルクリックして、変数とそのデータ型を調べます。

variable_1_explore_car

次に、SAS studioの[タスク]オプションを使用して、これらの変数の一部の要約統計を作成できます。 Tasks→ Statistics→ Summary Statistics に移動し、それをダブルクリックして、以下に示すようにウィンドウを開きます。 データセット SASHELP.CARS を選択し、分析変数の下で3つの変数MPG_CITY、MPG_HighwayおよびWeightを選択します。 Ctrlキーを押しながらクリックして変数を選択します。 実行をクリックします。

variable_2_select_summary_car

上記の手順の後、結果タブをクリックします。 選択した3つの変数の統計的な要約が表示されます。 最後の列は、分析で使用された観測(レコード)の数を示します。

variable_3_summary_result_car

SAS-ストリング

SASの文字列は、単一引用符のペアで囲まれた値です。 また、文字列変数は、変数宣言の最後にスペースと$記号を追加して宣言されます。 SASには、文字列を分析および操作するための多くの強力な機能があります。

文字列変数の宣言

以下に示すように、文字列変数とその値を宣言できます。 以下のコードでは、長さ6と5の2つの文字変数を宣言しています。 LENGTHキーワードは、複数の観測値を作成せずに変数を宣言するために使用されます。

data string_examples;
   LENGTH string1 $ 6 String2 $ 5;
  /*String variables of length 6 and 5 */
   String1 = 'Hello';
   String2 = 'World';
   Joined_strings =  String1 ||String2 ;
run;
proc print data = string_examples noobs;
run;

上記のコードを実行すると、変数名とその値を示す出力が得られます。

strings_1_concatenate

文字列関数

以下は、頻繁に使用されるいくつかのSAS関数の例です。

SUBSTRN

この関数は、開始位置と終了位置を使用して部分文字列を抽出します。 終了位置が指定されていない場合、文字列の最後まですべての文字が抽出されます。

構文

SUBSTRN('stringval',p1,p2)

以下は、使用されるパラメータの説明です-

  • stringval は、文字列変数の値です。
  • p1 は抽出の開始位置です。
  • p2 は抽出の最終位置です。

data string_examples;
   LENGTH string1 $ 6 ;
   String1 = 'Hello';
   sub_string1 = substrn(String1,2,4) ;
  /*Extract from position 2 to 4 */
   sub_string2 = substrn(String1,3) ;
  /*Extract from position 3 onwards */
run;
proc print data = string_examples noobs;
run;

上記のコードを実行すると、substrn関数の結果を示す出力が得られます。

strings_2_substr

トリム

この関数は、文字列から末尾のスペースを削除します。

構文

TRIMN('stringval')

以下は、使用されるパラメータの説明です-

  • stringval は、文字列変数の値です。
data string_examples;
   LENGTH string1 $ 7  ;
   String1='Hello  ';
   length_string1 = lengthc(String1);
   length_trimmed_string = lengthc(TRIMN(String1));
run;
proc print data = string_examples noobs;
run;

上記のコードを実行すると、TRIMN関数の結果を示す出力が得られます。

strings_3_trimn

SAS-アレイ

SASの配列は、インデックス値を使用して一連の値を保存および取得するために使用されます。 インデックスは、予約済みメモリ領域の場所を表します。

構文

SASでは、配列は次の構文を使用して宣言されます-

ARRAY ARRAY-NAME(SUBSCRIPT) ($) VARIABLE-LIST ARRAY-VALUES

上記の構文では-

  • ARRAY は、配列を宣言するSASキーワードです。
  • ARRAY-NAME は、変数名と同じ規則に従う配列の名前です。
  • SUBSCRIPT は、配列が保存する値の数です。
  • *($)*は、配列が文字値を保存する場合にのみ使用されるオプションのパラメーターです。
  • VARIABLE-LIST は、配列値のプレースホルダーである変数のオプションのリストです。
  • ARRAY-VALUES は、配列に格納されている実際の値です。 ここで宣言するか、ファイルまたはデータラインから読み取ることができます。

配列宣言の例

上記の構文を使用して、配列をさまざまな方法で宣言できます。 以下に例を示します。

# Declare an array of length 5 named AGE with values.
ARRAY AGE[5] (12 18 5 62 44);

# Declare an array of length 5 named COUNTRIES with values starting at index 0.
ARRAY COUNTRIES(0:8) A B C D E F G H I;

# Declare an array of length 5 named QUESTS which contain character values.
ARRAY QUESTS(1:5) $ Q1-Q5;

# Declare an array of required length as per the number of values supplied.
ARRAY ANSWER(*) A1-A100;

配列値へのアクセス

配列に格納されている値には、以下に示す print プロシージャを使用してアクセスできます。 上記のメソッドのいずれかを使用して宣言された後、データはDATALINESステートメントを使用して提供されます。

DATA array_example;
INPUT a1 $ a2 $ a3 $ a4 $ a5 $;
ARRAY colours(5) $ a1-a5;
mix = a1||'+'||a2;
DATALINES;
yello pink orange green blue
;
RUN;
PROC PRINT DATA = array_example;
RUN;

上記のコードを実行すると、次の結果が生成されます-

array_character_2_result

OF演算子を使用する

OF演算子は、配列のデータを分析するときに使用され、配列の行全体で計算を実行します。 以下の例では、各行に値の合計と平均を適用します。

DATA array_example_OF;
   INPUT A1 A2 A3 A4;
   ARRAY A(4) A1-A4;
   A_SUM = SUM(OF A(*));
   A_MEAN = MEAN(OF A(*));
   A_MIN = MIN(OF A(*));
   DATALINES;
   21 4 52 11
   96 25 42 6
   ;
   RUN;
   PROC PRINT DATA = array_example_OF;
   RUN;

上記のコードを実行すると、次の結果が生成されます-

array_of_result

IN演算子を使用する

配列の値は、配列の行の値の存在をチェックするIN演算子を使用してアクセスすることもできます。 以下の例では、データ内の色「Yellow」の可用性を確認します。 この値は大文字と小文字が区別されます。

DATA array_in_example;
   INPUT A1 $ A2 $ A3 $ A4 $;
   ARRAY COLOURS(4) A1-A4;
   IF 'yellow' IN COLOURS THEN available = 'Yes';ELSE available = 'No';
   DATALINES;
   Orange pink violet yellow
   ;
   RUN;
   PROC PRINT DATA = array_in_example;
   RUN;

上記のコードを実行すると、次の結果が生成されます-

array_in_result

SAS-数値形式

SASは、さまざまな数値データ形式を処理できます。 変数名の最後にこれらの形式を使用して、特定の数値形式をデータに適用します。 SASは2種類の数値形式を使用します。 1つは informat と呼ばれる数値データの特定の形式を読み取るためのもので、もう1つは output format と呼ばれる特定の形式で数値データを表示するためのものです。

構文

数値入力形式の構文は-

Varname Formatnamew.d

以下は、使用されるパラメータの説明です-

  • Varname は変数の名前です。
  • Formatname は、変数に適用される数値形式の名前です。
  • w は、変数に格納できるデータ列の最大数(小数点以下の桁数と小数点自体を含む)です。
  • d は、小数点以下の桁数です。

数値形式の読み取り

以下は、SASにデータを読み込むために使用される形式のリストです。

入力数値形式

Format Use
n. Maximum "n" number of columns with no decimal point.
n.p Maximum "n" number of columns with "p" decimal points.
COMMAn.p Maximum "n" number of columns with "p" decimal places which removes any comma or dollar signs.
COMMAn.p Maximum "n" number of columns with "p" decimal places which removes any comma or dollar signs.

数値形式の表示

データの読み取り中にフォーマットを適用するのと同様に、SASプログラムの出力でデータを表示するために使用されるフォーマットのリストを以下に示します。

出力数値フォーマット

Format Use
n. Write maximum "n" number of digits with no decimal point.
n.p Write maximum "n.p" number of columns with "p" decimal points.
DOLLARn.p Write maximum "n" number of columns with p decimal places, leading dollar sign and a comma at the thousandth place.

注意してください-

  • 小数点以下の桁数がフォーマット指定子よりも少ない場合、ゼロが最後に追加されます
  • 小数点以下の桁数がフォーマット指定子よりも大きい場合、最後の桁は「四捨五入」されます。

以下の例は、上記のシナリオを示しています。

DATA MYDATA1;
input x 6.;/*maxiiuum width of the data*/
format x 6.3;
datalines;
8722
93.2
.1122
15.116
PROC PRINT DATA = MYDATA1;
RUN;

DATA MYDATA2;
input x 6.;/*maximum width of the data*/
format x 5.2;
datalines;
8722
93.2
.1122
15.116
PROC PRINT DATA = MYDATA2;
RUN;
DATA MYDATA3;
input x 6.;/*maximum width of the data*/
format x DOLLAR10.2;
datalines;
8722
93.2
.1122
15.116
PROC PRINT DATA = MYDATA3;
RUN;

上記のコードを実行すると、次の結果が生成されます-

# MYDATA1.
Obs     x
1   8722.0 # Display 6 columns with zero appended after decimal.
2   93.200 # Display 6 columns with zero appended after decimal.
3   0.112  # No integers before decimal, so display 3 available digits after decimal.
4   15.116 # Display 6 columns with 3 available digits after decimal.

# MYDATA2
Obs     x
1   8722  # Display 5 columns. Only 4 are available.
2   93.20 # Display 5 columns with zero appended after decimal.
3   0.11  # Display 5 columns with 2 places after decimal.
4   15.12 # Display 5 columns with 2 places after decimal.

# MYDATA3
Obs     x
1   $8,722.00 # Display 10 columns with leading $ sign, comma at thousandth place and zeros appended after decimal.
2   $93.20    # Only 2 integers available before decimal and one available after the decimal.
3   $0.11     # No integers available before decimal and two available after the decimal.
4   $15.12    # Only 2 integers available before decimal and two available after the decimal.

SAS-オペレーター

SASの演算子は、数学式、論理式、または比較式で使用される記号です。 これらのシンボルはSAS言語に組み込まれており、多くの演算子を1つの式に組み合わせて最終的な出力を得ることができます。

以下は、SASカテゴリの演算子のリストです。

  • 算術演算子
  • 論理演算子
  • 比較演算子
  • 最小/最大演算子
  • 連結演算子

それぞれを1つずつ見ていきます。 演算子は、SASプログラムによって分析されているデータの一部である変数とともに常に使用されます。

算術演算子

次の表に、算術演算子の詳細を示します。 それぞれ値が 8 および 4 の2つのデータ変数 V1 および* V2 *を想定します。

Operator Description Example
+ Addition V1+V2=12
- Subtraction V1-V2=4
* Multiplication V1*V2=32
/ Division V1/V2=2
** Exponentiation V1**V2=4096

DATA MYDATA1;
input @1 COL1 4.2   @7 COL2 3.1;
Add_result = COL1+COL2;
Sub_result = COL1-COL2;
Mult_result = COL1*COL2;
Div_result = COL1/COL2;
Expo_result = COL1**COL2;
datalines;
11.21 5.3
3.11  11
;
PROC PRINT DATA = MYDATA1;
RUN;

上記のコードを実行すると、次の出力が得られます。

operators_arithmrtic

論理演算子

次の表に、論理演算子の詳細を示します。 これらの演算子は、式の真理値を評価します。 したがって、論理演算子の結果は常に1または0です。 それぞれ値が 8 および 4 の2つのデータ変数 V1 および* V2 *を想定します。

Operator Description Example
& The AND Operator. If both data values evaluate to true then the result is 1 else it is 0. (V1>2 & V2 > 3) gives 0.
The OR Operator. If any one of the data values evaluate to true then the result is 1 else it is 0.
(V1>9 & V2 > 3) is 1. ~ The NOT Operator. The result of NOT operator in form of an expression whose value is FALSE or a missing value is 1 else it is 0.

DATA MYDATA1;
input @1 COL1 5.2   @7 COL2 4.1;
and_=(COL1 > 10 & COL2 > 5 );
or_ = (COL1 > 12 | COL2 > 15 );
not_ = ~( COL2 > 7 );
datalines;
11.21 5.3
3.11  11.4
;
PROC PRINT DATA = MYDATA1;
RUN;

上記のコードを実行すると、次の出力が得られます。

operators_logical

比較演算子

次の表に、比較演算子の詳細を示します。 これらの演算子は変数の値を比較し、結果はTRUEの場合は1、Falseの場合は0で表される真理値です。 それぞれ値が 8 および 4 の2つのデータ変数 V1 および* V2 *を想定します。

Operator Description Example
= The EQUAL Operator. If both data values are equal then the result is 1 else it is 0. (V1 = 8) gives 1.
^= The NOT EQUAL Operator. If both data values are unequal then the result is 1 else it is 0. (V1 ^= V2) gives 1.
< The LESS THAN Operator. (V2 < V2) gives 1.
The LESS THAN or EQUAL TO Operator. (V2 ⇐ 4) gives 1.
> The GREATER THAN Operator. (V2 > V1) gives 1.
>= The GREATER THAN or EQUAL TO Operator. (V2 >= V1) gives 0.
IN The IN Operator. If the value of the variable is equal to any one of the values in a given list of values, then it returns 1 else it returns 0. V1 in (5,7,9,8) gives 1.

DATA MYDATA1;
input @1 COL1 5.2   @7 COL2 4.1;
EQ_ = (COL1 = 11.21);
NEQ_= (COL1 ^= 11.21);
GT_ = (COL2 => 8);
LT_ = (COL2 <= 12);
IN_ = COL2 in( 6.2,5.3,12 );
datalines;
11.21 5.3
3.11  11.4
;
PROC PRINT DATA = MYDATA1;
RUN;

上記のコードを実行すると、次の出力が得られます。

operators_comparison

最小/最大演算子

次の表に、最小/最大演算子の詳細を示します。 これらの演算子は、行全体で変数の値を比較し、行の値のリストから最小値または最大値が返されます。

Operator Description Example
MIN The MIN Operator. It returns the minimum value form the list of values in the row. MIN(45.2,11.6,15.41) gives 11.6
MAX The MAX Operator. It returns the maximum value form the list of values in the row. MAX(45.2,11.6,15.41) gives 45.2

DATA MYDATA1;
input @1 COL1 5.2   @7 COL2 4.1 @12 COL3 6.3;
min_ = MIN(COL1 , COL2 , COL3);
max_ = MAX( COL1, COl2 , COL3);
datalines;
11.21 5.3 29.012
3.11  11.4 18.512
;
PROC PRINT DATA = MYDATA1;
RUN;

上記のコードを実行すると、次の出力が得られます。

operators_minmax

連結演算子

次の表に、連結演算子の詳細を示します。 この演算子は、2つ以上の文字列値を連結します。 単一の文字値が返されます。

Operator Description Example
The concatenate Operator. It returns the concatenation of two or more values. 'Hello'

DATA MYDATA1;
input  COL1 $   COL2 $  COL3 $;
concat_ = (COL1 || COL2 || COL3);
datalines;
Tutorial s point
simple easy learning
;
PROC PRINT DATA = MYDATA1;
RUN;

上記のコードを実行すると、次の出力が得られます。

operators_concate

演算子の優先順位

演算子の優先順位は、複雑な式に存在する複数の演算子の評価の順序を示します。 次の表は、演算子のグループでの優先順位を示しています。

Group Order Symbols
Group I Right to Left ** + - NOT MIN MAX
Group II Left to Right */
Group III Left to Right + -
Group IV Left to Right
Group V

SAS-ループ

コードのブロックを複数回実行する必要がある場合、状況が発生する可能性があります。 一般に、ステートメントは順番に実行されます-関数内の最初のステートメントが最初に実行され、次に2番目のステートメントが実行されます。 しかし、同じステートメントのセットを繰り返し実行する場合は、ループの助けが必要です。

SASでは、DOステートメントを使用してループが行われます。 DO Loop とも呼ばれます。 以下に、SASのDOループステートメントの一般的な形式を示します。

流れ図

SAS_do_while_loop.jpg

SASのDOループのタイプは次のとおりです。

Sr.No. Loop Type & Description
1

DO Index.

ループは、インデックス変数の開始値から終了値まで続きます。

2

DO WHILE.

while条件がfalseになるまでループが続きます。

3

DO UNTIL.

UNTIL条件がTrueになるまでループが続きます。

SAS-意思決定

意思決定構造では、プログラマーは、プログラムが評価またはテストする1つ以上の条件を、条件が true であると判断された場合に実行されるステートメント、およびオプションで次の場合に実行されるステートメントとともに指定する必要があります。条件は false であると判断されます。

以下は、ほとんどのプログラミング言語で見られる典型的な意思決定構造の一般的な形式です-

意思決定

SASは、次のタイプの意思決定ステートメントを提供します。 詳細を確認するには、次のリンクをクリックしてください。

Sr.No. Statement Type & Description
1

IF Statement.

  • ifステートメント*は条件で構成されます。 条件が真の場合、特定のデータがフェッチされます。
2

IF-THEN-ELSE Statement.

ブール条件が偽の場合に実行される* ifステートメント*の後にelseステートメントが続きます。

3

IF-THEN-ELSE-IF Statement.

  • ifステートメント*の後にelseステートメントが続き、さらにIF-THENステートメントのペアが続きます。
4

IF-THEN-DELETE Statement.

  • ifステートメント*は条件で構成され、trueの場合、観測から特定のデータを削除します。

SAS-関数

SASには、データの分析と処理に役立つさまざまな組み込み関数があります。 これらの関数は、DATAステートメントの一部として使用されます。 データ変数を引数として受け取り、別の変数に保存された結果を返します。 関数のタイプによって、取る引数の数は異なります。 ゼロの引数を受け入れる関数もあれば、固定数の変数を受け入れる関数もあります。 以下は、SASが提供する機能のタイプのリストです。

構文

SASで関数を使用するための一般的な構文は次のとおりです。

FUNCTIONNAME(argument1, argument2...argumentn)

ここで、引数は定数、変数、式、または別の関数です。

機能カテゴリ

使用法に応じて、SASの機能は次のように分類されます。

  • 数学的
  • 日時
  • キャラクター
  • 切り捨て
  • その他

数学関数

これらは、変数値に数学的計算を適用するために使用される関数です。

以下のSASプログラムは、いくつかの重要な数学関数の使用を示しています。

  • データMath_functions; *
v1=21; v2=42; v3=13; v4=10; v5=29;

/*Get Maximum value*/
max_val = MAX(v1,v2,v3,v4,v5);

/*Get Minimum value*/
min_val = MIN (v1,v2,v3,v4,v5);

/*Get Median value*/
med_val = MEDIAN (v1,v2,v3,v4,v5);

/*Get a random number*/
rand_val = RANUNI(0);

/*Get Square root of sum of the values*/
SR_val= SQRT(sum(v1,v2,v3,v4,v5));

proc print data = Math_functions noobs;
run;

上記のコードを実行すると、次の出力が得られます-

math_funcs_result

日付と時刻の関数

これらは、日付と時刻の値を処理するために使用される関数です。

以下のSASプログラムは、日付および時刻関数の使用を示しています。

data date_functions;
INPUT @1 date1 date9. @11 date2 date9.;
format date1 date9.  date2 date9.;

/* Get the interval between the dates in years*/
Years_ = INTCK('YEAR',date1,date2);

/* Get the interval between the dates in months*/
months_ = INTCK('MONTH',date1,date2);

/* Get the week day from the date*/
weekday_ =  WEEKDAY(date1);

/*Get Today's date in SAS date format*/
today_ = TODAY();

/*Get current time in SAS time format*/
time_ = time();
DATALINES;
21OCT2000 16AUG1998
01MAR2009 11JUL2012
;
proc print data = date_functions noobs;
run;

上記のコードを実行すると、次の出力が得られます-

date_time_funcs_result

キャラクター関数

これらは、文字またはテキスト値の処理に使用される関数です。

以下のSASプログラムは、文字関数の使用を示しています。

data character_functions;

/*Convert the string into lower case*/
lowcse_ = LOWCASE('HELLO');

/*Convert the string into upper case*/
upcase_ = UPCASE('hello');

/*Reverse the string*/
reverse_ = REVERSE('Hello');

/*Return the nth word*/
nth_letter_ = SCAN('Learn SAS Now',2);
run;

proc print data = character_functions noobs;
run;

上記のコードを実行すると、次の出力が得られます-

char_funcs_result

切り捨て関数

これらは、数値の切り捨てに使用される関数です。

以下のSASプログラムは、切り捨て関数の使用を示しています。

data trunc_functions;

/*Nearest greatest integer*/
ceil_ = CEIL(11.85);

/*Nearest greatest integer*/
floor_ = FLOOR(11.85);

/*Integer portion of a number*/
int_ = INT(32.41);

/*Round off to nearest value*/
round_ = ROUND(5621.78);
run;

proc print data = trunc_functions noobs;
run;

上記のコードを実行すると、次の出力が得られます-

trunc_funcs_result

その他の機能

SASのさまざまな機能をいくつかの例を挙げて理解しましょう。

以下のSASプログラムは、その他の関数の使用を示しています。

data misc_functions;

/*Nearest greatest integer*/
state2=zipstate('01040');

/*Amortization calculation*/
payment = mort(50000, . , .10/12,30*12);

proc print data = misc_functions noobs;
run;

上記のコードを実行すると、次の出力が得られます-

Misc_funcs_result

SAS-入力方法

入力メソッドは、生データの読み取りに使用されます。 生データは、外部ソースまたはストリームデータラインからのものです。 入力ステートメントは、各フィールドに割り当てる名前の変数を作成します。 したがって、入力ステートメントで変数を作成する必要があります。 同じ変数がSASデータセットの出力に表示されます。 以下は、SASで使用可能なさまざまな入力方法です。

  • リスト入力方法
  • 名前付き入力メソッド
  • 列入力方法
  • 書式付き入力メソッド

各入力方法の詳細は次のとおりです。

リスト入力方法

このメソッドでは、変数はデータ型とともにリストされます。 生データは、宣言された変数の順序がデータと一致するように慎重に分析されます。 区切り文字(通常はスペース)は、隣接する列のペア間で均一である必要があります。 結果が間違っているため、欠落データがあると出力に問題が発生します。

次のコードと出力は、リスト入力メソッドの使用を示しています。

DATA TEMP;
INPUT   EMPID ENAME $ DEPT $ ;
DATALINES;
1 Rick  IT
2 Dan  OPS
3 Tusar  IT
4 Pranab  OPS
5 Rasmi  FIN
;
PROC PRINT DATA = TEMP;
RUN;

boveコードを実行すると、次の出力が得られます。

list_n_named_input

名前付き入力メソッド

このメソッドでは、変数はデータ型とともにリストされます。 生データは、一致するデータの前で変数名が宣言されるように変更されます。 区切り文字(通常はスペース)は、隣接する列のペア間で均一である必要があります。

次のコードと出力は、名前付き入力メソッドの使用方法を示しています。

DATA TEMP;
INPUT
EMPID= ENAME= $ DEPT= $ ;
DATALINES;
EMPID = 1 ENAME = Rick  DEPT = IT
EMPID = 2 ENAME = Dan  DEPT = OPS
EMPID = 3 ENAME = Tusar  DEPT = IT
EMPID = 4 ENAME = Pranab  DEPT = OPS
EMPID = 5 ENAME = Rasmi  DEPT = FIN
;
PROC PRINT DATA = TEMP;
RUN;

boveコードを実行すると、次の出力が得られます。

list_n_named_input

列入力方法

このメソッドでは、変数はデータの単一の列の値を指定する列のデータ型と幅とともにリストされます。 たとえば、従業員名に最大9文字が含まれ、各従業員名が10列目から始まる場合、従業員名変数の列幅は10〜19になります。

次のコードは、列入力メソッドの使用方法を示しています。

DATA TEMP;
INPUT   EMPID 1-3 ENAME $ 4-12 DEPT $ 13-16;
DATALINES;
14 Rick     IT
241Dan      OPS
30 Sanvi    IT
410Chanchal OPS
52 Piyu     FIN
;
PROC PRINT DATA = TEMP;
RUN;

上記のコードを実行すると、次の結果が生成されます-

column_n_formatted_input

書式付き入力メソッド

このメソッドでは、スペースが見つかるまで変数は固定された開始点から読み取られます。 すべての変数には固定の開始点があるため、変数のペア間の列の数が最初の変数の幅になります。 文字「@n」は、変数の開始列位置をn番目の列として指定するために使用されます。

次のコードは、書式付き入力メソッドの使用を示しています

DATA TEMP;
INPUT   @1 EMPID $ @4 ENAME $ @13 DEPT $ ;
DATALINES;
14 Rick     IT
241 Dan      OPS
30 Sanvi    IT
410 Chanchal OPS
52 Piyu     FIN
;
PROC PRINT DATA = TEMP;
RUN;

上記のコードを実行すると、次の結果が生成されます-

column_n_formatted_input

SAS-マクロ

SASには Macros と呼ばれる強力なプログラミング機能があり、コードの繰り返しセクションを回避し、必要なときに何度でも繰り返し使用できます。 また、同じコードの異なる実行インスタンスに対して異なる値を取ることができる動的変数をコード内に作成するのにも役立ちます。 マクロは、マクロ変数と同様の方法で複数回再利用されるコードブロックに対しても宣言できます。 以下の例で、これらの両方を確認します。

マクロ変数

これらは、SASプログラムが繰り返し使用する値を保持する変数です。 これらは、SASプログラムの開始時に宣言され、プログラム本体の後半で呼び出されます。 スコープ内でグローバルまたはローカルにすることができます。

グローバルマクロ変数

これらは、SAS環境で利用可能なSASプログラムからアクセスできるため、グローバルマクロ変数と呼ばれます。 一般に、それらは複数のプログラムによってアクセスされるシステム割り当て変数です。 一般的な例はシステム日付です。

以下は、システム日付を表すSYSDATEというSAS変数の例です。 レポートが生成されるたびにSASレポートのタイトルにシステム日付を印刷するシナリオを考えてください。 タイトルには、値をコーディングせずに現在の日付と曜日が表示されます。 SASHELPライブラリで利用可能なCARSと呼ばれる組み込みSASデータセットを使用します。

proc print data = sashelp.cars;
where make = 'Audi' and type = 'Sports' ;
 TITLE "Sales as of &SYSDAY &SYSDATE";
run;

上記のコードを実行すると、次の出力が得られます。

global_macro_result

ローカルマクロ変数

これらの変数は、プログラムの一部として宣言されているSASプログラムからアクセスできます。 それらは通常、データセットの異なる観測値を処理できる同じSASステートメントslに異なる変数を供給するために使用されます。

構文

ローカル変数は、以下の構文でデカールされます。

% LET (Macro Variable Name) = Value;

ここで、Valueフィールドは、プログラムの必要に応じて、任意の数値、テキスト、または日付値を取ることができます。 マクロ変数名は、有効なSAS変数です。

変数は、変数名の先頭に追加された*&文字を使用するSASステートメントによって使用されます。 以下のプログラムは、メイク「アウディ」とタイプ「スポーツ」のすべての観察を取得します。 *異なるmake *の結果が必要な場合は、プログラムの他の部分を変更せずに変数 *make_name の値を変更する必要があります。 プログラムを持ち込む場合、この変数はSASステートメントで何度も参照できます。

%LET make_name = 'Audi';
%LET type_name = 'Sports';
proc print data = sashelp.cars;
where make = &make_name and type = &type_name ;
 TITLE "Sales as of &SYSDAY &SYSDATE";
run;

上記のコードを実行すると、以前のプログラムと同じ出力が得られます。 しかし、 type name を 'Wagon' に変更して、同じプログラムを実行しましょう。 以下の結果が得られます。

local_macro_result

マクロプログラム

マクロは、名前で参照されるSASステートメントのグループであり、プログラム内でその名前を使用してどこでも使用できます。 %MACROステートメントで始まり、%MENDステートメントで終わります。

構文

ローカル変数は、以下の構文で宣言されます。

# Creating a Macro program.
%MACRO <macro name>(Param1, Param2,….Paramn);

Macro Statements;

%MEND;

# Calling a Macro program.
%MacroName (Value1, Value2,…..Valuen);

以下のプログラムは、 'show_result'; という名前のマクロの下で、SAT staemnetsのグループをデカールします。このマクロは、他のSASステートメントによって呼び出されています。

%MACRO show_result(make_ , type_);
proc print data = sashelp.cars;
where make = "&make_" and type = "&type_" ;
TITLE "Sales as of &SYSDAY &SYSDATE";
run;
%MEND;

%show_result(BMW,SUV);

上記のコードを実行すると、次の出力が得られます。

program_macro_result

一般的に使用されるマクロ

SASには、SASプログラミング言語に組み込まれている多くのMACROステートメントがあります。 それらは、明示的に宣言せずに他のSASプログラムで使用されます。一般的な例は、いくつかの条件が満たされたときにプログラムを終了するか、プログラムログの変数のランタイム値をキャプチャします。 以下に例を示します。

マクロ%PUT

このマクロステートメントは、テキストまたはマクロ変数情報をSASログに書き込みます。 以下の例では、変数「today」の値がプログラムログに書き込まれます。

data _null_;
CALL SYMPUT ('today',
TRIM(PUT("&sysdate"d,worddate22.)));
run;
%put &today;

上記のコードを実行すると、次の出力が得られます。

macro_put

マクロ%RETURN

特定の条件が真であると評価されると、このマクロを実行すると、現在実行中のマクロが正常に終了します。 以下の例では、変数 "val" の値が10になると、マクロは終了します。

%macro check_condition(val);
   %if &val = 10 %then %return;

   data p;
      x = 34.2;
   run;

%mend check_condition;

%check_condition(11)  ;

上記のコードを実行すると、次の出力が得られます。

macro_return

マクロ%END

このマクロ定義には、必要に応じて%ENDステートメントで終了する*%DO%WHILE *ループが含まれています。 次の例では、testという名前のマクロがユーザー入力を受け取り、この入力値を使用してDOループを実行します。 DOループの終わりは%endステートメントによって達成され、マクロの終わりは%mendステートメントによって達成されます。

%macro test(finish);
   %let i = 1;
   %do %while (&i <&finish);
      %put the value of i is &i;
      %let i=%eval(&i+1);
   %end;
%mend test;
%test(5)

上記のコードを実行すると、次の出力が得られます。

macro_do_finish

SAS-日付と時刻

IN SAS日付は、数値の特殊なケースです。 1日には、1960年1月1日から始まる特定の数値が割り当てられます。 この日付には日付値0が割り当てられ、次の日付には日付値1などが割り当てられます。 この日付までの前の日は、-1、-2などで表されます。 このアプローチにより、SASは将来の任意の日付と過去の任意の日付を表すことができます。

SASは、ソースからデータを読み取ると、読み取られたデータを、日付形式で指定された特定の日付形式に変換します。 日付値を格納する変数は、必要な適切な入力形式で宣言されます。 出力日付は、出力データ形式を使用して表示されます。

SAS日付情報

以下に示すように、特定の日付入力形式を使用して、ソースデータを適切に読み取ることができます。 入力形式の最後の数字は、入力形式を使用して完全に読み取られる日付文字列の最小幅を示します。 幅を小さくすると、誤った結果が得られます。 SAS V9には、任意の日付入力を処理できる一般的な日付形式* anydtdte15。*があります。

Input Date Date width Informat
03/11/2014 10 mmddyy10.
03/11/14 8 mmddyy8.
December 11, 2012 20 worddate20.
14mar2011 9 date9.
14-mar-2011 11 date11.
14-mar-2011 15 anydtdte15.

以下のコードは、さまざまな日付形式の読み取りを示しています。 出力値にフォーマットステートメントを適用していないため、すべての出力値は単なる数字であることに注意してください。

DATA TEMP;
INPUT @1 Date1 date11. @12 Date2 anydtdte15. @23 Date3 mmddyy10.   ;
DATALINES;
02-mar-2012 3/02/2012 3/02/2012
;
PROC PRINT DATA = TEMP;
RUN;

上記のコードが実行されると、次の出力が得られます。

date_time_1

SAS日付出力形式

読み取り後の日付は、ディスプレイの必要に応じて別の形式に変換できます。 これは、日付タイプの形式ステートメントを使用して実現されます。 それらは入力形式と同じ形式を取ります。

以下の例では、日付は1つの形式で読み取られますが、別の形式で表示されます。

DATA TEMP;
INPUT  @1 DOJ1 mmddyy10. @12 DOJ2 mmddyy10.;
format  DOJ1 date11.  DOJ2 worddate20. ;
DATALINES;
01/12/2012 02/11/1998
;
PROC PRINT DATA = TEMP;
RUN;

上記のコードが実行されると、次の出力が得られます。

date_time_2

SAS-生データの読み取り

SASは、多くのファイル形式を含むさまざまなソースからデータを読み取ることができます。 SAS環境で使用されるファイル形式については、以下で説明します。

  • ASCII(テキスト)データセット
  • 区切りデータ
  • Excelデータ
  • 階層データ

ASCII(テキスト)データセットの読み取り

これらは、テキスト形式のデータを含むファイルです。 通常、データはスペースで区切られますが、SASが処理できるさまざまなタイプの区切り文字が存在する場合があります。 従業員データを含むASCIIファイルを考えてみましょう。 SASで利用可能な Infile ステートメントを使用してこのファイルを読み取ります。

以下の例では、ローカル環境から emp_data.txt という名前のデータファイルを読み取ります。

data TEMP;
   infile
   '/folders/myfolders/sasuser.v94/finddevguides/emp_data.txt';
   input empID empName $ Salary Dept $ DOJ date9. ;
   format DOJ date9.;
   run;
   PROC PRINT DATA = TEMP;
RUN;

上記のコードが実行されると、次の出力が得られます。

read_raw_data1

区切りデータの読み取り

これらは、コンマやパイプラインなどの区切り文字で列の値が区切られているデータファイルです。 この場合、 infile ステートメントで dlm オプションを使用します。

次の例では、ローカル環境からemp.csvという名前のデータファイルを読み取ります。

data TEMP;
   infile
   '/folders/myfolders/sasuser.v94/finddevguides/emp.csv' dlm=",";
   input empID empName $ Salary Dept $ DOJ date9. ;
   format DOJ date9.;
   run;
   PROC PRINT DATA = TEMP;
RUN;

上記のコードが実行されると、次の出力が得られます。

read_raw_data1

Excelデータの読み取り

SASは、インポート機能を使用してExcelファイルを直接読み取ることができます。 SASデータセットの章で見られるように、MS Excelを含む幅広い種類のファイルを処理できます。 ファイルemp.xlsがSAS環境でローカルに利用可能であると仮定します。

FILENAME REFFILE
"/folders/myfolders/finddevguides/emp.xls"
TERMSTR = CR;

PROC IMPORT DATAFILE = REFFILE
DBMS = XLS
OUT = WORK.IMPORT;
GETNAMES = YES;
RUN;
PROC PRINT DATA = WORK.IMPORT RUN;

上記のコードは、Excelファイルからデータを読み取り、上記の2つのファイルタイプと同じ出力を提供します。

階層ファイルの読み取り

これらのファイルでは、データは階層形式で存在します。 所定の観測について、ヘッダーレコードがあり、その下に多くの詳細レコードが記載されています。 詳細レコードの数は、観測ごとに異なります。 以下は、階層ファイルの図です。

以下のファイルには、各部門の各従業員の詳細がリストされています。 最初のレコードは部門を示すヘッダーレコードで、次のレコードはDTLSで始まるいくつかのレコードが詳細レコードです。

DEPT:IT
DTLS:1:Rick:623
DTLS:3:Mike:611
DTLS:6:Tusar:578
DEPT:OPS
DTLS:7:Pranab:632
DTLS:2:Dan:452
DEPT:HR
DTLS:4:Ryan:487
DTLS:2:Siyona:452

階層ファイルを読み取るには、IF句でヘッダーレコードを識別し、doループを使用して詳細レコードを処理する以下のコードを使用します。

data employees(drop = Type);
   length Type $ 3  Department
      empID $ 3 empName $ 10 Empsal 3 ;
   retain Department;
   infile
   '/folders/myfolders/finddevguides/empdtls.txt' dlm = ':';
   input Type $ @;
   if Type = 'DEP' then
      input Department $;
   else do;
      input empID  empName $ Empsal ;
      output;
   end;
run;

   PROC PRINT DATA = employees;
RUN;

上記のコードが実行されると、次の出力が得られます。

read_heirarchial_data2

SAS-データセットの書き込み

データセットの読み取りと同様に、SASはさまざまな形式でデータセットを書き込むことができます。 SASファイルから通常のテキストファイルにデータを書き込むことができます。これらのファイルは、他のソフトウェアプログラムで読み取ることができます。 SASは PROC EXPORT を使用してデータセットを書き込みます。

PROC EXPORT

これは、さまざまな形式のファイルにデータを書き込むためにSASデータセットをエクスポートするために使用されるSAS組み込みの手順です。

構文

SASでプロシージャを記述するための基本的な構文は次のとおりです-

PROC EXPORT
DATA = libref.SAS data-set (SAS data-set-options)
OUTFILE = "filename"
DBMS = identifier LABEL(REPLACE);

以下は、使用されるパラメータの説明です-

  • SAS data-set は、エクスポートされるデータセット名です。 SASは、異なるオペレーティングシステムで読み取れるファイルを作成することにより、その環境のデータセットを他のアプリケーションと共有できます。 組み込みのEXPORT機能を使用して、さまざまな形式のデータセットファイルを出力します。 この章では、 proc exportdlm および dbms オプションを使用したSASデータセットの作成について説明します。
  • SAS data-set-options は、エクスポートする列のサブセットを指定するために使用されます。
  • filename は、データが書き込まれるファイルの名前です。
  • identifier は、ファイルに書き込まれる区切り文字を示すために使用されます。
  • LABEL オプションは、ファイルに書き込まれる変数の名前を示すために使用されます。

SASHELPライブラリで利用可能なcarsという名前のSASデータセットを使用します。 次のプログラムに示すようなコードで、スペースで区切られたテキストファイルとしてエクスポートします。

proc export data = sashelp.cars
   outfile = '/folders/myfolders/sasuser.v94/finddevguides/car_data.txt'
   dbms = dlm;
   delimiter = ' ';
   run;

上記のコードを実行すると、出力をテキストファイルとして表示し、右クリックしてその内容を以下に示すように表示できます。

write_data_set_result

CSVファイルを書く

コンマ区切りファイルを作成するには、値「csv」を指定したdlmオプションを使用できます。 次のコードは、ファイルcar_data.csvを書き込みます。

proc export data = sashelp.cars
   outfile = '/folders/myfolders/sasuser.v94/finddevguides/car_data.csv'
   dbms = csv;
   run;

上記のコードを実行すると、次の出力が得られます。

write_data_set_csv

タブ区切りファイルの作成

タブ区切りファイルを書き込むために、値「tab」で dlm オプションを使用できます。 次のコードは、ファイル* car_tab.txt。*を書き込みます

proc export data = sashelp.cars
   outfile = '/folders/myfolders/sasuser.v94/finddevguides/car_tab.txt'
   dbms = csv;
   run;

データは、出力配信システムの章で説明するHTMLファイルとして作成することもできます。

SAS-データセットの連結

*SET* ステートメントを使用して、複数のSASデータセットを連結して単一のデータセットを提供できます。 連結されたデータセットの観測値の総数は、元のデータセットの観測値の合計です。 観測の順序は連続しています。 最初のデータセットのすべての観測値の後に、2番目のデータセットのすべての観測値が続きます。

理想的には、すべての結合データセットに同じ変数がありますが、変数の数が異なる場合、結果にはすべての変数が表示され、より小さいデータセットの欠損値があります。

構文

SASのSETステートメントの基本的な構文は次のとおりです-

SET data-set 1 data-set 2 data-set 3.....;

以下は、使用されるパラメータの説明です-

  • data-set1、data-set2 は、次々に書き込まれるデータセット名です。

IT部門用と非IT部門用の2つの異なるデータセットで利用可能な組織の従業員データを考えてみましょう。 すべての従業員の完全な詳細を取得するために、以下に示すSETステートメントを使用して両方のデータセットを連結します。

DATA ITDEPT;
   INPUT empid name $ salary  ;
DATALINES;
1 Rick 623.3
3 Mike 611.5
6 Tusar 578.6
;
RUN;
DATA NON_ITDEPT;
   INPUT empid name $ salary  ;
DATALINES;
2 Dan 515.2
4 Ryan 729.1
5 Gary 843.25
7 Pranab 632.8
8 Rasmi 722.5
RUN;
DATA All_Dept;
   SET ITDEPT NON_ITDEPT;
RUN;
PROC PRINT DATA = All_Dept;
RUN;

上記のコードが実行されると、次の出力が得られます。

concateate1

シナリオ

連結するデータセットに多くのバリエーションがある場合、変数の結果は異なる可能性がありますが、連結されたデータセットの観測値の合計数は常に各データセットの観測値の合計になります。 このバリエーションに関する多くのシナリオを以下で検討します。

異なる数の変数

元のデータセットの1つが他のデータセットよりも多くの変数を持っている場合、データセットは依然として結合されますが、小さいデータセットではこれらの変数は欠落しているように見えます。

以下の例では、最初のデータセットにDOJという名前の追加変数があります。 結果では、2番目のデータセットのDOJの値が欠落しているように見えます。

DATA ITDEPT;
   INPUT empid name $ salary DOJ date9.  ;
DATALINES;
1 Rick 623.3 02APR2001
3 Mike 611.5 21OCT2000
6 Tusar 578.6 01MAR2009
;
RUN;
DATA NON_ITDEPT;
   INPUT empid name $ salary  ;
DATALINES;
2 Dan 515.2
4 Ryan 729.1
5 Gary 843.25
7 Pranab 632.8
8 Rasmi 722.5
RUN;
DATA All_Dept;
   SET ITDEPT NON_ITDEPT;
RUN;
PROC PRINT DATA = All_Dept;
RUN;

上記のコードが実行されると、次の出力が得られます。

concateate2

異なる変数名

このシナリオでは、データセットの変数の数は同じですが、変数名は変数間で異なります。 その場合、通常の連結により結果セット内のすべての変数が生成され、異なる2つの変数の結果が欠落します。 元のデータセットの変数名を変更することはできませんが、作成した連結データセットにRENAME関数を適用できます。 通常の連結と同じ結果が得られますが、もちろん元のデータセットに存在する2つの異なる変数名の代わりに1つの新しい変数名が使用されます。

以下の例では、データセットITDEPTの変数名は ename で、データセット NON_ITDEPT の変数名は* empname。ですが、これらの変数は両方とも同じタイプ(文字)を表しています。 以下に示すように、SETステートメントで *RENAME 関数を適用します。

DATA ITDEPT;
   INPUT empid ename $ salary  ;
DATALINES;
1 Rick 623.3
3 Mike 611.5
6 Tusar 578.6
;
RUN;
DATA NON_ITDEPT;
   INPUT empid empname $ salary  ;
DATALINES;
2 Dan 515.2
4 Ryan 729.1
5 Gary 843.25
7 Pranab 632.8
8 Rasmi 722.5
RUN;
DATA All_Dept;
   SET ITDEPT(RENAME =(ename = Employee) ) NON_ITDEPT(RENAME =(empname = Employee) );
RUN;
PROC PRINT DATA = All_Dept;
RUN;

上記のコードが実行されると、次の出力が得られます。

concateate3

異なる可変長

2つのデータセットの変数の長さが異なる場合、連結されたデータセットの値は、長さが短い変数の一部のデータが切り捨てられます。 最初のデータセットの長さが短い場合に発生します。 これを解決するために、以下に示すように、両方のデータセットにより長い長さを適用します。

以下の例では、変数 ename の長さは、最初のデータセットでは5、2番目では7です。 連結する場合、連結されたデータセットにLENGTHステートメントを適用して、enameの長さを7に設定します。

DATA ITDEPT;
   INPUT  empid 1-2 ename $ 3-7 salary 8-14  ;
DATALINES;
1 Rick  623.3
3 Mike  611.5
6 Tusar 578.6
;
RUN;
DATA NON_ITDEPT;
   INPUT  empid 1-2 ename $ 3-9  salary 10-16 ;
DATALINES;
2 Dan    515.2
4 Ryan   729.1
5 Gary   843.25
7 Pranab 632.8
8 Rasmi  722.5
RUN;
DATA All_Dept;
   LENGTH ename $ 7   ;
   SET ITDEPT  NON_ITDEPT ;
RUN;
PROC PRINT DATA = All_Dept;
RUN;

上記のコードが実行されると、次の出力が得られます。

concateate4

SAS-データセットのマージ

特定の共通変数に基づいて複数のSASデータセットをマージして、単一のデータセットを提供できます。 これは、 MERGE ステートメントと BY ステートメントを使用して行われます。 多くの場合、マージされたデータセットの観測値の総数は、元のデータセットの観測値の総数よりも少なくなります。 これは、共通変数の値に一致がある場合に、両方のデータセットの変数が1つのレコードとしてマージされるためです。

以下に示すデータセットをマージするための2つの前提条件があります-

  • 入力データセットには、マージする少なくとも1つの共通変数が必要です。
  • 入力データセットは、マージに使用される共通変数でソートする必要があります。

構文

SASのMERGEおよびBYステートメントの基本的な構文は次のとおりです-

MERGE Data-Set 1 Data-Set 2
BY Common Variable

以下は、使用されるパラメータの説明です-

  • Data-set1、Data-set2 は、次々と書き込まれるデータセット名です。
  • *共通変数*は、データセットがマージされる一致値に基づいた変数です。

データのマージ

例の助けを借りて、データのマージを理解しましょう。

2つのSASデータセットについて考えます。1つには名前と給与の従業員IDが含まれ、もう1つには従業員IDと部門の​​従業員IDが含まれます。 この場合、各従業員の完全な情報を取得するために、これら2つのデータセットをマージできます。 最終的なデータセットには、従業員ごとに1つの観測値が含まれますが、給与と部門の両方の変数が含まれます。

# Data set 1
ID NAME SALARY
1 Rick 623.3
2 Dan 515.2
3 Mike 611.5
4 Ryan 729.1
5 Gary 843.25
6 Tusar 578.6
7 Pranab 632.8
8 Rasmi 722.5

# Data set 2
ID DEPT
1 IT
2 OPS
3 IT
4 HR
5 FIN
6 IT
7 OPS
8 FIN

# Merged data set
ID NAME SALARY DEPT
1 Rick 623.3    IT
2 Dan 515.2     OPS
3 Mike 611.5    IT
4 Ryan 729.1    HR
5 Gary 843.25   FIN
6 Tusar 578.6   IT
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN

上記の結果は、BYステートメントで共通変数(ID)が使用されている次のコードを使用して実現されます。 両方のデータセットの観測値はすでにID列でソートされていることに注意してください。

DATA SALARY;
   INPUT empid name $ salary  ;
DATALINES;
1 Rick 623.3
2 Dan 515.2
3 Mike 611.5
4 Ryan 729.1
5 Gary 843.25
6 Tusar 578.6
7 Pranab 632.8
8 Rasmi 722.5
;
RUN;
DATA DEPT;
   INPUT empid dEPT $ ;
DATALINES;
1 IT
2 OPS
3 IT
4 HR
5 FIN
6 IT
7 OPS
8 FIN
;
RUN;
DATA All_details;
MERGE SALARY DEPT;
BY (empid);
RUN;
PROC PRINT DATA = All_details;
RUN;

一致する列の欠損値

共通変数の一部の値がデータセット間で一致しない場合があります。 そのような場合でも、データセットはマージされますが、結果に欠損値が含まれます。

ID NAME SALARY DEPT
1 Rick 623.3    IT
2 Dan 515.2     OPS
3 .     .       IT
4 Ryan 729.1    HR
5 Gary 843.25   FIN
6 Tusar 578.6   .
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN

一致のみをマージする

結果の欠損値を回避するために、共通変数の値が一致した観測のみを保持することを検討できます。 これは、 IN ステートメントを使用して実現されます。 SASプログラムのマージステートメントを変更する必要があります。

次の例では、* IN * =値は、データセット SALARYDEPT の両方の値が一致する観測のみを保持します。

DATA All_details;
MERGE SALARY(IN = a) DEPT(IN = b);
BY (empid);
IF a = 1 and b = 1;
RUN;
PROC PRINT DATA = All_details;
RUN;

上記の変更された部分で上記のSASプログラムを実行すると、次の出力が得られます。

1 Rick 623.3    IT
2 Dan 515.2     OPS
4 Ryan 729.1    HR
5 Gary 843.25   FIN
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN

SAS-データセットのサブセット化

SASデータセットのサブセット化とは、より少ない数の変数またはより少ない数の観測、あるいはその両方を選択することにより、データセットの一部を抽出することを意味します。 変数のサブセット化は KEEP および DROP ステートメントを使用して行われますが、オブザベーションのサブセット設定は DELETE ステートメントを使用して行われます。

また、サブセット化操作の結果のデータは、さらなる分析に使用できる新しいデータセットに保持されます。 サブ設定は、主に、分析に関連しない可能性のある変数や観測値を使用せずに、データセットの一部を分析する目的で使用されます。

変数のサブセット化

この方法では、データセット全体からわずかな変数のみを抽出します。

構文

SASで変数をサブ設定するための基本的な構文は次のとおりです-

KEEP var1 var2 ... ;
DROP var1 var2 ... ;

以下は、使用されるパラメータの説明です-

  • var1およびvar2 は、保持または削除する必要があるデータセットの変数名です。

組織の従業員の詳細を含む以下のSASデータセットを検討してください。 データセットからName値とDepartment値を取得することだけに関心がある場合は、次のコードを使用できます。

DATA Employee;
   INPUT empid ename $ salary DEPT $ ;
DATALINES;
1 Rick 623.3    IT
2 Dan 515.2     OPS
3 Mike 611.5    IT
4 Ryan 729.1    HR
5 Gary 843.25   FIN
6 Tusar 578.6   IT
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN
;
RUN;
DATA OnlyDept;
   SET Employee;
   KEEP ename DEPT;
   RUN;
   PROC PRINT DATA = OnlyDept;
RUN;

上記のコードが実行されると、次の出力が得られます。

subsetting1

不要な変数をドロップしても、同じ結果が得られます。 以下のコードはこれを示しています。

DATA Employee;
   INPUT empid ename $ salary DEPT $ ;
DATALINES;
1 Rick 623.3    IT
2 Dan 515.2     OPS
3 Mike 611.5    IT
4 Ryan 729.1    HR
5 Gary 843.25   FIN
6 Tusar 578.6   IT
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN
;
RUN;
DATA OnlyDept;
   SET Employee;
   DROP empid salary;
   RUN;
   PROC PRINT DATA = OnlyDept;
RUN;

サブセット化観測

この方法では、データセット全体からわずかな観測値のみを抽出します。

構文

PROC FREQを使用して、新しいデータセット用に選択された観測値を追跡します。

観測値を設定するための構文は次のとおりです-

IF Var Condition THEN DELETE ;

以下は、使用されるパラメータの説明です-

  • Var は、指定された条件を使用して観測値が削除される値に基づく変数の名前です。

組織の従業員の詳細を含む以下のSASデータセットを検討してください。 給与が700を超える従業員のデータを取得するだけの場合は、次のコードを使用します。

DATA Employee;
   INPUT empid name $ salary DEPT $ ;
DATALINES;
1 Rick 623.3    IT
2 Dan 515.2     OPS
3 Mike 611.5    IT
4 Ryan 729.1    HR
5 Gary 843.25   FIN
6 Tusar 578.6   IT
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN
;
RUN;
DATA OnlyDept;
   SET Employee;
   IF salary < 700 THEN DELETE;
   RUN;
   PROC PRINT DATA = OnlyDept;
RUN;

上記のコードが実行されると、次の出力が得られます。

subsetting2

SAS-データセットのソート

SASのデータセットは、それらに存在する変数のいずれかでソートできます。 これは、データ分析と、マージなどの他のオプションの実行の両方に役立ちます。 並べ替えは、複数の変数だけでなく、任意の1つの変数で実行できます。 SASデータセットでソートを実行するために使用されるSASプロシージャの名前は PROC SORT です。 ソート後の結果は新しいデータセットに保存され、元のデータセットは変更されません。

構文

SASのデータセットのソート操作の基本的な構文は次のとおりです-

PROC SORT DATA = original dataset OUT = Sorted dataset;
   BY variable name;

以下は、使用されるパラメータの説明です-

  • *変数名*は、ソートが行われる列名です。
  • *元のデータセット*は、ソートされるデータセット名です。
  • *ソート済みデータセット*は、ソート後のデータセット名です。

組織の従業員の詳細を含む次のSASデータセットを考えてみましょう。 以下のコードを使用して、給与のデータセットを並べ替えることができます。

DATA Employee;
   INPUT empid name $ salary DEPT $ ;
DATALINES;
1 Rick 623.3    IT
2 Dan 515.2     OPS
3 Mike 611.5    IT
4 Ryan 729.1    HR
5 Gary 843.25   FIN
6 Tusar 578.6   IT
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN
;
RUN;

PROC SORT DATA = Employee OUT = Sorted_sal ;
   BY salary;
RUN ;

PROC PRINT DATA = Sorted_sal;
RUN ;

上記のコードが実行されると、次の出力が得られます。

sort1

逆ソート

デフォルトの並べ替えオプションは昇順です。つまり、観測値は並べ替えられた変数の低い値から高い値の順に配置されます。 ただし、昇順で並べ替えを行うこともできます。

以下のコードでは、DESCENDINGステートメントを使用して逆ソートを実現しています。

DATA Employee;
   INPUT empid name $ salary DEPT $ ;
DATALINES;
1 Rick 623.3    IT
2 Dan 515.2     OPS
3 Mike 611.5    IT
4 Ryan 729.1    HR
5 Gary 843.25   FIN
6 Tusar 578.6   IT
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN
;
RUN;

PROC SORT DATA = Employee OUT = Sorted_sal_reverse ;
   BY DESCENDING salary;
RUN ;

PROC PRINT DATA = Sorted_sal_reverse;
RUN ;

上記のコードが実行されると、次の出力が得られます。

sort2

複数の変数の並べ替え

BYステートメントで変数を使用すると、並べ替えを複数の変数に適用できます。 変数は、左から右の優先順位でソートされます。

以下のコードでは、データセットは最初に変数部門名でソートされ、次に変数名給与でソートされます。

DATA Employee;
   INPUT empid name $ salary DEPT $ ;
DATALINES;
1 Rick 623.3    IT
2 Dan 515.2     OPS
3 Mike 611.5    IT
4 Ryan 729.1    HR
5 Gary 843.25   FIN
6 Tusar 578.6   IT
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN
;
RUN;

PROC SORT DATA = Employee OUT = Sorted_dept_sal ;
   BY salary DEPT;
RUN ;

PROC PRINT DATA = Sorted_dept_sal;
RUN ;

上記のコードが実行されると、次の出力が得られます。

sort3

SAS-データセットのフォーマット

分析されたデータを、データセットに既に存在する形式とは異なる形式で表示したい場合があります。 たとえば、価格情報を持つ変数にドル記号と小数点以下2桁を追加します。 または、テキスト変数をすべて大文字で表示することもできます。 FORMAT を使用して組み込みのSAS形式を適用し、 PROC FORMAT でユーザー定義の形式を適用できます。 また、単一の形式を複数の変数に適用できます。

構文

組み込みのSAS形式を適用するための基本的な構文は次のとおりです-

format variable name format name

以下は、使用されるパラメータの説明です-

  • *変数名*は、データセットで使用される変数名です。
  • format name は、変数に適用されるデータ形式です。

組織の従業員の詳細を含む以下のSASデータセットを考えてみましょう。 すべての名前を大文字で表示したいと思います。 これを実現するには、 formatstatement を使用します。

DATA Employee;
   INPUT empid name $ salary DEPT $ ;
   format name $upcase9. ;
DATALINES;
1 Rick 623.3    IT
2 Dan 515.2     OPS
3 Mike 611.5    IT
4 Ryan 729.1    HR
5 Gary 843.25   FIN
6 Tusar 578.6   IT
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN
;
RUN;
   PROC PRINT DATA = Employee;
RUN;

上記のコードが実行されると、次の出力が得られます。

format1

PROC FORMATの使用

*PROC FORMAT* を使用してデータをフォーマットすることもできます。 以下の例では、部門の名前を表す変数DEPTに新しい値を割り当てます。
DATA Employee;
   INPUT empid name $ salary DEPT $ ;

DATALINES;
1 Rick 623.3 IT
2 Dan 515.2 OPS
3 Mike 611.5 IT
4 Ryan 729.1 HR
5 Gary 843.25 FIN
6 Tusar 578.6 IT
7 Pranab 632.8 OPS
8 Rasmi 722.5 FIN
;
proc format;
value $DEP 'IT' = 'Information Technology'
      'OPS'= 'Operations' ;
RUN;
   PROC PRINT DATA = Employee;
   format name $upcase9. DEPT $DEP.;
RUN;

上記のコードが実行されると、次の出力が得られます。

format2

SAS-SQL

SASは、SASプログラム内でSQLクエリを使用することにより、一般的なリレーショナルデータベースのほとんどを広範囲にサポートしています。 ほとんどの ANSI SQL 構文がサポートされています。 プロシージャー PROC SQL は、SQLステートメントの処理に使用されます。 このプロシージャは、SQLクエリの結果を返すだけでなく、SASテーブルと変数を作成することもできます。 これらすべてのシナリオの例を以下に説明します。

構文

SASでPROC SQLを使用するための基本的な構文は次のとおりです-

PROC SQL;
SELECT Columns
FROM TABLE
WHERE Columns
GROUP BY Columns
;
QUIT;

以下は、使用されるパラメータの説明です-

  • SQLクエリはPROC SQLステートメントの下に記述され、その後にQUITステートメントが続きます。

以下では、このSASプロシージャをSQLの CRUD (作成、読み取り、更新、削除)操作に使用する方法を説明します。

SQL作成操作

SQLを使用して、生データから新しいデータセットを作成できます。 以下の例では、まず、生データを含むTEMPという名前のデータセットを宣言します。 次に、このデータセットの変数からテーブルを作成するSQLクエリを作成します。

DATA TEMP;
INPUT ID $ NAME $ SALARY DEPARTMENT $;
DATALINES;
1 Rick 623.3 IT
2 Dan 515.2 Operations
3 Michelle 611 IT
4 Ryan 729 HR
5 Gary 843.25 Finance
6 Nina 578 IT
7 Simon 632.8 Operations
8 Guru 722.5 Finance
;
RUN;

PROC SQL;
CREATE TABLE EMPLOYEES AS
SELECT * FROM TEMP;
QUIT;

PROC PRINT data = EMPLOYEES;
RUN;

上記のコードが実行されると、次の結果が得られます-

SQL_create_table

SQL読み取り操作

SQLの読み取り操作には、テーブルからデータを読み取るSQL SELECTクエリの作成が含まれます。 以下のプログラムでは、ライブラリSASHELPで利用可能なCARSという名前のSASデータセットを照会します。 クエリは、データセットの列の一部をフェッチします。

PROC SQL;
SELECT make,model,type,invoice,horsepower
FROM
SASHELP.CARS
;
QUIT;

上記のコードが実行されると、次の結果が得られます-

SQL1

WHERE句を使用したSQL SELECT

以下のプログラムは、 where 句を使用してCARSデータセットを照会します。 結果では、「Audi」として行われ、「Sports」として入力された観測のみが取得されます。

PROC SQL;
SELECT make,model,type,invoice,horsepower
FROM
SASHELP.CARS
Where make = 'Audi'
and Type = 'Sports'
;
QUIT;

上記のコードが実行されると、次の結果が得られます-

SQL_where_clause

SQL UPDATE操作

SQL Updateステートメントを使用してSASテーブルを更新できます。 以下では、まずEMPLOYEES2という名前の新しいテーブルを作成し、次にSQL UPDATEステートメントを使用して更新します。

DATA TEMP;
INPUT ID $ NAME $ SALARY DEPARTMENT $;
DATALINES;
1 Rick 623.3 IT
2 Dan 515.2 Operations
3 Michelle 611 IT
4 Ryan 729 HR
5 Gary 843.25 Finance
6 Nina 578 IT
7 Simon 632.8 Operations
8 Guru 722.5 Finance
;
RUN;

PROC SQL;
CREATE TABLE EMPLOYEES2 AS
SELECT ID as EMPID,
Name as EMPNAME ,
SALARY as SALARY,
DEPARTMENT as DEPT,
SALARY*0.23 as COMMISION
FROM TEMP;
QUIT;

PROC SQL;
UPDATE EMPLOYEES2
      SET SALARY = SALARY*1.25;
   QUIT;
      PROC PRINT data = EMPLOYEES2;
RUN;

上記のコードが実行されると、次の結果が得られます-

proc_sql_update.JPG

SQL DELETE操作

SQLの削除操作では、SQL DELETEステートメントを使用してテーブルから特定の値を削除する必要があります。 上記の例のデータを引き続き使用し、従業員の給与が900を超える行をテーブルから削除します。

PROC SQL;
DELETE FROM EMPLOYEES2
      WHERE SALARY > 900;
QUIT;
      PROC PRINT data = EMPLOYEES2;
RUN;

上記のコードが実行されると、次の結果が得られます-

proc_sql_delete.JPG

SAS-ODS

SASプログラムからの出力は、 l や* PDFなどのよりユーザーフレンドリーな形式に変換できます。これは、SASで利用可能な *ODS ステートメントを使用して行われます。 ODSは output delivery system の略です。主にSASプログラムの出力データを、見やすく理解しやすいレポートにフォーマットするために使用されます。 また、出力を他のプラットフォームやソフトウェアと共有するのにも役立ちます。 また、複数のPROCステートメントの結果を1つのファイルにまとめることもできます。

構文

SASでODSステートメントを使用するための基本的な構文は次のとおりです-

ODS outputtype
PATH path name
FILE = Filename and Path
STYLE = StyleName
;
PROC some proc
;
ODS outputtype CLOSE;

以下は、使用されるパラメータの説明です-

  • PATH は、HTML出力の場合に使用されるステートメントを表します。 他の種類の出力では、ファイル名にパスを含めます。
  • *スタイル*は、SAS環境で利用可能な組み込みスタイルの1つを表します。

HTML出力の作成

ODS HTMLステートメントを使用してHTML出力を作成します。次の例では、目的のパスにhtmlファイルを作成します。 スタイルライブラリで利用可能なスタイルを適用します。 上記のパスで出力ファイルを確認でき、SAS環境とは異なる環境で保存するためにダウンロードできます。 2つのproc SQLステートメントがあり、両方の出力が単一のファイルにキャプチャされることに注意してください。

ODS HTML
   PATH = '/folders/myfolders/sasuser.v94/finddevguides/'
   FILE = 'CARS2l'
   STYLE = EGDefault;
proc SQL;
select make, model, invoice
from sashelp.cars
where make in ('Audi','BMW')
and type = 'Sports'
;
quit;

proc SQL;
select make,mean(horsepower)as meanhp
from sashelp.cars
where make in ('Audi','BMW')
group by make;
quit;

ODS HTML CLOSE;

上記のコードが実行されると、次の結果が得られます-

ods_html_output

PDF出力の作成

以下の例では、希望のパスにPDFファイルを作成します。 スタイルライブラリで利用可能なスタイルを適用します。 上記のパスで出力ファイルを確認でき、SAS環境とは異なる環境で保存するためにダウンロードできます。 2つのproc SQLステートメントがあり、両方の出力が単一のファイルにキャプチャされることに注意してください。

ODS PDF
   FILE = '/folders/myfolders/sasuser.v94/finddevguides/CARS2.pdf'
   STYLE = EGDefault;
proc SQL;
select make, model, invoice
from sashelp.cars
where make in ('Audi','BMW')
and type = 'Sports'
;
quit;

proc SQL;
select make,mean(horsepower)as meanhp
from sashelp.cars
where make in ('Audi','BMW')
group by make;
quit;

ODS PDF CLOSE;

上記のコードが実行されると、次の結果が得られます-

ods_pdf_output.JPG

TRF(Word)出力の作成

以下の例では、目的のパスにRTFファイルを作成します。 スタイルライブラリで利用可能なスタイルを適用します。 上記のパスで出力ファイルを確認でき、SAS環境とは異なる環境で保存するためにダウンロードできます。 2つのproc SQLステートメントがあり、両方の出力が単一のファイルにキャプチャされることに注意してください。

ODS RTF
FILE = '/folders/myfolders/sasuser.v94/finddevguides/CARS.rtf'
STYLE = EGDefault;
proc SQL;
select make, model, invoice
from sashelp.cars
where make in ('Audi','BMW')
and type = 'Sports'
;
quit;

proc SQL;
select make,mean(horsepower)as meanhp
from sashelp.cars
where make in ('Audi','BMW')
group by make;
quit;

ODS rtf CLOSE;

上記のコードが実行されると、次の結果が得られます-

ods_rtf_output

SAS-シミュレーション

シミュレーションは、統計量を推定するために、多くの異なるランダムサンプルで繰り返し計算を使用する計算手法です。 SASを使用すると、実世界のシステムで統計特性を指定した複雑なデータをシミュレートできます。 ソフトウェアを使用してシステムのモデルを構築し、実際のシステムの動作をよりよく理解するために使用できるデータを数値的に生成します。 コンピューターシミュレーションモデルを設計する技術の一部は、実際のシステムのどの側面をモデルに含める必要があるかを決定し、モデルによって生成されたデータを使用して効果的な決定を行えるようにすることです。 この複雑さのため、SASにはシミュレーション専用のソフトウェアコンポーネントがあります。

SASシミュレーションの作成に使用されるSASソフトウェアコンポーネントは、 SAS Simulation Studio と呼ばれます。 そのグラフィカルユーザーインターフェイスは、離散イベントシミュレーションモデルの結果を構築、実行、および分析するための完全なツールセットを提供します。

SASシミュレーションを適用できるさまざまな種類の統計分布を以下に示します。

  • 継続的な配布からのデータのシミュレーション
  • 離散分布からのデータのシミュレーション
  • さまざまな分布からのデータのシミュレーション
  • 複雑な分布からのデータのシミュレーション
  • 多変量分布からのデータのシミュレーション
  • サンプリング分布の概算
  • 回帰推定の評価

SAS-ヒストグラム

ヒストグラムは、異なる高さのバーを使用したデータのグラフィカル表示です。 データセット内のさまざまな数値を多くの範囲にグループ化します。 また、連続変数の分布確率の推定を表します。 SASでは、 PROC UNIVARIATE を使用して、以下のオプションでヒストグラムを作成します。

構文

SASでヒストグラムを作成する基本的な構文は次のとおりです-

PROC UNIVARAITE DATA = DATASET;
HISTOGRAM variables;
RUN;
  • DATASET は、使用されるデータセットの名前です。
  • *変数*は、ヒストグラムのプロットに使用される値です。

単純なヒストグラム

変数の名前と値をグループ化するために考慮される範囲を指定することにより、単純なヒストグラムが作成されます。

以下の例では、可変馬力の最小値と最大値を考慮し、50の範囲を取ります。 したがって、値は50のステップでグループを形成します。

proc univariate data = sashelp.cars;
   histogram horsepower
  /midpoints = 176 to 350 by 50;
run;

上記のコードを実行すると、次の出力が得られます-

histogram1

曲線近似によるヒストグラム

追加オプションを使用して、いくつかの分布曲線をヒストグラムに適合させることができます。

以下の例では、ESTとして言及された平均値と標準偏差値で分布曲線を近似しています。 このオプションは、パラメーターの使用と推定を行います。

proc univariate data = sashelp.cars noprint;
histogram horsepower
/
normal (
   mu = est
   sigma = est
   color = blue
   w = 2.5
)
barlabel = percent
midpoints = 70 to 550 by 50;
run;

上記のコードを実行すると、次の出力が得られます-

histogram2

SAS-棒グラフ

棒グラフは、変数の値に比例する棒の長さを持つ長方形の棒でデータを表します。 SASは、プロシージャ PROC SGPLOT を使用して棒グラフを作成します。 棒グラフには単純な棒と積み上げ棒の両方を描画できます。 棒グラフでは、各棒に異なる色を付けることができます。

構文

SASで棒グラフを作成するための基本的な構文は次のとおりです-

PROC SGPLOT DATA = DATASET;
VBAR variables;
RUN;
  • DATASET -使用されるデータセットの名前です。
  • 変数-ヒストグラムのプロットに使用される値です。

シンプルな棒グラフ

単純な棒グラフは、データセットの変数が棒として表される棒グラフです。

以下のスクリプトは、車の長さを棒として表す棒グラフを作成します。

PROC SQL;
create table CARS1 as
SELECT make, model, type, invoice, horsepower, length, weight
   FROM
   SASHELP.CARS
   WHERE make in ('Audi','BMW')
;
RUN;

proc SGPLOT data = work.cars1;
vbar length ;
title 'Lengths of cars';
run;
quit;

上記のコードを実行すると、次の出力が得られます-

barchart1

積み上げ棒グラフ

積み上げ棒グラフは、データセットの変数が別の変数に関して計算される棒グラフです。

以下のスクリプトは、車の種類ごとに車の長さが計算される積み上げ棒グラフを作成します。 groupオプションを使用して、2番目の変数を指定します。

proc SGPLOT data = work.cars1;
vbar length/group = type ;
title 'Lengths of Cars by Types';
run;
quit;

上記のコードを実行すると、次の出力が得られます-

barchart2

集合棒グラフ

クラスター化された棒グラフは、変数の値がカルチャ全体にどのように広がるかを示すために作成されます。

以下のスクリプトは、車の長さが車の種類の周りにクラスター化されたクラスター化された棒グラフを作成します。 。

proc SGPLOT data = work.cars1;
vbar length/group = type GROUPDISPLAY = CLUSTER;
title 'Cluster of Cars by Types';
run;
quit;

上記のコードを実行すると、次の出力が得られます-

barchart3

SAS-円グラフ

円グラフは、異なる色の円のスライスとしての値の表現です。 スライスにはラベルが付けられ、各スライスに対応する番号もチャートに表示されます。

SASでは、円グラフは PROC TEMPLATE を使用して作成されます。これは、パーセンテージ、ラベル、色、タイトルなどを制御するパラメーターを取ります。

構文

SASで円グラフを作成するための基本的な構文は次のとおりです-

PROC TEMPLATE;
   DEFINE STATGRAPH pie;
      BEGINGRAPH;
         LAYOUT REGION;
            PIECHART CATEGORY = variable/
            DATALABELLOCATION = OUTSIDE
            CATEGORYDIRECTION = CLOCKWISE
            START = 180 NAME = 'pie';
            DISCRETELEGEND 'pie'/
            TITLE = ' ';
         ENDLAYOUT;
      ENDGRAPH;
   END;
RUN;
  • *変数*は、円グラフを作成する値です。

シンプルな円グラフ

この円グラフでは、データセットから単一の変数を取得します。 円グラフは、変数の合計値に対する変数のカウントの割合を表すスライスの値で作成されます。

以下の例では、各スライスは車の総数から車のタイプの割合を表しています。

PROC SQL;
create table CARS1 as
SELECT make, model, type, invoice, horsepower, length, weight
 FROM
SASHELP.CARS
WHERE make in ('Audi','BMW')
;
RUN;

PROC TEMPLATE;
   DEFINE STATGRAPH pie;
      BEGINGRAPH;
         LAYOUT REGION;
            PIECHART CATEGORY = type/
            DATALABELLOCATION = OUTSIDE
            CATEGORYDIRECTION = CLOCKWISE
            START = 180 NAME = 'pie';
            DISCRETELEGEND 'pie'/
            TITLE = 'Car Types';
         ENDLAYOUT;
      ENDGRAPH;
   END;
RUN;
PROC SGRENDER DATA = cars1
            TEMPLATE = pie;
RUN;

上記のコードを実行すると、次の出力が得られます-

piechart1

データラベル付きの円グラフ

この円グラフでは、各スライスの小数値とパーセント値の両方を表します。 また、ラベルの位置を変更してチャート内に配置します。 チャートの外観のスタイルは、DATASKINオプションを使用して変更されます。 SAS環境で利用可能な組み込みスタイルの1つを使用します。

PROC TEMPLATE;
   DEFINE STATGRAPH pie;
      BEGINGRAPH;
         LAYOUT REGION;
            PIECHART CATEGORY = type/
            DATALABELLOCATION = INSIDE
            DATALABELCONTENT = ALL
            CATEGORYDIRECTION = CLOCKWISE
            DATASKIN = SHEEN
            START = 180 NAME = 'pie';
            DISCRETELEGEND 'pie'/
            TITLE = 'Car Types';
         ENDLAYOUT;
      ENDGRAPH;
   END;
RUN;
PROC SGRENDER DATA = cars1
            TEMPLATE = pie;
RUN;

上記のコードを実行すると、次の出力が得られます-

piechart2

グループ化された円グラフ

この円グラフでは、グラフに表示される変数の値は、同じデータセットの別の変数に関してグループ化されています。 各グループは1つの円になり、グラフには使用可能なグループの数と同数の同心円があります。

以下の例では、「Make」という名前の変数に関してチャートをグループ化します。 2つの値(「アウディ」と「BMW」)があるため、それぞれが独自のメーカーの車種のスライスを表す2つの同心円を取得します。

PROC TEMPLATE;
   DEFINE STATGRAPH pie;
      BEGINGRAPH;
         LAYOUT REGION;
            PIECHART CATEGORY = type/Group = make
            DATALABELLOCATION = INSIDE
            DATALABELCONTENT = ALL
            CATEGORYDIRECTION = CLOCKWISE
            DATASKIN = SHEEN
            START = 180 NAME = 'pie';
            DISCRETELEGEND 'pie'/
            TITLE = 'Car Types';
         ENDLAYOUT;
      ENDGRAPH;
   END;
RUN;
PROC SGRENDER DATA = cars1
            TEMPLATE = pie;
RUN;

上記のコードを実行すると、次の出力が得られます-

piechart3

SAS-散布図

散布図は、デカルト平面にプロットされた2つの変数の値を使用する一種のグラフです。 通常、2つの変数間の関係を見つけるために使用されます。 SASでは、 PROC SGSCATTER を使用して散布図を作成します。

最初の例ではCARS1という名前のデータセットを作成し、後続のすべてのデータセットに同じデータセットを使用していることに注意してください。 このデータセットは、SASセッションが終了するまで作業ライブラリに残ります。

構文

SASで散布図を作成するための基本的な構文は次のとおりです-

PROC sgscatter  DATA = DATASET;
   PLOT VARIABLE_1 * VARIABLE_2
  /datalabel = VARIABLE group = VARIABLE;
RUN;

以下は、使用されるパラメータの説明です-

  • DATASET はデータセットの名前です。
  • VARIABLE は、データセットから使用される変数です。

単純な散布図

単純な散布図では、データセットから2つの変数を選択し、3番目の変数に関してそれらをグループ化します。 データにラベルを付けることもできます。 結果は、2つの変数がどのように*デカルト平面*に散らばっているかを示しています。

PROC SQL;
create table CARS1 as
SELECT make, model, type, invoice, horsepower, length, weight
FROM
SASHELP.CARS
WHERE make in ('Audi','BMW')
;
RUN;

TITLE 'Scatterplot - Two Variables';
PROC sgscatter  DATA = CARS1;
   PLOT horsepower*Invoice
  /datalabel = make group = type grid;
   title 'Horsepower vs. Invoice for car makers by types';
RUN;

上記のコードを実行すると、次の出力が得られます-

sactter_plot1

予測付き散布図

推定パラメーターを使用して、値の周りに楕円を描くことで、相関の強さを予測できます。 以下のように、追加のオプションを使用して楕円を描きます。

proc sgscatter data = cars1;
compare y = Invoice  x = (horsepower length)
        /group = type  ellipse =(alpha = 0.05 type = predicted);
title
'Average Invoice vs. horsepower for cars by length';
title2
'-- with 95% prediction ellipse --'
;
format
Invoice dollar6.0;
run;

上記のコードを実行すると、次の出力が得られます-

sactter_plot_eliipse

散布図

また、ペアにグループ化することにより、3つ以上の変数を含む散布図を作成することもできます。 以下の例では、3つの変数を検討し、散布図行列を描きます。 結果として得られるマトリックスの3つのペアを取得します。

PROC sgscatter  DATA = CARS1;
   matrix horsepower invoice length
  /group = type;

   title 'Horsepower vs. Invoice vs. Length for car makers by types';
RUN;

上記のコードを実行すると、次の出力が得られます-

sactter_plot_matrix

SAS-箱ひげ図

Boxplotは、四分位数による数値データのグループのグラフィカルな表現です。 ボックスプロットには、ボックス(ヒゲ)から垂直に伸びる線があり、上下の四分位以外の変動を示します。 ボックスの下部と上部は常に1番目と3番目の四分位数であり、ボックス内のバンドは常に2番目の四分位数(中央値)です。 SASでは、 PROC SGPLOT を使用して単純なボックスプロットが作成され、 PROC SGPANEL を使用してパネル化されたボックスプロットが作成されます。

最初の例ではCARS1という名前のデータセットを作成し、後続のすべてのデータセットに同じデータセットを使用していることに注意してください。 このデータセットは、SASセッションが終了するまで作業ライブラリに残ります。

構文

SASで箱ひげ図を作成するための基本的な構文は次のとおりです-

PROC SGPLOT  DATA = DATASET;
   VBOX VARIABLE/category = VARIABLE;
RUN;

PROC SGPANEL  DATA = DATASET;;
PANELBY VARIABLE;
   VBOX VARIABLE>/category = VARIABLE;
RUN;
  • DATASET -使用されるデータセットの名前です。
  • VARIABLE -Boxplotのプロットに使用される値です。

シンプルな箱ひげ図

単純なBoxplotでは、データセットから1つの変数を選択し、別の変数を選択してカテゴリを形成します。 最初の変数の値は、2番目の変数の個別の値の数と同じ数のグループに分類されます。

以下の例では、変数horsepowerを最初の変数として選択し、カテゴリ変数として入力します。 そのため、車の種類ごとの馬力の値の分布の箱ひげ図を取得します。

PROC SQL;
create table CARS1 as
SELECT make, model, type, invoice, horsepower, length, weight
   FROM
   SASHELP.CARS
   WHERE make in ('Audi','BMW')
;
RUN;

PROC SGPLOT  DATA = CARS1;
   VBOX horsepower
  /category = type;

   title 'Horsepower of cars by types';
RUN;

上記のコードを実行すると、次の出力が得られます-

box_plot_1

垂直パネルの箱ひげ図

変数のBoxplotsを多くの垂直パネル(列)に分割できます。 各パネルには、すべてのカテゴリ変数の箱ひげ図が含まれています。 しかし、箱ひげ図は、グラフを複数のパネルに分割する別の3番目の変数を使用してさらにグループ化されます。

以下の例では、変数「make」を使用してグラフをパネル化しました。 'make’には2つの異なる値があるため、2つの垂直パネルを取得します。

PROC SGPANEL  DATA = CARS1;
PANELBY MAKE;
   VBOX horsepower  /category = type;

   title 'Horsepower of cars by types';
RUN;

上記のコードを実行すると、次の出力が得られます-

box_plot_2

水平パネルの箱ひげ図

変数のBoxplotsを多くの水平パネル(行)に分割できます。 各パネルには、すべてのカテゴリ変数の箱ひげ図が含まれています。 しかし、箱ひげ図は、グラフを複数のパネルに分割する別の3番目の変数を使用してさらにグループ化されます。 以下の例では、変数「make」を使用してグラフをパネル化しました。 'make’には2つの異なる値があるため、2つの水平パネルを取得します。

PROC SGPANEL  DATA = CARS1;
PANELBY MAKE/columns = 1 novarname;

   VBOX horsepower  /category = type;

   title 'Horsepower of cars by types';
RUN;

上記のコードを実行すると、次の出力が得られます-

box_plot_3

SAS-算術平均

算術平均とは、数値変数の値を合計し、その合計を変数の数で割った値です。 平均とも呼ばれます。 SASでは、算術平均は PROC MEANS を使用して計算されます。 このSAS手順を使用すると、データセットのすべての変数またはいくつかの変数の平均を見つけることができます。 グループを形成し、そのグループに固有の値の変数の平均を見つけることもできます。

構文

SASで算術平均を計算するための基本的な構文は次のとおりです-

PROC MEANS DATA = DATASET;
CLASS Variables ;
VAR Variables;

以下は、使用されるパラメータの説明です-

  • DATASET -使用されるデータセットの名前です。
  • 変数-データセットからの変数の名前です。

データセットの平均

データセット内の各数値変数の平均は、変数なしでデータセット名のみを指定することにより、PROCを使用して計算されます。

以下の例では、CARSという名前のSASデータセット内のすべての数値変数の平均を見つけます。 小数点以下の最大桁数を2に指定し、それらの変数の合計を見つけます。

PROC MEANS DATA = sashelp.CARS Mean SUM MAXDEC=2;
RUN;

上記のコードが実行されると、次の出力が得られます-

平均

選択変数の平均

*var* オプションで名前を指定することで、いくつかの変数の平均を取得できます。

以下では、3つの変数の平均を計算します。

PROC MEANS DATA = sashelp.CARS mean SUM MAXDEC=2 ;
var horsepower invoice EngineSize;
RUN;

上記のコードが実行されると、次の出力が得られます-

Mean_select_variables

クラスによる平均

他の変数を使用してグループに整理することにより、数値変数の平均を見つけることができます。

以下の例では、自動車の各メーカーの各タイプの可変馬力の平均を見つけます。

PROC MEANS DATA = sashelp.CARS mean SUM MAXDEC=2;
class make type;
var horsepower;
RUN;

上記のコードが実行されると、次の出力が得られます-

mean_with_class

SAS-標準偏差

標準偏差(SD)は、データセット内のデータがどの程度変化したかの尺度です。 数学的には、各値がデータセットの平均値からどれだけ離れているか、または近いかを測定します。 0に近い標準偏差値は、データポイントがデータセットの平均に非常に近い傾向があることを示し、高い標準偏差は、データポイントがより広い範囲の値に分散していることを示します。

SASでは、PROC MEANおよびPROC SURVEYMEANSを使用してSD値が測定されます。

PROC MEANSの使用

  • procを使用してSDを測定するには、* PROCステップでSTDオプションを選択します。 データセットに存在する各数値変数のSD値を引き出します。

構文

SASで標準偏差を計算するための基本的な構文は次のとおりです-

PROC means DATA = dataset STD;

以下は、使用されるパラメータの説明です-

  • Dataset -データセットの名前です。

以下の例では、SASHELPライブラリのCARSデータセットからデータセットCARS1を作成します。 PROC平均ステップでSTDオプションを選択します。

PROC SQL;
create table CARS1 as
SELECT make, type, invoice, horsepower, length, weight
   FROM
   SASHELP.CARS
   WHERE make in ('Audi','BMW')
;
RUN;

proc means data = CARS1 STD;
run;

上記のコードを実行すると、次の出力が得られます-

SD_1.JPG

PROC SURVEYMEANSの使用

この手順は、SDの測定や、カテゴリ変数のSDの測定などのいくつかの高度な機能にも使用され、分散の推定値を提供します。

構文

PROC SURVEYMEANSを使用するための構文は次のとおりです-

PROC SURVEYMEANS options statistic-keywords ;
BY variables ;
CLASS variables ;
VAR variables ;

以下は、使用されるパラメータの説明です-

  • BY -観測のグループを作成するために使用される変数を示します。
  • CLASS -カテゴリー変数に使用される変数を示します。
  • VAR -SDが計算される変数を示します。

以下の例では、クラス変数の各値の統計を作成する class オプションの使用について説明します。

proc surveymeans data = CARS1 STD;
class type;
var type horsepower;
ods output statistics = rectangle;
run;
proc print data = rectangle;
run;

上記のコードを実行すると、次の出力が得られます-

SD_2.JPG

BYオプションを使用する

以下のコードは、BYオプションの例を示しています。 その結果は、BYオプションの値ごとに結果がグループ化されます。

proc surveymeans data = CARS1 STD;
var horsepower;
BY make;
ods output statistics = rectangle;
run;
proc print data = rectangle;
run;

上記のコードを実行すると、次の出力が得られます-

make = "Audi"の結果

SD_3.JPG

make = "BMW"の結果

SD_3.JPG

SAS-頻度分布

頻度分布は、データセット内のデータポイントの頻度を示すテーブルです。 表の各エントリには、特定のグループまたは間隔内での値の出現頻度またはカウントが含まれ、この方法で、表はサンプルの値の分布を要約します。

SASは、データセット内のデータポイントの頻度分布を計算する PROC FREQ と呼ばれる手順を提供します。

構文

SASで頻度分布を計算するための基本的な構文は次のとおりです-

PROC FREQ DATA = Dataset ;
TABLES Variable_1 ;
BY Variable_2 ;

以下は、使用されるパラメータの説明です-

  • Dataset はデータセットの名前です。
  • Variables_1 は、頻度分布を計算する必要があるデータセットの変数名です。
  • Variables_2 は、頻度分布の結果を分類した変数です。

単一の可変頻度分布

  • PROC FREQ。*を使用して、単一変数の度数分布を決定できます。この場合、結果には変数の各値の度数が表示されます。 結果には、パーセンテージ分布、累積頻度、累積パーセンテージも表示されます。

以下の例では、ライブラリ* SASHELP.CARS。から作成された *CARS1 という名前のデータセットの変数horsepowerの頻度分布を見つけます。結果は2つのカテゴリの結果に分かれています。 車のメーカーごとに1つ。

PROC SQL;
create table CARS1 as
SELECT make, model, type, invoice, horsepower, length, weight
   FROM
   SASHELP.CARS
   WHERE make in ('Audi','BMW')
;
RUN;

proc FREQ data = CARS1 ;
tables horsepower;
by make;
run;

上記のコードが実行されると、次の結果が得られます-

FREQ_By2

複数の可変頻度分布

すべての可能な組み合わせにグループ化する複数の変数の頻度分布を見つけることができます。

以下の例では、*車種ごとにグループ化*された車のメーカーの頻度分布と、*各メーカーごとにグループ化された車の各タイプの頻度分布*を計算します。

proc FREQ data = CARS1 ;
tables make type;
run;

上記のコードが実行されると、次の結果が得られます-

FREQ_tables1

重み付き頻度分布

重みオプションを使用すると、変数の重みで偏った頻度分布を計算できます。 ここでは、変数の値は、値のカウントではなく、観測数として取得されます。

次の例では、馬力に割り当てられた重みを使用して、変数makeおよびtypeの頻度分布を計算します。

proc FREQ data = CARS1 ;
tables make type;
weight horsepower;
run;

上記のコードが実行されると、次の結果が得られます-

FREQ_tables3

SAS-クロス集計

クロス集計では、2つ以上の変数のすべての可能な組み合わせを使用して、条件付きテーブルとも呼ばれるクロステーブルを作成します。 SASでは、 PROC FREQTABLES オプションを使用して作成されます。 たとえば、各車種カテゴリの各メーカーの各モデルの頻度が必要な場合、PROC FREQのTABLESオプションを使用する必要があります。

構文

SASでクロス集計を適用するための基本的な構文は次のとおりです-

PROC FREQ DATA = dataset;
TABLES variable_1*Variable_2;

以下は、使用されるパラメータの説明です-

  • Dataset はデータセットの名前です。
  • Variable_1およびVariable_2 は、頻度分布を計算する必要があるデータセットの変数名です。

以下に示すように、 SASHELP.CARS から作成されたデータセットcars1から、各自動車ブランドで利用可能な自動車の種類をいくつ見つけるかを考えてみましょう。 この場合、個々の頻度値と、メーカーおよびタイプ全体の頻度値の合計が必要です。 結果が行と列全体の値を示していることがわかります。

PROC SQL;
create table CARS1 as
SELECT make, type, invoice, horsepower, length, weight
   FROM
   SASHELP.CARS
   WHERE make in ('Audi','BMW')
;
RUN;

proc FREQ data = CARS1;
tables make*type;
run;

上記のコードが実行されると、次の結果が得られます-

cross_tab_1

3つの変数のクロス集計

3つの変数がある場合、それらの2つをグループ化し、これら2つそれぞれを3番目の変数とクロス集計できます。 したがって、結果には2つのクロステーブルがあります。

以下の例では、車の型に関して、車の各タイプと車の各モデルの頻度を見つけます。 また、nocolオプションとnorowオプションを使用して、合計値とパーセンテージ値を回避します。

proc FREQ data = CARS2 ;
tables make *(type model) /nocol norow nopercent;
run;

上記のコードが実行されると、次の結果が得られます-

cross_tab_2

4つの変数のクロス集計

変数が4つの場合、ペアの組み合わせの数は4に増えます。 グループ1の各変数は、グループ2の各変数とペアになります。

以下の例では、各メーカーと各モデルの車の長さの頻度を見つけます。 同様に、各メーカーおよび各モデルの馬力の頻度。

proc FREQ data = CARS2 ;
tables (make model)* (length  horsepower) /nocol norow nopercent;
run;

上記のコードが実行されると、次の結果が得られます-

cross_tab_3

SAS-Tテスト

T検定を実行して、平均値と平均差を比較することにより、1つのサンプルまたは2つの独立したサンプルの信頼限界を計算します。 PROC TTEST という名前のSASプロシージャは、1つの変数と変数のペアに対してtテストを実行するために使用されます。

構文

SASでPROC TTESTを適用するための基本的な構文は次のとおりです-

PROC TTEST DATA = dataset;
VAR variable;
CLASS Variable;
PAIRED Variable_1 * Variable_2;

以下は、使用されるパラメータの説明です-

  • Dataset はデータセットの名前です。
  • Variable_1およびVariable_2 は、tテストで使用されるデータセットの変数名です。

以下に、95%の信頼限界を持つ可変馬力のt検定推定値を見つける1つのサンプルt検定を示します。

PROC SQL;
create table CARS1 as
SELECT make, type, invoice, horsepower, length, weight
   FROM
   SASHELP.CARS
   WHERE make in ('Audi','BMW')
;
RUN;

proc ttest data = cars1 alpha = 0.05 h0 = 0;
    var horsepower;
   run;

上記のコードが実行されると、次の結果が得られます-

t_test_1

対応のあるT検定

ペアのT検定は、2つの従属変数が統計的に互いに異なるかどうかをテストするために実行されます。

車の長さと重量は互いに依存するため、以下に示すようにペアのT検定を適用します。

proc ttest data = cars1 ;
   paired weight*length;
   run;

上記のコードが実行されると、次の結果が得られます-

t_test_2

2サンプルのt検定

このt検定は、2つのグループ間で同じ変数の平均を比較するように設計されています。

このケースでは、2つの異なる車種(「アウディ」と「BMW」)の可変馬力の平均を比較します。

proc ttest data = cars1 sides = 2 alpha = 0.05 h0 = 0;
   title "Two sample t-test example";
   class make;
   var horsepower;
   run;

上記のコードが実行されると、次の結果が得られます-

t_test_3

SAS-相関分析

相関分析は、変数間の関係を扱います。 相関係数は、2つの変数間の線形関連性の尺度です。相関係数の値は常に-1〜+1です。 SASは、データセット内の変数ペア間の相関係数を見つけるための PROC CORR プロシージャを提供します。

構文

SASでPROC CORRを適用するための基本的な構文は次のとおりです-

PROC CORR DATA = dataset options;
VAR variable;

以下は、使用されるパラメータの説明です-

  • Dataset はデータセットの名前です。
  • *オプション*は、マトリックスのプロットなどの手順を備えた追加オプションです。
  • *変数*は、相関の検索に使用されるデータセットの変数名です。

データセットで使用可能な変数のペア間の相関係数は、VARステートメントで名前を使用して取得できます。次の例では、データセットCARS1を使用して、馬力と体重の相関係数を示す結果を取得します。

PROC SQL;
create table CARS1 as
SELECT invoice, horsepower, length, weight
   FROM
   SASHELP.CARS
   WHERE make in ('Audi','BMW')
;
RUN;

proc corr data = cars1 ;
VAR horsepower weight ;
BY make;
run;

上記のコードが実行されると、次の結果が得られます-

corr_ana_2

すべての変数間の相関

データセットで使用可能なすべての変数間の相関係数は、データセット名でプロシージャを適用するだけで取得できます。

以下の例では、データセットCARS1を使用して、変数の各ペア間の相関係数を示す結果を取得します。

proc corr data = cars1 ;
run;

上記のコードが実行されると、次の結果が得られます-

corr_ana_1

相関行列

*PROC* ステートメントで行列をプロットするオプションを選択することにより、変数間の散布図行列を取得できます。

以下の例では、馬力と体重のマトリックスを取得します。

proc corr data = cars1 plots = matrix ;
VAR horsepower weight ;
run;

上記のコードが実行されると、次の結果が得られます-

corr_ana_3

SAS-線形回帰

線形回帰は、従属変数と1つ以上の独立変数との関係を識別するために使用されます。 関係のモデルを提案し、パラメーター値の推定値を使用して推定回帰式を作成します。

その後、さまざまなテストを使用して、モデルが満足できるものであるかどうかを判断します。 その場合、推定された回帰式を使用して、独立変数の値が与えられた従属変数の値を予測できます。 SASでは、プロシージャ PROC REG を使用して、2つの変数間の線形回帰モデルを見つけます。

構文

SASでPROC REGを適用するための基本的な構文は次のとおりです-

PROC REG DATA = dataset;
MODEL variable_1 = variable_2;

以下は、使用されるパラメータの説明です-

  • Dataset はデータセットの名前です。
  • variable_1およびvariable_2 は、相関の検索に使用されるデータセットの変数名です。

以下の例は、* PROC REG。*を使用して、2つの変数馬力と車の重量の間の相関を見つけるプロセスを示しています。結果には、回帰式の形成に使用できる切片値が表示されます。

PROC SQL;
create table CARS1 as
SELECT invoice, horsepower, length, weight
   FROM
   SASHELP.CARS
   WHERE make in ('Audi','BMW')
;
RUN;
proc reg data = cars1;
model horsepower = weight ;
run;

上記のコードが実行されると、次の結果が得られます-

regression_1

上記のコードは、以下に示すように、モデルのさまざまな推定値のグラフィカルビューも提供します。 高度なSASプロシージャであるため、インターセプト値を出力として提供することにとどまりません。

regression_2

SAS-ブランドアルトマン分析

Bland-Altman分析は、同じパラメーターを測定するために設計された2つの方法の一致または不一致の程度を検証するプロセスです。 メソッド間の相関が高いことは、データ分析で十分なサンプルが選択されていることを示しています。 SASでは、変数値の平均、上限、下限を計算することにより、ブランドアルトマンプロットを作成します。 次に、PROC SGPLOTを使用して、Bland-Altmanプロットを作成します。

構文

SASでPROC SGPLOTを適用するための基本的な構文は次のとおりです-

PROC SGPLOT DATA = dataset;
SCATTER X = variable Y = Variable;
REFLINE value;

以下は、使用されるパラメータの説明です-

  • Dataset はデータセットの名前です。
  • SCATTER ステートメントは、XおよびYの形式で提供された値の散布図グラフを確認します。
  • REFLINE は、水平または垂直の基準線を作成します。

次の例では、newとoldという名前の2つのメソッドによって生成された2つの実験の結果を取得します。 変数の値の差と、同じ観測値の変数の平均を計算します。 また、計算の上限と下限で使用される標準偏差値を計算します。

結果は、散布図としてブランドアルトマンプロットを示しています。

data mydata;
input new old;
datalines;
31 45
27 12
11 37
36 25
14 8
27 15
3 11
62 42
38 35
20 9
35 54
62 67
48 25
77 64
45 53
32 42
16 19
15 27
22 9
8 38
24 16
59 25
;

data diffs ;
set mydata ;
/*calculate the difference*/
diff = new-old ;
/*calculate the average*/
mean = (new+old)/2 ;
run ;
proc print data = diffs;
run;

proc sql noprint ;
select mean(diff)-2*std(diff),  mean(diff)+2*std(diff)
into   :lower,  :upper
from diffs ;
quit;

proc sgplot data = diffs ;
scatter x = mean y = diff;
refline 0 &upper &lower/LABEL = ("zero bias line" "95% upper limit" "95%
lower limit");
TITLE 'Bland-Altman Plot';
footnote 'Accurate prediction with 10% homogeneous error';
run ;
quit ;

上記のコードが実行されると、次の結果が得られます-

bland_altman_1

拡張モデル

上記のプログラムの拡張モデルでは、95%の信頼レベルの曲線近似が得られます。

proc sgplot data = diffs ;
reg x = new y = diff/clm clmtransparency = .5;
needle x = new y = diff/baseline = 0;
refline 0/LABEL = ('No diff line');
TITLE 'Enhanced Bland-Altman Plot';
footnote 'Accurate prediction with 10% homogeneous error';
run ;
quit ;

上記のコードが実行されると、次の結果が得られます-

bland_altman_2

SAS-カイスクエア

カイ2乗検定は、2つのカテゴリ変数間の関連性を調べるために使用されます。 変数間の依存度と独立度の両方をテストするために使用できます。 SASは、オプション chisq とともに PROC FREQ を使用して、カイ2乗検定の結果を判断します。

構文

SASのカイ二乗検定にPROC FREQを適用するための基本的な構文は次のとおりです-

PROC FREQ DATA = dataset;
TABLES variables
/CHISQ TESTP = (percentage values);

以下は、使用されるパラメータの説明です-

  • Dataset はデータセットの名前です。
  • *変数*は、カイ二乗検定で使用されるデータセットの変数名です。
  • TESTPステートメントの Percentage Values は、変数のレベルの割合を表します。

次の例では、データセット* SASHELP.CARS。*のtypeという名前の変数のカイ2乗検定を検討します。この変数には6つのレベルがあり、検定の設計に従って各レベルにパーセンテージを割り当てます。

proc freq data = sashelp.cars;
tables type
/chisq
testp = (0.20 0.12 0.18 0.10 0.25 0.15);
run;

上記のコードが実行されると、次の結果が得られます-

chi_square_1

次のスクリーンショットに示すように、変数タイプの偏差を示す棒グラフも取得します。

chi_square_2

双方向カイ二乗

データセットの2つの変数にテストを適用する場合、2方向のカイ2乗検定が使用されます。

以下の例では、typeとoriginという2つの変数にカイ2乗検定を適用します。 結果は、これら2つの変数のすべての組み合わせの表形式を示しています。

proc freq data = sashelp.cars;
tables type*origin
/chisq
;
run;

上記のコードが実行されると、次の結果が得られます-

chi_square_3

SAS-フィッシャーズの正確検定

フィッシャーの正確検定は、2つのカテゴリ変数間に非ランダムな関連があるかどうかを判断するために使用される統計的検定です。SA​​Sでは、これは PROC FREQ を使用して実行されます。 Tablesオプションを使用して、Fisher Exact検定の対象となる2つの変数を使用します。

構文

SASでFisher Exactテストを適用するための基本的な構文は次のとおりです-

PROC FREQ DATA = dataset ;
TABLES Variable_1*Variable_2/fisher;

以下は、使用されるパラメータの説明です-

  • dataset はデータセットの名前です。
  • Variable_1 Variable_2 *はデータセットからの変数です。

フィッシャーの正確検定の適用

フィッシャーの正確検定を適用するには、Test1およびTest2という2つのカテゴリ変数とその結果を選択します。PROCFREQを使用して、以下に示すテストを適用します。

data temp;
input  Test1 Test2 Result @@;
datalines;
1 1 3 1 2 1 2 1 1 2 2 3
;
proc freq;
tables Test1*Test2/fisher;
run;

上記のコードが実行されると、次の結果が得られます-

fisher_exact_1

SAS-反復測定分析

反復測定分析は、ランダムなサンプルのすべてのメンバーがさまざまな条件下で測定される場合に使用されます。 サンプルが各条件に順番にさらされると、従属変数の測定が繰り返されます。 この場合、標準のANOVAを使用することは適切ではありません。繰り返し測定間の相関をモデル化できないためです。

  • 反復測定設計*と*単純多変量設計*の違いについて明確にする必要があります。両方について、サンプルメンバーは複数の機会、または試行で測定されますが、反復測定設計では、各試行は異なる条件下で同じ特性。

SASでは、反復測定分析を実行するために PROC GLM が使用されます。

構文

SASのPROC GLMの基本的な構文は次のとおりです-

PROC GLM DATA = dataset;
   CLASS variable;
   MODEL variables = group/NOUNI;
   REPEATED TRIAL n;

以下は、使用されるパラメータの説明です-

  • dataset はデータセットの名前です。
  • CLASS は、変数に分類変数として使用される変数を与えます。
  • MODEL は、データセットから特定の変数を使用して適合するモデルを定義します。
  • REPEATED は、仮説をテストするために各グループの反復測定の数を定義します。

薬物の効果のテストを受ける人々の2つのグループがある下の例を考えてみましょう。 各人の反応時間は、テストした4種類の薬物ごとに記録されます。 ここでは、4つの薬物タイプの効果間の相関の強さを確認するために、人々のグループごとに5つの試験が行われます。

DATA temp;
   INPUT person group $ r1 r2 r3 r4;
CARDS;
1 A  2  1  6  5
2 A  5  4 11  9
3 A  6 14 12 10
4 A  2  4  5  8
5 A  0  5 10  9
6 B  9 11 16 13
7 B  12 4 13 14
8 B  15 9 13  8
9 B  6  8 12  5
10 B 5  7 11  9
;
RUN;

PROC PRINT DATA = temp ;
RUN;

   PROC GLM DATA = temp;
   CLASS group;
   MODEL r1-r4 = group/NOUNI ;
   REPEATED trial 5;
RUN;

上記のコードが実行されると、次の結果が得られます-

repeated_measure_analysis

SAS-One Way Anova

ANOVAは、分散分析の略です。 SASでは、 PROC ANOVA を使用して行われます。 さまざまな実験計画からのデータの分析を実行します。 このプロセスでは、従属変数と呼ばれる連続応答変数が、独立変数と呼ばれる分類変数によって識別される実験条件下で測定されます。 応答の変動は、分類の影響によるものと想定され、残りの変動はランダムエラーで説明されます。

構文

SASでPROC ANOVAを適用するための基本的な構文は次のとおりです-

PROC ANOVA dataset ;
CLASS Variable;
MODEL Variable1 = variable2 ;
MEANS ;

以下は、使用されるパラメータの説明です-

  • dataset はデータセットの名前です。
  • CLASS は、変数に分類変数として使用される変数を与えます。
  • MODEL は、データセットの特定の変数を使用してフィットするモデルを定義します。
  • Variable_1およびVariable_2 は、分析で使用されるデータセットの変数名です。
  • MEANS は、計算のタイプと平均の比較を定義します。

ANOVAの適用

SASでANOVAを適用する概念を理解しましょう。

データセットSASHELP.CARSを考えてみましょう。 ここでは、変数car typeとその馬力の依存関係を調べます。 車のタイプはカテゴリ値を持つ変数であるため、クラス変数として受け取り、これらの変数の両方をMODELで使用します。

PROC ANOVA DATA = SASHELPS.CARS;
CLASS type;
MODEL horsepower = type;
RUN;

上記のコードが実行されると、次の結果が得られます-

anova_1

MEASを使用したANOVAの適用

SASでMEANSを使用してANOVAを適用する概念を理解しましょう。

また、トルコのスチューデント化された方法を使用してさまざまな車種の平均値を比較するMEANSステートメントを適用することにより、モデルを拡張できます。車種のカテゴリは、各カテゴリの馬力の平均値とともに、誤差平均二乗など

PROC ANOVA DATA = SASHELPS.CARS;
CLASS type;
MODEL horsepower = type;
MEANS type/tukey lines;
RUN;

上記のコードが実行されると、次の結果が得られます-

anova_3

SAS-仮説検定

仮説検定では、統計を使用して、与えられた仮説が真である確率を決定します。 仮説検定の通常のプロセスは、以下に示す4つのステップで構成されます。

ステップ1

帰無仮説H0(通常、観測は純粋な偶然の結果である)と対立仮説H1(通常、観測は偶然の変動の成分と組み合わせた実際の効果を示す)を定式化します。

ステップ2

帰無仮説の真偽を評価するために使用できる検定統計量を特定します。

ステップ-3

P値を計算します。これは、帰無仮説が真であると仮定して、観測された統計と少なくとも同じくらい有意な検定統計量が得られる確率です。 P値が小さいほど、帰無仮説に対する証拠が強くなります。

ステップ-4

p値を許容可能な有意値アルファ(アルファ値とも呼ばれる)と比較します。 p ⇐ alphaの場合、観測された効果が統計的に有意であり、帰無仮説は除外され、対立仮説は有効です。

SASプログラミング言語には、以下に示すように、さまざまなタイプの仮説検定を実行する機能があります。

Test Description SAS PROC
T-Test A t-tests is used to test whether the mean of one variable is significantly different than a hypothesized value.We also determine whether means for two independent groups are significantly different and whether means for dependent or paired groups are significantly different. PROC TTEST
ANOVA It is also used to compare means when there is one independent categorical variable. We want to use one-way ANOVA when testing to see if the means of the interval dependent variable are different according to the independent categorical variable. PROC ANOVA
Chi-Square We use chi square goodness of fit to assess if frequencies of a categorical variable were likely to happen due to chance. Use of a chi square test is necessary whether proportions of a categorical variable are a hypothesized value. PROC FREQ
Linear Regression Simple linear regression is used when one wants to test how well a variable predicts another variable. Multiple linearregression allows one to test how well multiple variables predict a variable of interest. When using multiple linear regression, we additionally assume the predictor variables are independent. PROC REG

Sas-questions-and-answers