333 Views
March 29, 24
スライド概要
[第8回大阪sas勉強会] 三木悠吾
SAS言語を中心として,解析業務担当者・プログラマなのコミュニティを活性化したいです
R、factorまわりの注意事項 三木 悠吾 ClinChoice株式会社
SAS vs R 統計ソフト SAS R 基本的なデータ単位 データセット。変数とオブザベー ションで構成される。 データセットと等価に近いものが データフレーム。純粋な行列。 データハンドリング 色々。データステップ、PDVによる データハンドリングが強烈。 色々。さまざまな拡張パッケージが 公開されており、様々なハンドリン グができる。 統計 標準的には実装されている。 R Baseには標準的なデータ型変換 STATやIMLなど拡張すれば多彩。 や数学系の関数の実装がほとんど。 ただし、課金が必要。 無料の拡張パッケージをインストー ルして統計機能を実装する。 エラーメッセージ 多彩。 あまり出ない。パッケージによるが、 データステップほど出力されない。 情報の探しやすさ Lex Jansenのような卓越した個人 が学会論文を集めてくれている。 情報は多いが、分野、領域ごとに まとまってはいない。 価格 お高い。 無料
R Data Structures (1) Structure Description Sample Vector 同じ型のデータを1次元に配列したもの。 SAS的にはArrayが近い気がする。 > vector = c(10, 20, 30) > vector [1] 10 20 30 Matrix ベクトルを2次元に配列したもの。同じ データ型しか使えない。 > matrix = matrix(c(1,2,3,4,5,6), 2, 3) > matrix [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 Data.frame 2次元の複数のデータ型を持つデータの集 まり。SASデータセットと似たようなイ メージ。 > data = data.frame(SUBJID=c("1001","10 02","1003","1005"), SEX=c("M","F","F","M"), AGE=c(23,34,45,54)) > data SUBJID SEX AGE 1 1001 M 23 2 1002 F 34 3 1003 F 45 4 1005 M 54
R Data Structures (2) Structure Description Sample List 構造やデータ型が異なる 複数のデータを格納でき る。SASでいえば、proc report直前のデータセッ ト。 List = list(l1=vector,l2=matrix,l3=data) Array 3次元以上の行列は自動 的にArrayと認識される。
R Variable Type: type, mode, class Value Mode Type Class 1 Numeric Double Numeric 1,2,3 Numeric Double Numeric 3i, 1+2i, 5-4i Complex Complex Complex T,F,FALSE,TRUE,NA Logical Logical Logical “ABC”, “DEF” Character Character Character “M”, “F” Numeric Integer Factor "Jan", "Feb", "Mar", "Apr", … Numeric Integer Factor それぞれのデータ型をmode関数、typeof関数、class関数でデータ型をチェックしてみた。 Factor型、癖強そう・・・。
Factor型、ordered型とは • 文字型に見えるが、内部に levelを持ち、数値型として扱 われる変数。 • SAS的に言えば、 format SEXN sexf.; の状態。 • Levelは数値として扱われる が、大小概念がないなど、一 般的な数値変数ではない。数 値で使えるほとんどの関数が 使用不可。 • 大小比較するならば、大小関 係があるordered型にする。 数値ならこんなの簡単! Factorだと通らない! Orderedだと通る。 Levelの大小関係も記述される。 Rstudio的にはord.factorらしい。
Factor型の読み書き(1) • Rは.Rdataという形でワーク ディレクトリと格納されてい るデータを保存している。つ まり、終了してもデータが消 えない。 • 我々の申請資料に.Rdata直接 放り込みはチャレンジング。 →つまり、中間データとかも たくさん入ってるけど頑張っ て確認してね!という感じ。 • RでSASデータセットおよび CSVを書き出して、再度読み 込んでみた。
Factor型の読み書き(2) • SAS7BDAT • Factorは数値型とみなされ、単なる数値変 数として返還された。 • ラベル情報は消えている。 • CSV • Xというvectorが追加されている、がこれ は行列制御用の値のよう。下図はCSVをそ のまま開いた状態。Rのデータ構造がその まま、CSVになっている。 • Sexnは文字化されている。地獄か。 Factor型はどちらとも相性よくない。
Factor型と集計 ここで表示順を指定できる • Factor型は出力調整などに使われる。 • Rで出力順を調整するなら、factor型を利用 するのはリーズナブル。 • モデルに組み込むときもこれ。
Factor型の内部 • 数値型→Factor型→数値型と変換してみる • 数値型→Factor型変換時は表面的には情報は保持されるが、内部に数値型(1,2,3,4) が作られる • そのまま数値型に変換すると内部の値のみを取りだしてしまう • Factor型→数値型の時は欲しい値によって、変換方法を変える • 内部の値(1,2,3,4)がほしいとき、 as.numeric()で変換。 • 元の値(1,1.5,2,3.14)がほしいとき、 as.numeric(as.character())で変換。
Factor情報の格納先 Rankさん、君しかいないんだ! 【問題点】 • 開発の中でもPKデータ作る人がADaM詳しいとは限らない • そもそもexample少なすぎ、Rankはマニアックで使ってる感ない • そもそもrefの値とかを意識してRankに入れてきただろうか・・・?(自問) • もしかしてrefが複数になる場合、変数が二つになって、Rankのみ違うっ てパターンも発生しうる?Rでは当たり前? →まあ、CJUG ADaMとかに期待しましょうかね。
Biography • ClinChoice株式会社(CRO) Associate Managerなど • 有限会社三栄(保険代理店など)代表 取締役 • ミハルラボ(IoT)開業準備中で個人 事業主 • 資格:SAS系少し。IT系少し。保険系少し。 • ?????? • 趣味:ロードバイク、料理、アウトドア系 • 某国立大学院卒 (ヒントは写真の家紋) • 覚えたい忍術:多重影分身の術