医療統計学を学ぶ大学生のブログ

医療統計学、因果推論を専攻しています。R, SASユーザーです。

無料でSASを使ってみる話③(SAS ODAとPythonの接続)

f:id:NorihiroSuzuki:20210715114825p:plain

自分が今いる学部だと授業で基本的に使うのは、RかPythonで、SASをやっている人がほぼいないのですが、個人的には医療系行く人は少しだけでもSAS触れてくれると嬉しいなということもあり最近SAS系の記事を書いてます。今回はその一環として無料で利用可能なSAS OnDemand for Academics(SAS ODA)とPython を連携させるやり方をまとめていこうと思います。

 

 SAS OnDemand for Academicsについて

SAS OnDemand for Academics(以下ODAとする)の特徴は次の通りです。

  • SAS9.4と機能面での違いはない
  • クラウド方式
  • アカデミック、教育目的で利用可能(無料)
  • 5GBまでのクラウドストレージ(教育者には追加で3GB)
  • e-learningにアクセス可能

SAS ODAの使用までに必要な手順は以前の記事の通り

norihirosuzuki.hatenablog.com

 

SAS=高い!と思われがちですが、教育目的に限ればそういうわけではなく、ある程度自由に使用可能です。最近はRやPythonといったフリーで提供されている言語も大分ポピュラーになってきていて、それこそ自分のように大学の授業や卒論といったところで使われることも珍しくなくなってきました。

ただ以前もどこかの記事で書いたかなと思いますが、医薬品の承認申請の都合上どうしてもSASでやらなければいけない場面というのが製薬企業やCROだとあるので、特に医療関係の道を志望している人でSASを勉強することはそれなりに意義があることなんじゃないかなと思っています。このあたりの大学・大学院といったアカデミア側と、会社というビジネス側での求められるスキルの違いというのが今後解消していってくれればいいなというのが個人的な思いです。最近増えてきていますが、それこそ企業側がRやPythonをより使ったエビデンスに基づく事業をより行っていくことや、逆にアカデミア側でもこういったODAなどを用いてデータ分析をもっとしていっても面白いのかなと思います。

 

SAS ODAPythonの連携

アカデミアと企業側の話はいったんおいておきまして、今回のメインの話題のSAS ODAPythonと連携させて、jupyternotebookのようなアプリケーション上でSASの機能を使えるようにする方法をまとめていきます。

今回の内容はSAS ODAにログインした後の下図の赤枠の部分にある話となっていますので、もしよければそちらも参照していただければなと思います。

f:id:NorihiroSuzuki:20211118161838p:plain

 

必要となるシステム条件、事項(2021/11/18段階)

  • Python3.4以降
  • SAS9.4以降、SAS Viya3.1以降もサポートされています
  • 統合オブジェクト方式(IOM)アクセス方式(4つの接続方式の1つ)を使用するには、クライアントにJava7以降が必要です。

 

SASPyのPythonへのインストールに関して

sassoftware.github.io

 

SASPyに関して(Github

sassoftware.github.io

 

また今回はSAS OnDemand for Academicsを利用するので、そちらの登録も必要となります。すでに登録されている方は無視して次に進んで構いませんが、まだ登録をしていない方は登録からお願いします。手順に関してはこちらを参考にどうぞ。

norihirosuzuki.hatenablog.com

 

手順

ODApythonを連携させるために以下の2つのファイルをテキストエディタで作成する必要があります。

  • sascfg_personal.py
  • _authinfo

 

まずは一つ目の「sascfg_personal.py」はSAS ODAに接続するために必要となるファイルです。以下の内容をコピペすればOKです。注意点としては二つで、一点目はjavaの場所のpathがあっているかどうかの確認。二点目はSAS ODAに登録したときのregionの部分のハッシュ(#)を外す必要があります。下記の例ではアジア地域(日本に住んでいる方は基本これ)での場合を示しています。また、US regionの部分がホームページの一列の文字数の都合上改行されているかもしれませんが、その改行の削除をお忘れなく。

 

SAS_config_names=['oda']
oda = {'java' : 'C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath\\java.exe',
#US Home Region
#'iomhost' : ['odaws01-usw2.oda.sas.com','odaws02-usw2.oda.sas.com','odaws03-usw2.oda.sas.com','odaws04-usw2.oda.sas.com'],
#European Home Region
#'iomhost' : ['odaws01-euw1.oda.sas.com','odaws02-euw1.oda.sas.com'],
#Asia Pacific Home Region
'iomhost' : ['odaws01-apse1.oda.sas.com','odaws02-apse1.oda.sas.com'],
'iomport' : 8591,
'authkey' : 'oda',
'encoding' : 'utf-8'
}

 

このファイルの保存場所は以下のコマンドを打って得たpathの場所にする必要があります。

import saspy, os
print(saspy.__file__.replace('__init__.py', 'sascfg_personal.py'))

 

次に、二つ目の「_authinfo」はSAS ODAにログインするために必要となるファイルです。以下の内容をコピペして、一部変更すればOKです。

oda user ODA_EMAIL or ODA_USERNAME password ODA_PASSWORD

変える場所はどこかというと2つあり、赤文字の部分と青文字の部分をそれぞれSAS ODAのログイン時に入力するメールアドレスないしはユーザーネーム、パスワードにする必要があります。

このファイルの保存先についてはホームディレクトリ下、つまりWindowsであれば、「C:\Users\(ユーザーネーム)」にする必要があります。

 

ここまで終わったらあとは、pythonで次のコードをぽちっと。

import saspy
sas_session = saspy.SASsession()
sas_session

 

一応SAS公式からの注意として、"None of the requested encryption algorithms are supported by both peers: AES,"という警告文が出た場合には、バージョン等の確認をした後にサポートへ連絡をということでした。

今回は以上です!!!