SAS Viyaで回帰分析モデルを試す(その2:条件を指定する)


SAS Viyaでは様々なアクションセットが用意されており、データ分析を容易に行えるようになっています。今回はその一つ、回帰分析モデルを条件を指定しながら試す方法を紹介します。なお、この処理はSAS Viyaのデモアカウントでも行えますので、ぜひお試しください。

データのアップロード

元のデータは以下のURLに用意してあります。ダウンロードしてください。

そしてSAS ViyaのJupyter Notebookでアップロードします。

SAS Viyaへの接続

まずSAS Viyaに接続します。認証情報はあなたのものに書き換えてください。

cashost='localhost'
casport=5570
useremail='[email protected]'
userpassword='xxxxxxxxxxx'
casauth='~/.authinfo'
conn = CAS(cashost, casport, useremail, userpassword, caslib="casuser")

データの読み込み

次に先ほどアップロードしたデータを読み込みます。

cars = conn.upload('cars.csv').casTable

カラム情報は次のようになっています。

print(cars.columninfo());

出力結果です。

[ColumnInfo]

          Column  ID     Type  RawLength  FormattedLength  NFL  NFD
 0          Make   1  varchar         13               13    0    0
 1         Model   2  varchar         39               39    0    0
 2          Type   3  varchar          6                6    0    0
 3        Origin   4  varchar          6                6    0    0
 4    DriveTrain   5  varchar          5                5    0    0
 5          MSRP   6   double          8               12    0    0
 6       Invoice   7   double          8               12    0    0
 7    EngineSize   8   double          8               12    0    0
 8     Cylinders   9   double          8               12    0    0
 9    Horsepower  10   double          8               12    0    0
 10     MPG_City  11   double          8               12    0    0
 11  MPG_Highway  12   double          8               12    0    0
 12       Weight  13   double          8               12    0    0
 13    Wheelbase  14   double          8               12    0    0
 14       Length  15   double          8               12    0    0

+ Elapsed: 0.0014s, user: 0.001s, mem: 0.7mb

アクションセットを読み込む

回帰分析のアクションセットを読み込みます。

conn.loadactionset('regression')

モデルを作る

モデルを定義します。ターゲットと入力値を指定します。

cars.glm(
    target = 'MSRP',
    inputs = ['MPG_City']
)

モデルを次のように定義して、プロパティをセットすることもできます。

linear1 = cars.Glm()
linear1.target = 'MSRP';
linear1.inputs = ['MPG_City']
linear1()

分布をグラフ化する

ではデータを可視化してみます。まず取得するデータの定義です。

result1 = conn.CASTable('cas.MSRPPrediction2', replace=True)
linear1.output.casout = result1
linear1.output.pred = 'Predicted_MSRP'
linear1.output.resid = 'Residual_MSRP'
linear1.output.lcl = 'LCL_MSRP'
linear1.output.ucl = 'UCL_MSRP'
linear1()

取得するデータに条件を付ける

条件の付与ですが、以下のように query メソッドを使って行います。

result1[['Predicted_MSRP', 'MSRP', 'MPG_City', 'Make', 'Model']].query('Predicted_MSRP < 0').to_frame()

結果はこのようになります。

Selected Rows from Table CAS.MSRPPREDICTION2
Predicted_MSRP MSRP MPG_City Make Model
0 -12933.617000 20140.0 46.0 Honda Civic Hybrid 4dr manual (gas/electric)
1 -37603.511169 19110.0 60.0 Honda Insight 2dr (gas/electric)
2 -35841.375871 20510.0 59.0 Toyota Prius 4dr (gas/electric)

可視化する

さらにこのデータをX/Y軸を指定して可視化します。

p = Scatter(out1, x='MPG_City', y='MSRP', color='Origin', marker='Origin')
output_file('scatter2.html')
show(p)

このような結果が得られるはずです。

まとめ

データの分析、可視化は大変そうに感じますがSAS Viyaを使うことでストレスなく素早く可視化まで行えます。SAS for Developers | SASからデモアカウントを作れますので、ぜひお試しください。