Triad sou.

SAS

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

理論的な説明はとりあえずすっ飛ばして、 今回は、果たしてどういう計算をしているのか、という視点でまとめます。今回使うのは [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:…

傾向スコアと多重共線性

傾向スコアの推定には、全ての交絡因子によってスコアを推定しなければならないという条件がある。 傾向スコアの推定に全ての交絡因子をつっこんだときに、交絡因子間に多重共線性が生じていても問題ないの?と疑問に思った。 私の近くにいる人に質問したと…

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

SAS

静注の1-コンパートメントモデル。 周辺尤度を求める積分の近似にはラプラス近似を使用、[1]を見ると Adaptive Gaussian quadrature (適応的ガウス求積法) が平均に対するパラメータ推定に関しては誤差が少ないように見える。 分散に対するパラメータの推定…

NLIN Procedureで1-コンパートメントモデルのパラメータ推定

SAS

NLINで非線形モデルの推定をしてみよう。 測定誤差は正規分布を仮定、薬物動態パラメータの自然対数をとったもの推定します。 NLINを使ったのは、Marquardt法を使ってみたかったから。NLMIXEDでやると最尤法。 /* 静注1-コンパートメントモデルの当てはめ */…

要約データを用いた一元配置分散分析

面白そう、論文はいつか読む。 参考文献 [1] Larson DA. Analysis of Variance With Just Summary Statistics as Input. American Statistician 1992; 46: 151–152. [2] SAS Customer Support Center. Sample 524: One-way ANOVA on summary data. http://su…

要約データを用いたt検定

SASの便利機能。 各群の平均、標準偏差、サンプルサイズをデータセットに入れると検定結果が出る。 /* ダミーデータを作る */ data ttest; do group = 1 to 2; do i = 1 to 10; Value = group * 2 + rand('normal'); output; end; end; /* 要約データを用い…

SURVEYSELECT Procedure

SAS

SURVEYSELECT Procedureについて。 いろんな使い道が考えられるが、複雑なサンプリングもできちゃう。 使いそうなのは、ケース・コントロール研究のマッチングとかかな。 単純にリサンプリングを使ったり、ブートストラップを使ったP値を求めるだけならMULTT…

NLMIXED Procedureを使った最尤推定 (一般化線型モデルの場合)

SAS

NLMIXED Procedureで一般化線型モデルの最尤推定を行ってみよう。 今回はロジスティック回帰分析。 説明変数xのオッズ比が大体2になるようにダミーデータを発生させ、NLMIXED Procedureでロジスティック回帰分析を行うプログラムを以下に示した。 data dummy…

NLMIXED Procedureを使った最尤推定

SAS

最近使わなくなってしまったNLMIXED Procedureについて少しだけ書いてみようと思う。 尤度 (対数尤度) を明示的に書けて、ヘンテコなモデル (部分的に変量効果が欠けていたり…) を想定しない場合には簡単に最尤推定して、$H_0: \theta_i = 0$ (パラメータ $\…

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

SAS

SAS Excel一括変換するマクロ (2) 昔(2006年頃)作ったマクロを改良してみました。 SASファイルがあるディレクトリ内のSASデータセットを一括でExcelファイルへと変換するマクロです。 SASファイルの実行パスを取得する方法がSAS Faqに掲載されていたので参考…