Edited at

SAS Viyaで回帰分析モデルを試す(その3:データを絞り込んで表示する)

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


データのアップロード

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

https://raw.githubusercontent.com/sassoftware/sas-viya-programming/master/data/cars.csv

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


SAS Viyaへの接続

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

cashost='localhost'

casport=5570
useremail='dev@sas.com'
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.where = 'MSRP < 100000 and MPG_City < 40'

result1 = conn.CASTable('cas.MSRPPrediction2')
result1.replace = True

そして回帰分析モデルを取得します。

linear1 = cars.Glm()

linear1.target = 'MSRP'
linear1.inputs = ['MPG_City']
linear1.output.casout = result1
linear1.output.copyVars = 'ALL'
linear1.output.pred = 'Predicted_MSRP'
linear1.output.resid = 'Presidual_MSRP'
linear1.output.lcl = 'LCL_MSRP'
linear1.output.ucl = 'UCL_MSRP'

同じようにクエリを指定する方法もあります。

linear1 = cars.query('MSRP < 100000 and MPG_City < 40').Glm()

out1 = result1.to_frame()

このデータ(out1)は以下のようになります(一部)。

Selected Rows from Table CAS.MSRPPREDICTION2

Predicted_MSRP Presidual_MSRP LCL_MSRP UCL_MSRP Make \
0 38099.925698 -1154.925698 12333.085214 63866.766182 Acura
1 22780.447626 1039.552374 -3001.031835 48561.927088 Acura
.. ... ... ... ... ...
419 35911.428831 1648.571169 10152.411504 61670.446157 Volvo
420 31534.435096 6195.564904 5781.150241 57287.719951 Volvo

Model Type Origin DriveTrain MSRP \
0 MDX SUV Asia All 36945.0
1 RSX Type S 2dr Sedan Asia Front 23820.0
.. ... ... ... ... ...
419 S60 R 4dr Sedan Europe All 37560.0
420 S80 2.9 4dr Sedan Europe Front 37730.0

Invoice EngineSize Cylinders Horsepower MPG_City MPG_Highway \
0 33337.0 3.5 6.0 265.0 17.0 23.0
1 21761.0 2.0 4.0 200.0 24.0 31.0
.. ... ... ... ... ... ...
419 35382.0 2.5 5.0 300.0 18.0 25.0
420 35542.0 2.9 6.0 208.0 20.0 28.0

Weight Wheelbase Length
0 4451.0 106.0 189.0
1 2778.0 101.0 172.0
.. ... ... ...
419 3571.0 107.0 181.0
420 3576.0 110.0 190.0

[421 rows x 19 columns]


可視化する

さらにこのモデルを可視化します。

p = Scatter(out1, x='Predicted_MSRP', y='Presidual_MSRP', color='Origin', marker='Origin')

output_file('scatter3.html')
show(p)

以下のようなグラフが出力されるはずです。

Screenshot_ 2019-03-20 15.07.04.png


まとめ

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