Triad sou.

SAS

SAS/STAT 14.2

SAS

New Procedures 最近は因果推論関係に力をいれているのか、procedure がふたつ追加されていました What's New in SAS/STAT 14.2 - New Procedures)。 CAUSALTRT Procedure: 二値 or 連続アウトカム、二値の治療変数の場合の average causal effect (ATT と A…

SAS/STAT 14.1 が出たようだ

SAS

Enhancements in SAS/STAT 14.1 Software 以下の変更点が特に気になった。 LIFETEST Procedureが Gray's test + CIF のノンパラメトリック推定量 (Gray 1988) に対応 (かなりうれしい!) MIXED Procedure でも ddfm = KENWARDROGER2 が追加された、Kenward &…

SAS University Editionのアップデート

SAS

いつのまにかアップデートがきていたようで、SAS/STAT 13.2が利用できるようになっていました! バージョンの確認 PROC PRODUCT_STATUS; run; テスト実行 GEE Procedureも実行できました。

SAS/STAT 13.2

SAS

またバージョンが上がったいたらしい! かなり使い勝手がよくなりそうな機能拡張が含まれているので、結構期待しています(特にNLMIXED)。 GEE Procedure (評価版) ついにGEEのProcedureが出たらしい。 Observation-specific and subject-specific weighted e…

SAS University Editionでグラフを描く

SAS

SAS University EditionにはSAS/GRAPHが含まれていないため、グラフ用のプロシジャについてが気がかりでした。 SAS/GRAPHのGPLOT Procedure等に慣れ親しんでいる人も多いと思いますが、残念ながらSAS University EditionではGPLOTは使えません。 しかし、SAS…

SAS Analytics U

SAS

SASからSAS University Editionというソフトがリリースされていました。 SAS Analytics U 含まれるパッケージは、BASE SAS(R), SAS/STAT(R), SAS/IML(R), SAS/ACCESS(R) TO PC FILES およびSAS STUDIO(R)だそうです。 Mac, Linuxでも使用できるようです。 FA…

sashelp.vcolumn と sashelp.vtable によるデータセット情報の抽出

SAS

sashelp.vcolumn や sashelp.vtable などには、SAS にロードされた全データセットの情報が格納されている。 そのため、フォーマットだったり、オブザベーション数だったり、変数の数だったり、他にも非常に細かい情報を取り出すことができる。 大胆だなぁ。 …

任意の底の対数

SAS

proc fcmp outlib = sasuser.funcs.logbase; function logbase(x, base); return (log(x) / log(base)); endsub; run; options cmplib = sasuser.funcs; data test; a = logbase(48, 7); b = logbase(49, 7); proc print; run;OBS a b 1 1.98940 2

set end; データステップで最後のオブザベーションのみ出力する方法

SAS

これは覚えておくとお得かもしれません。 set data; by variable; if last.variable then output; の仲間ですね。 data sample; input x y z @@; cards; 1 2 3 4 5 6 7 8 9 ; data sample_final; retain xx xy xz yy yz zz 0; set sample end = final; xx = …

コメント化・コメント解除のショートカット

SAS

小ネタ Windows 版 SAS の Enhanced Editor では、文字列を選択し "Ctrl + ?" を押すと 選択範囲をコメント化できる。 "Ctrl + Shift + ?" を押すと 選択範囲のコメントを解除できる。

FREQ procedure の sparse オプションについて

SAS

最近 FREQ procedure をよく使ってます、便利ですよね。 FREQ procedure は便利なのですが、table statement 中の out オプションで分割表の集計結果をデータセットに出力するときに、デフォルトでは度数が 0 のセルを出力してくれません。 0 セルを出力した…

ods pdf ステートメントで高解像度のグラフを作ろう

SAS

ods pdf のデフォルト出力は解像度が残念すぎて、とても使う気にはなれません。 という事で、解像度の設定について調べてみたら、dpi というオプションがありました。 ods results off; ods listing close; ods pdf file = "&Path.filename.pdf" dpi = 600 s…

ods results statement

SAS

SAS で ods output するときに解析結果が大量あると、Results のツリー出力に時間がかかることがあります。 Output 画面への出力制御は ods exclude statement で設定出来ますが、ツリー出力の場合は ods results statement で設定できます。 data sim; do r…

