見出し画像

SASで変化量を求めるには?

分析屋の藤島です。
3月からCROの現場にて統計解析を行っております。
統計解析を行う上で変化量を求める処理はSASでよく行います。
ただ、社内の研修や受託案件で統計解析に取り組んでいたものの、2,3カ月ぶりにSASで変化量を出すときに、苦戦してしまいました。

おそらくあまり理解できてなくて書いていなかったと思い、復習しました。


1.retainステートメント

retainステートメントは、変数の値を保持するための処理を行います。
例えば、安全性を確かめるために臨床検査値(赤血球や白血球など)が治験開始時から治験終了時までにおいて、一定期間ごとにどれだけ変化したのかを求める際に、使用します。
retainステートメントだけ使用すればよいと言われたら、そうでもなく他の処理といくつか組み合わせる必要があります。

一個ずつ処理を確認すれば理解できたと思いますが、研修や今までの業務でなんとなくでしか理解できていなかったため、変化量を求める処理をスムーズに書けなかったのかなと思います。


2.今回扱うデータについて

今回扱うデータは各患者(ID)、各観測期間(VISIT)、体重(WEIGHT)、投与薬(TRTPN)からなるデータとなります。

data WEIGHT;
input ID VISIT WEIGHT TRTPN;
cards;
1 1 60.0 0
1 2 62.3 0
1 3 59.8 1
1 4 61.5 1
1 5 63.2 0
2 1 65.1 1
2 2 66.2 0
2 3 67.5 1
2 4 68.3 1
2 5 69.8 0
3 1 70.5 0
3 2 71.8 1
3 3 72.3 0
3 4 73.1 1
3 5 74.0 0
;
run;
アウトプット:WEIGHT

ちなみに、解析用データセット(ADS)の仕様書では、TRTPN = 0はプラセボ、TRTPN = 1が治験薬となっていることが多いです。


3.変化量を求めるコード

変化量を求めるコードは下記の通りになります。

*各IDの最初のWEIGHTの値を保持;
data WEIGHT2;
  set WEIGHT;
  by ID;
  retain BASE; * 変数BASEを保持;

  if first.ID then BASE = WEIGHT; *各IDの最初に観測されたWEIGHTをBASEに格納;
  CHG = WEIGHT - BASE;
run;

【コード詳細】
1行目:出力するデータセット名を指定する
2行目:データを読み込む
3行目:指定した変数の値ごとに4行目以降の処理を行う
4行目:変数BASEを保持する
6行目:各IDの最初に観測されたWEIGHTをBASEに格納
7行目:各観測期間におけるWEIGHTからBASEを引いて変化量を求める

アウトプット:WEIGHT2

4.最後に

今後も自分が苦戦したところや自身が書いた悪いコードを紹介していきたいと思います。
またSASの記事について、気になる方はこちらもぜひご覧ください!



ここまでお読みいただき、ありがとうございました!
この記事が少しでも参考になりましたら「スキ」を押していただけると幸いです!

株式会社分析屋について

弊社が作成を行いました分析レポートを、鎌倉市観光協会様HPに掲載いただきました。

ホームページはこちら。

noteでの会社紹介記事はこちら。

【データ分析で日本を豊かに】
分析屋はシステム分野・ライフサイエンス分野・マーケティング分野の知見を生かし、多種多様な分野の企業様のデータ分析のご支援をさせていただいております。 「あなたの問題解決をする」をモットーに、お客様の抱える課題にあわせた解析・分析手法を用いて、問題解決へのお手伝いをいたします!

【マーケティング】
マーケティング戦略上の目的に向けて、各種のデータ統合及び加工ならびにPDCAサイクル運用全般を支援や高度なデータ分析技術により複雑な課題解決に向けての分析サービスを提供いたします。

【システム】
アプリケーション開発やデータベース構築、WEBサイト構築、運用保守業務などお客様の問題やご要望に沿ってご支援いたします。

【ライフサイエンス】
機械学習や各種アルゴリズムなどの解析アルゴリズム開発サービスを提供いたします。過去には医療系のバイタルデータを扱った解析が主でしたが、今後はそれらで培った経験・技術を工業など他の分野の企業様の問題解決にも役立てていく方針です。

【SES】
SESサービスも行っております。