2020お正月、医薬SASプログラマの皆様、よいお年を

2019も終わりですね。

今年は、、照会事項系のお仕事はあまりなく、CSR用帳票やそれ用のADaMをしこしことつくって終わりました。 当方、しょぼ腕なので、一番の主たる薬剤のお仕事でアップアップでした。。。何試験も抱えられている方、ほんと尊敬です。

 来年は、ブログだとあまり更新できないので、twitterへ移行しようかと思っています。ブログは書くのもある程度のボリュームが求められるし、自分の文章力不足と向き合わされるのもナンだし、、のためです。

 来年、医薬SASプログラマによりよき一年でありますように!!

 大きななんか、業界の動きないかな(笑)

2019 ゴールデンウィーク

ゴールデンウィークになりました、なってます。

業界的に当然、10連休ですね。

それとも一部、CROにお勤めの医薬SASプログラマさんはお仕事だったりするんでしょうか。

私は一応10連休です。

ゴールデンウィークが明けたらメチャ忙しいのが確定だけした中、お休みを頂いています。

明けの初日、、プログラム書けるのか??っていう(笑)

log メッセージ対処ヒント、attarmap を使っていて “Termination due to Floating Point…”

またおもしろい状態が発生しました。
#1: figureに関して”個別xxx図のときは症例毎にsymbolをユニークにしてください”というオーダーがきました。
これはまぁ、あるある、な依頼ですね。
大規模臨床試験でしたら、”そもそもsasのsymbolの種類数にキャパがありますので、これができるのは限定した状態ですよ、、いつもできるとは限りませんからね!”、とはなかなか派遣プログラマはいえません。
依頼者側が”今回の試験は例数が少ないので、、この処理できるよね、やって!”っていえば、スマートだと思います。

#2:
で、、どうやるかを考えた時、styleattrsだとなんか、ズレそうなきがして、より安心できるattarmap を使って、症例毎にmarkerなどを割り当てることにしました。
#3:
attarmapデータセットがつくり終わり、いざsgplotしたら(私はsgrenderはできません!!)SAS logが”Termination due to Floating Point…”云々かんぬんをいってきました。
#4:
しかも,sgplotにいれたデータセットは相当数のオブザベーションがあるのに、ログには”1 obs”云々が書いてある。
こわいなー、どういうこと?と思いました。

原因:
sgplotに、attarmapに、行はあるものの、marker等を定義していない症例のデータがあったことが原因でした。しかるべき値(linesizeだのなんだの。なにが必須変数かはわかりませんが。。)を定義してやったら、このログは消えました。
ログが1 obs云々いったのも、attarmap側で症例を定義しているオブザベーション数は当然ユニークに1なので、そのオブザベーション数を吐き出したものと推測されます。

以上です。
まだattarmapを使うのはそんなにはメジャーではないと思っていますが、一助になれば幸いです。
(”いやいやなにいっているの、うちではattarmap使いまくりだよ”、と思われた方、素晴らしい組織に属されていると思います。)

医薬SASプログラマの皆様、年内残り、お正月の長期のお休みに入る前に解析担当者が休み始める中も休めず、ぎりぎりまで業務大変だと思われますが、お互いがんばりましょう。。。

log メッセージ対処ヒント “xxは無効です。xxx列の値が欠損していない必要があります。”

断片的な情報でいつもすいません。
今回、proc sgplot で生存時間解析のfig(階段プロット)をかいていて、、群毎に1fig/1imageをだしていたら、英語版sasで実行していたのに、日本語でのWARNINGがでてきました。(sas ver 9.4)

proc sgplotの中のどのステートメントが原因かというと、打ち切りの人は”×”なり”+”なりプロットする、scatterステートメントの部分が原因でした。
階段をプロットするのは確かseriesステートメントですが、そこは無関係のようです。

WARNINGの内容↓↓↓↓
xxxは無効です。xxx列の値が欠損していない必要があります。

