SAS R and Python―第1回SAS R Pythonによる、線形回帰モデル
統計ソフトには、代表的なものとして、SAS、R、Python、SPSS等のツールが存在しますが、それぞれを横ぐしでみた書籍は日本にはないと思われます。 これらの統計ツールの中で現在、代表的なプログラム言語であるSAS、R、Pythonをもちいて、同じデータ、同じ分析手法を行い、それぞれプログラムを実際書くことで、SAS、R、Pythonのコーディングのしやすさ出力内容の違い、などについて比較検証します。コードはオプションを使わずデフォルトのものを使います。
使用データ
第一回目は、以下のデータを利用して、各プログラム言語で線形モデルを記述します。
変数名 | 内容 |
---|---|
RIM | 犯罪発生率(人口単位) |
ZN | 25,000平方フィート以上の住宅区画の割合 |
INDUS | 非小売業の土地面積の割合(人口単位) |
CHAS | チャールズ川沿いかどうか(チャールズ川沿いの場合は1、そうでない場合は0) |
NOX | 窒素酸化物の濃度(pphm単位) |
RM | 1戸あたりの平均部屋数 |
AGE | 1940年よりも前に建てられた家屋の割合 |
DIS | ボストンの主な5つの雇用圏までの重み付きの距離 |
RAD | 幹線道路へのアクセス指数 |
TAX | 10,000ドルあたりの所得税率 |
PTRATIO | 教師あたりの生徒の数(人口単位) |
B | 1000(Bk-0.63)2として計算:Bkがアフリカ系アメリカ人居住者の割合(人口単位) |
LSTAT | 低所得者の割合 |
MEDV | 住宅価格の中央値(単位1,000ドル) |
モデル
SAS
FILENAME ho url "https://archive.ics.uci.edu/ml/
machine-learning-databases/housing/housing.data";
DATA WORK.df;
FORMAT CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX
PTRATIO B LSTAT MEDV BEST32.;
INFILE ho DLM=' ' MISSOVER LRECL=32767 FIRSTOBS=1;
INPUT CRIM--MEDV;
RUN;
proc reg data = df ;
model MEDV = RM ;
run ;
R
df<-read.table("https://archive.ics.uci.edu/ml/
machine-learning-databases/housing/housing.data"
, header = F)
names(df) <- c('CRIM', 'ZN', 'INDUS', 'CHAS',
'NOX', 'RM', 'AGE', 'DIS', 'RAD',
'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV')
mod1 <- lm(MEDV ~ RM , data = df)
summary(mod1)
summary.aov(mod1)
Python
import pandas as pd
from statsmodels.formula.api import ols
df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/'
'housing/housing.data', header=None, sep='\s+')
df.columns = ['CRIM', 'ZN', 'INDUS', 'CHAS',
'NOX', 'RM', 'AGE', 'DIS', 'RAD',
'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
model = ols('MEDV ~ RM', df).fit()
print(model.summary())
print(model)
比較検討
データの読み込みプログラム
R、Pythonに関しては、オンラインにあるデータを読み込む際、簡単に読み込みが可能なパッケージが存在しますが、それに対して、SASはオンラインにあるデータを読み込む際、infileステートメントを使用する場合、変数名をコーディングする必要があるため、Rにくらべると多少多くのコーディング数が必要になります。
SAS | 9ステップ数 |
---|---|
R | 6ステップ数 |
Python | 7ステップ数 |
ステップ数 ① R ② Python ③ SAS
出力結果プログラム
出力結果プログラムについては、R、Python、SASともに簡単なステートメントで多くの情報量が出力されますが、出力内容については、特にPythonの出力内容が充実しています。
SAS | 3ステップ数 |
---|---|
R | 3ステップ数 |
Python | 3ステップ数 |
ステップ数 ① R ② SAS ③ Python
結論
オンラインのデータ読み込みの場合、R、Pythonは簡単なパッケージにて読み込むことが可能であることに対し、SASは変数をあらかじめ、宣言する必要があるためプログラムのコーディングが必要になります。またSASはオンラインのデータを読み込むというより、予めデータベースに保存した大規模データのハンドリングが得意とされるため、オンラインの小規模なデータだと優位性が少ないように考えます。 出力に関しては、SAS、R、Pythonともにすくないステップで必要な情報をだしてくれる関数があり、特にPyhonの出力内容はかなり充実した内容となっていました。
参考文献
- SAS and R: Data Management, Statistical Analysis, and Graphics, Second Edition Ken Kleinman (著), Nicholas J. Horton (著)
- Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear) 単行本(ソフトカバー) – 2016/6/30 Sebastian Raschka (著), 株式会社クイープ (翻訳), 福島真太朗 (翻訳)
- 新版 実用SAS生物統計ハンドブック 臨床評価研究会(ACE) 基礎解析分科会 (著), 浜田 知久馬 (監修)
DATUM STUDIOは、クライアントの事業成長と経営課題解決を最適な形でサポートする、データ・ビジネスパートナーです。
データ分析の分野でお客様に最適なソリューションをご提供します。まずはご相談ください。
Contact
Explore Jobs
関連記事