SAS 9.2 で Enhanced Editor が表示されない現象が治った

SAS

いくつかの PC に SAS 9.2 をインストールしてあるのですが、そのうち 1 台だけ起動すると、 Enhanced Editor Unable to load managed editor component. Error: 0x80040154. The editor may not be installed properly.OLE: Out of memory.このようなエラー…

Enterprise Guide が起動直後に停止する

SAS

SAS Enterprise Guide 4.2 を Windows 7 に入れてみたところ SAS Enterprise Guide にエラーが発生しました。 作業中のファイルを保存して SAS Enterprise Guide を再起動してください。という、まるでだめなエラーメッセージを吐いて終了してしまった。 詳…

SAS 9.2 でファイルタイプの関連付けを再設定する方法

SAS

Usage Note 32464: Registering file types via the SAS Filetype Registration Utility for SAS 9.2 Phase 1 and SAS Enterprise Guide を使う。 上の記事内の [1. Navigate to Index of /techsup/download/pc.] のリンクからユーティリティーをダウンロー…

DDE を使って Excel シートの指定範囲を初期化する SAS マクロ

SAS

%macro DELSHEET(rc); %local vlen nlen k var; data _null_; rc = "&rc."; s = find(rc, "R"); e = find(rc, "C"); r1 = substr(rc, s+1, e-s-1); s = e; e = find(rc, ":"); c1 = substr(rc, s+1, e-s-1); rc = substr(rc, e+1, length(rc)-e); s = find(r…

Wilcoxon の符号付き順位検定と符号検定

SAS

なに procedure だっけ、と思って調べたのでメモ。 data d1; input x1 x2 @@; diff = x1 - x2; cards; 10 12 20 21 30 21 15 18 10 22 ; proc univariate data = d1; var diff; output out = t1 t=t probt=probt msign = msign probm = probm signrank = sig…

一般化線型モデルと乱数

ちょっとだけ勉強したのでメモしておこう。 一般化線型モデル まず、確率変数ベクトル $\mathbf{Y}$ の期待値ベクトルを \[ \boldsymbol\theta=\mathrm{E}(\mathbf Y) \] と書いておきます。 一般化線型モデルと呼ばれている統計モデルでは、 \[ g(\boldsymb…

SAS Excel一括変換するマクロ (2)

SAS

SAS Excel一括変換するマクロ に書いたものを改良したものです。 最近は R ばかり使っていたので、作ったのを忘れていました (2007/07/02に作った物を多少弄ってあります)。 Macro Name: SAS to Excel (xls / csv) batch conversion macro Author: Triad Sou…

mcmc procedure

SAS

せっかくなので触ってみました。 data logistic; call streaminit(88745623); a = 0; b = 1; do i = 1 to 200; do x = 0 to 1; logit = a +b * x; p = exp(logit) / (1 + exp(logit)); y = rand("Bernoulli", p); output; end; end; keep x y; run; ods list…

ODSの出力形式

SAS

意外に色々あるんですね。 ods listing close; ods pdf file = "c:\out.pdf" style = Journal; ods graphics on; proc xxxx; run; ods graphics off; ods pdf close; ods listing; その他使いそうな形式。 ods csvall file = "c:\out.csv"; ods rtf file = "…

annotateで背景の色分けをしてみよう

SAS

SAS/Graphのannotate機能のBAR関数を使います。 proc datasets lib = work kill; run; option linesize = 130 pagesize = 500 mprint; dm 'log; clear; output; clear'; %let execpath = " "; %let Path = " "; %macro setexecpath; %let execpath = %sysfun…

SAS 9.2のインストール

SAS

インストーラが9.1.3と全く違いました。 Windowsで統計解析ソフトウェアとして使うだけなら9.1.3の方が使いやすかった。 サーバ型ソフトウェアとか、他の使い方なら使いやすいんだろうか? SAS Deployment Wizardの使い方がよく分からず(インストーラみたい…

SAS 9.2が導入された

SAS

私事になるが、SAS 9.2が導入された(まだインストールしていないけど)。 グラフ関係とベイズ関係の procedure は早めに触っておこうと思う。

gplot procedureの参照線

SAS

検索してきた方がいたのでメモ。 proc datasets lib = work kill; run; option linesize = 130 pagesize = 9999 mprint; dm 'log; clear; output; clear'; %let execpath = " "; %let Path = " "; %macro setexecpath; %let execpath = %sysfunc(getoption(s…

カラーパレットマクロ

SAS

便利かなと思って作成してみました。 data palet; input color depth code $ @@; cards; 1 1 cxA60000 1 2 cxBF3030 1 3 cxFF0000 1 4 cxFF4040 1 5 cxFF7373 2 1 cx85004B 2 2 cx992667 2 3 cxCD0074 2 4 cxE6399B 2 5 cxE667AF 3 1 cx48036F 3 2 cx602580 …

HTML特殊文字の出力

SAS

DDEを使ってExcelに出力するときに、特殊文字を出力する方法が無いか調べてみました。 & (&)等はコードを使わなくても普通に出力出来ますが、– (–)等はうまく出力出来ません。 文字をSASのエディタにコピーすると "?" に化けてしまいます(画像の16…

実行ディレクトリを取得するマクロ

SAS

SASスクリプトをバッチ実行したときや、実行元のSASスクリプトファイルがあるディレクトリにファイル出力したり、グラフ出力したりするために作った物です。 多分2006年頃に作ったものですが、書く事もなかったので挙げなおしました。 マクロ本体 %macro set…

リサンプリングを用いた多重比較

理論的な説明はとりあえずすっ飛ばして、 今回は、果たしてどういう計算をしているのか、という視点でまとめます。今回使うのは [1] に書かれている有名な方法で、一部では min P とも呼ばれるらしいです。 リサンプリングによって全ての比較が帰無仮説の時 …

スコア信頼区間

スコア信頼区間の求め方を復習。積二項分布モデルの尤度から、リスク比 $\phi=p_1/p_2$ のスコア信頼区間を求める。 スコア関数と Fisher 情報行列から $\mathbf{S}^t(\phi)\mathbf{I}^{-1}\mathbf{S}(\phi)=z^2$ をみたす $\phi_{L}$ と $\phi_{U}$ を求め…

2×2×k表の共通オッズ比の検定

共通オッズ比の検定の帰無仮説は、層の数を $k$ として第 $i$ 層のオッズ比を $\theta_i$ とすると、 \[ H_0: \psi_1=\psi_2=\ldots=\psi_k=\psi=1 \] \[ H_1: \mbox{not } H_0 \] 以下である。 これは、オッズ比均質性の検定よりは厳しい帰無仮説になってま…

オッズ比均質性の検定

共通オッズ比の検定 (test for common odds ratio) は Mantel-Haenszel test を中心に、入門書でも結構詳細に解説してあるものが多いと思う。 Mantel-Haenszel test の原典[1]は30ページ近くあり、かなり読むのが大変。純粋に統計の論文ではなく、後ろ向き研…

SASマクロ

SAS

有用そうなマクロが公開されています。 ライセンスもGPLだそうです。 survival analysisはあると助かるかも?Mayo Clinic. Locally Written SAS Macros. (cited Apr. 6, 2009) http://mayoresearch.mayo.edu/mayo/research/biostat/sasmacros.cfm

PRINTTO Procedure

SAS

ネタがなかったんで、ログとアウトプットの制御について。 printto procedureを使うと色々制御できます。 /* logとoutputを消す */ filename fdummy dummy; proc printto log = fdummy print = fdummy; run; /* logとoutputをファイル出力 */ proc printto l…

class statement の reference group

SAS

SAS を使って一般化線形モデルで解析するときの、class statement の挙動を調べてみました。 genmod, logistic, tphreg とかの class statement の話なので、anova 系の class statment では以下のオプションを指定するとエラーがでるかもしれません。 また…

打ち切りをヒゲにした Kaplan-Meier plot

SAS

LIFETEST Procedure のグラフ機能とか、GPLOT Procedure の symbol statement の value option の指定だけでは、打ち切りをヒゲにして出力できない。 ということで annotate を使って実装してみた。 proc datasets lib = work kill; run; option linesize = …

libname statement で Excel ファイルを読む

SAS

%let execpath = " "; %macro setexecpath; %let execpath = %sysfunc(getoption(sysin)); %if %length(&execpath) = 0 %then %let execpath = %sysget(sas_execfilepath); data _null_; do i = length("&execpath") to 1 by -1; if substr("&execpath", i, …

離散型HMM

SAS

昔 SAS/IML で離散型 HMM にチャレンジしたときに できたもの (Dropbox)、対数取る処理 (アンダーフロー防止のための Scaling) とかする前に遅くてやめてしまった。 シンボル行列の次元が 10000×c ぐらいになると激遅でもうだめですね。 IML は計算速度が・…

SAS IMLで関数を自作

SAS

実用性があるのか分からない機能を紹介? progs.sas dm 'log; clear; output; clear'; proc datasets kill; run; option linesize = 130 pagesize = 500; %let execpath = " "; %let Path = " "; %macro setexecpath; %let execpath = %sysfunc(getoption(sy…

Multtest Procedureでリサンプリング

SAS

リサンプリングとかブートストラップで統計量の分布を作って検定とか推定をするのに使えます。 /* ダミーデータの作成 */ data mult; call streaminit(070605); do y = 0, 1; do i = 1 to 100; x = rand('Normal') + y; output; end; end; run; /* multtest …

SAS/Graph

SAS

SASグラフを今の自分が出来る限界までいじってみた。 dm 'log; clear; output; clear'; proc datasets lib = work kill; run; options linesize=120 pagesize = 300 mprint; %let execpath = " "; %let Path = " "; %macro setexecpath; %let execpath = %sy…

NLMIXED Procedure による非線形混合効果モデルの当てはめ (5)

SAS

同じネタで 5 回も引っ張ってしまった。 何はともあれ、シミュレーション用のプログラムができました。 dm 'log; clear; output; clear'; proc datasets kill; run; option linesize = 130 pagesize = 500; %let execpath = " "; %let Path = " "; %macro se…

血中濃度のシミュレーションデータの問題について

SAS

問題点 血中濃度のデータを想定しているくせに、前の時点よりも濃度が高くなってしまうシミュレーションデータが生成されてしまう 根本的な解決になるかどうかは分からないが、シミュレーションデータを作ってみた。 dm 'log; clear; output; clear'; proc d…

NLMIXED Procedure による非線形混合効果モデルの当てはめ (4)

SAS

今回は点滴静注投与の場合を解析してみます。 コンパートメントモデルの部分を変更しただけなので、モデル式さえ書ければいろいろな場合を解析できますね。 dm 'log; clear; output; clear'; proc datasets kill; run; option linesize = 130 pagesize = 500…

NLMIXED Procedure による非線形混合効果モデルの当てはめ (3)

SAS

今回は誤差分布に対数正規分布を仮定したモデルによる解析を行ってみようと思います。依然シミュレーションデータの問題は時間の都合上修正していませんが、アイデアは浮かんだので近いうちに直す予定です。 シミュレーションデータは誤差分布に対数正規分布…

emf ファイルと Power Point (と一応 SAS)

emf ファイルは Power Point 等で、ベクトルデータのオブジェクトに変換することが出来ます。 SAS で描いた emf ファイルのグラフを使って、きれいなベクトルデータの曲線なんかを使いたいときにたまに使っています。 Univariate Procedure を使ってヒストグ…

SAS DM/Goptions statement Datasets/Print Procedure

SAS

DM statement dm 'log; clear; output; clear'; 実行するとログ出力と結果出力を消してくれる。 DATASETS procedure proc datasets kill lib = work; quit; libオプションで指定したライブラリのデータセットを消してくれる、グラフカタログとかも消える。 G…

NLMIXED Procedureによる非線形混合効果モデルの当てはめ (2)

SAS

今日は indicator function を導入して、測定濃度限界を考慮したモデルによる解析をしてみよう。 indicator function については文献[1]に書いてあります。 /* パラメータ等の設定 */ %let Dose = 200; %let N = 50; %let MTime = 0, 0.1, 0.15, 0.25, 0.5, …

SAS/GRAPHのgoptions statement

SAS

よく使うgoptionときれいなグラフ出力についてまとめてみます。 Lifetest Procedureを使わずにKaplan-Meierプロットを書きたかったときに作ったプログラム。 /* gplot procedureでKaplan-Meierプロット */ %let stra = d1; %let time = Time; %let Path = C:…