WARNING原因
proc sgplotがハンドルするデータセット内で、センサーかどうかを見る変数の全てのOBSが欠損の場合にこのメッセージがでたと思われます。
(1obsでも打ち切り症例をscatterステートメントで描画した群の場合、このWARNINGはでませんでした。

どうWARNINGを回避したか。
マクロ変数でscatterステートメントをする・しないを切り分けました。
proc sgplotにいれるデータセットに対し、censorの変数が全て欠損の場合はscatterステートメントをさせないようにしました。
ラフな概要です。

%if &OBS数があるかのmacro_var. = Y %then %do;
scatter ステートメント;
%end;
%else %do;
 /* 何もしません。*/
%end;

ラフにいうと、こんな感じです。。

stat programmerの皆様、日々ヘビーなお仕事お疲れさまです。

お互いがんばりましょう。(特に派遣の方^^)

sas sgplotでtickの表示非表示をコントロールしたい。→諦めた。個別推移図のとき。

figureつくったあと、レビュワーさんから、”●●のヒゲ線、、ださないで”、ってたまにいわれます。
特に水平軸で、x軸より前のとこ。
これは、sgplotでは無理、と判断しました。

data test;
TRT01PN=1;PARAMCD =”PARAMCDx”;ADY=-1;AVAL = 0.3;
TRT01PN=1;PARAMCD =”PARAMCDx”;ADY=1;AVAL = 3;
TRT01PN=1;PARAMCD =”PARAMCDx”;ADY=2;AVAL = 4;
TRT01PN=1;PARAMCD =”PARAMCDx”;ADY=3;AVAL = 5;
run;

こんなデータの症例毎のspaghetti plotをだしたい。
ADY=-1のとこのtickのlabelはTICKVALUEFORMATで消したけど、ヒゲ線も消してくれ、といわれた。
tick labelを消すのは
proc format
-1 = ” ”
2 = “2”
とかで、-1を消します。
でも、ヒゲ線は描画されちゃいます。

sgrenderはできるだろうことは、少しは知っているけど。
あんま今までsgrenderつかったことない。
、、、またイチから諸々書くので嫌だという方、、
sgplotのtmploutオプションにて、proc sgrender化してくれます。
それでできたproc templateの中身をちょいちょいかえ、その中で、viewmin=0とすれば、ADY=-1のオブザベーションを描画してくれるし、かつ、x軸の-1とこのwhisker線も描画されません。

以上、簡単な説明ですいませんが。
医薬SASプログラマさんだったらあとは”sgplot tmplout”などで検索してもらえれば、諸々理解して頂けるかと。

とにかく、私はsgplotのあれやこれやで、ヒゲセンのコントロールは諦めました、、というお話でした。

医薬SAS プログラマに未来はあるか。

なんか大仰なタイトル(title; ???)になってしまいましたが。
なんかなー
ほんと私がこの業界に入らせて頂いた2010年代前半から、業界はあんまりかわってないなーって、たまに思う。
時系列的に
業界デビュー→CDISC云々が声高くいわれてきた→CDISC申請しなきゃだめな時代
とか、業界の周辺はかわってきたけど。

他業種の友人に自分の業界ってどんなとこ?といわれたらこう答えるかな。
(つまり、ぶっちゃけていうと。)

あ、あともうひと段階具体的にいうと
”DM系医薬SASプログラマ”ではなく”統計系・ADaM系医薬SASプログラマ”のハナシです。

わが業種のイメージ
・CDISCうんぬんの知識を高めてね!!!そうじゃなきゃ今後だめだからね!!といわれるが、、、別に、そうでもないんじゃないかなー、って感じ。(それ以前に大きな問題があるきがする)
・病んでる人が多い
・雇用形態が非正規雇用の割合が多い。
・賃金は悪くはなく、よくもなく、、だけど、多分悪い。→非医薬系IT職にくらべれば感謝しなきゃいけないのは、なんとなく理解しているつもり。
・仕様書ブッチが多い。(仕様書に書いていない仕様にて、ダブルプログラミングが完結した状態であること。)
・自分の命運、働きやすさだとかは解析担当者次第である。
・職場で寝ている人がSAS プログラマより、それを率いる解析担当者であることが多い。
これってなー。クルマ業界で例えると
●ヨタの社員ってクルマの組立工場で工員の前で寝てんのかな????多分社員さんは色々お仕事してるんだろうなって思う。
だからこそ世界で勝っているんだろうから。。

久しぶりの更新はこんなとこで。。

世界とトップの勝負している業界(自動車)と製薬業界をくらべる??

さて、、少し過激なタイトルになっちゃいましたが、、、いつか、くらべてみようと思います。
我々の業界を。
あくまで例えです。
(お薬は健康に関するものなので、車とは単純に比較できない点は承知しております。
ヘンな例え、と思った方はすぐ他のページへジャンプ頂いた方がお互いのためかと思います。)

新薬⇔新発売?の車
SASプログラマ⇔車の組立工場の工員
製薬メーカー・解析担当者⇔自動車メーカーの開発部社員
CDISCルール⇔全世界の自動車業界のルール(あるかどうかは別として。)

という比喩で、考察してみたいと思います。
ただ、お薬も自動車も、低品質なものをつくると人の命に関わる、という点で意外と類似点も多いのかも、とは思いました。
それでは。また更新までしばらくかかるかもしれないけど。。

解析ビジット(AVISIT/AVISITN)をsapに明瞭に書くべし、というガイド

analysisビジット・解析ビジット(AVISIT/AVISITN)をsapに明瞭に書くべし、というガイドが掲載された資料を探し中です。
FDA or PMDAドメイン内で発見できればベストだけど。。
ガイドではなくとも、一部のCSRを公開してくれているGSKさん(link)のsapではどう解析ビジットが解析計画書に書かれているか、時間があればみてみようと思います。

proc sgpanelで対数グラフ (log scale) :logが”オプションはログ軸に正の値が必要です。”

sgpanelで、y軸のラベルを 10 100 1000 といった表示にしたい場合にややハマった話です。(SAS ver 9.4)
values = (10 100 1000);みたいに書いたら
“オプションはログ軸に正の値が必要です。”というのがでてきて、、この言葉でググっても何らヒットせず。
抽象的な説明になりますが
10 100と表示したいなら
min = 1 max =2
10 100 1000 なら
min = 1 max =3

と書けばokそうでした。
実際にはvaluesステートメントを使っても対数グラフは書けますが、今回私はvaluesステートメントが原因かと思い、min/max系の記述でうまくいきました。
ログにそういわせた原因はvaluesステートメントに対するlogvtypeもしくはlogstyleでの定義ミスによるものと思われます。
サンプル文なくてすいませんが。

sas odsのver 9.4の本がGoogle Bookでは検索可能であり、そこの838ページにビンゴな情報があります。logexponentとかで検索してみてください。
Google Bookでのその本へのLink

ということで、v9.4のproc sgpanelでlogarithmic の図を書くときは3要素によくよく注意されてください。
3要素 = logvtype,logstyle,Values or Min/Max系記述。

ADaMの話。defineの登場で旧来型のEXCEL仕様書なくなるの??

ADaMに関してdefine.xmlを要作成な昨今ですが、、
それによりなんか、EXCELでのADaM spec、、そう、基本的に1シート、1データセットのあれ、がなくなろうとしつつある潮流を感じる。

”define.xmlないし、それをPinnacle 21にいれるためのEXCELがあるから、それみてね。今後は今まで使っていた仕様書はナシだよー”
っていう。。。

い、、いーーーーーーーーーーーーーーーーーーーの?
データセットつくるときの書類としての見やすさとか全然違うけど。。

”EXCELでのスペックもあって、defineもつくるってなるど2度手間になるから、defineだけ”
で、いーーーーーーーーーーーーーーーーーーーの?

sas programmer職に相対的に、業務にモノ申せる立場の人、例えば正社員の人とかが少ないので、、
こうなるんだろうなー。

そりゃ、お客さん≒製薬会社からそういわれれば、croとしてはそうするんだろうけど。

“データセットのdefine”と”データセット作成の仕様書”って違う気がするけど。

define対象外の薬理解析用データセット?とかつくる人達 = 旧来通りのEXCELspecがある環境が素敵に思えます。