SAS Viyaで回帰分析モデルを試す（その2：条件を指定する）

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に接続します。認証情報はあなたのものに書き換えてください。

```python
cashost='localhost'
casport=5570
useremail='dev@sas.com'
userpassword='xxxxxxxxxxx'
casauth='~/.authinfo'
conn = CAS(cashost, casport, useremail, userpassword, caslib="casuser")
```

## データの読み込み

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

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

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

```python
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
```

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

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

```python
conn.loadactionset('regression')
```

## モデルを作る

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

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

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

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

## 分布をグラフ化する

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

```py
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` メソッドを使って行います。

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

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

<table border="1" class="dataframe"><caption>Selected Rows from Table CAS.MSRPPREDICTION2</caption>
  <thead>
    <tr style="text-align: right;">
      <th title=""></th>
      <th title="Predicted Value">Predicted_MSRP</th>
      <th title="MSRP">MSRP</th>
      <th title="MPG_City">MPG_City</th>
      <th title="Make">Make</th>
      <th title="Model">Model</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>-12933.617000</td>
      <td>20140.0</td>
      <td>46.0</td>
      <td>Honda</td>
      <td>Civic Hybrid 4dr manual (gas/electric)</td>
    </tr>
    <tr>
      <th>1</th>
      <td>-37603.511169</td>
      <td>19110.0</td>
      <td>60.0</td>
      <td>Honda</td>
      <td>Insight 2dr (gas/electric)</td>
    </tr>
    <tr>
      <th>2</th>
      <td>-35841.375871</td>
      <td>20510.0</td>
      <td>59.0</td>
      <td>Toyota</td>
      <td>Prius 4dr (gas/electric)</td>
    </tr>
  </tbody>
</table>

## 可視化する

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

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

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

![Screenshot_ 2019-03-20 14.59.09.png](https://qiita-image-store.s3.amazonaws.com/0/274479/9dac9cd1-57ae-c0af-09e7-4e30f13af102.png)

## まとめ

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