SAS好きの疫学系院生ブログ

MPH院生のブログです

Ubuntuでのプリンター設定(CANON)

前回に引き続きUbuntu20.04での初期設定です。
今回はプリンターの設定です。

私が使用しているプリンターはCANONのLBP6230です。
このプリンターを有線で接続します。

1. ドライバーのインストール

まずCANONのソフトウェアダウンロードサイトに行き、対応機種を選択。LBPなのでレーザービームプリンターへ。
cweb.canon.jp

次にOSを選択する画面にいき、Linuxを選択。
ソフトウェア選択画面でプリンタードライバーのリンクからダウンロード画面に移り、ドライバーをインストールできる。
f:id:MisakiF:20201104210734p:plain

2. 「設定」から「プリンター」の登録

ここでパソコンとプリンターで有線接続します。今回はアマゾンのUSB2.0ケーブルを使用。
www.amazon.co.jp

「設定」の「プリンター」から「プリンター」を追加を選択。すると有線でつないだプリンターが識別されるので選択。これで設定完了です。
f:id:MisakiF:20201104211533p:plain

Ubuntu20.04 LTS の初期設定

前回はUbuntu20.04のインストールまでできたので、ここから初期設定を行っていきます。

1. 「外観」の設定

●ウィンドウの色:「暗い」
●Dock:自動的に隠す、表示位置「下」

ウィンドウの色を設定。自分は暗い方が好みなので「暗い」に。
Dockとはお気に入りに入っている、アプリが表示されたバーのこと。デフォルトでは左に表示されている。「表示位置」を下にすれば、アプリのバーを下に移動可能。また自分は作業中がDockが邪魔に感じるので、「Dockを自動的に隠す」をONに。通常は隠された状態ですが、カーソルを下に持っていけば表示される。

f:id:MisakiF:20201102151753p:plain

2. 「ディスプレイ」の設定

●解像度:1360×768(16:9)
●サイズ調整:100%

ディスプレイの解像度(キメの細かさ)やサイズを調整。サイズは125%だと少し大きく感じたのでこのままに。解像度によって設定可能なサイズが異なるみたいなのでいろいろ試してみるのもありかと。任意倍率はそこまで変わらないのでなしでもよいかと。

f:id:MisakiF:20201102151740p:plain

3. 「電源」の設定

●ブランクスクリーン:しない

デフォルトでは時間がたつと、再度ログインが必要になるので、ブランクスクリーンは「しない」。
f:id:MisakiF:20201102153217p:plain

4. アプリのアップデート

一応パッケージの更新はしておくべきかと。

sudo apt update #パッケージの名前・バージョンの更新
(更新時は必ず実行)
sudo apt upgrade #パッケージの更新
(apt-getが書かれたサイトが多いが、apt推奨:apt-getの設計ミスを克服したコマンドのため)

sudoとはRoot権限でファイル・シェルを実行編集するためのコマンド。重要なファイルやアプリのインストールには管理者権限での実行が必要になる。

5. ファイアウォールの有効化

●「Firewall Configuration」のインストール
●「Firewall Configuration」の設定

デフォルトではウイルス対策はできていない状態なので、「Firewall Configuration」というパッケージをイントール。Ubuntu Softwareから「gufw」で検索し、インストール。以下のコマンドからでもインストール可能。

sudo apt install gufw

次に「すべてのアプリケーションを表示」からファイアウォールを起動。
f:id:MisakiF:20201102161904p:plain

StatusをONにして設定完了
f:id:MisakiF:20201102162006p:plain

おまけ 便利な技

便利なスクショ方法があったのでメモ。

Shift + Prtsc マウスで範囲指定して画像をピクチャに保存

古いパソコンへのUbuntuの導入

2年前にパソコンを買って以来、使っていなかった古いパソコンでLinuxを導入することを決意。最近流行りのUbuntuを導入したので、インストール過程をメモ。
用意するものは、①パソコン、②DVD-RW(ISOファイルを書き込める媒体)、③DVD・CDプレーヤー。
今回はWindowsが入っているパソコンにUbuntuを入れること、ディスク内データは全て削除、の前提で以下記載。

1. Ubuntuの最新版のISOファイルをインストール

自分はGUIがあったほうが良いと思ったのでデスクトップ版に。もしサーバーとしての用途がメインでGUIは後から使うかも、という場合はserverをインストールしてもいいかもしれません。どちらから始めてもそこまで問題にはならないと思われます。ISOファイルは以下のサイトのいずれかからダウンロード可能。ちなみに日本語remixのサイトは、日本語環境での不具合が解消されたISOファイルが配布されている。日本語で設定するので、とりあえず日本語remixでダウンロード。
今回は「Ubuntu 20.04 LTS」をダウンロード。(LTSはLong term supportの略で、5年間のサポートが保証されていることを示す)

www.ubuntulinux.jp
jp.ubuntu.com

2. CDもしくはDVDにISOを書き込む

ダウンロードしたISOファイルを右クリックし、「ディスクイメージの書き込み」を選択。「書き込み用ドライブ」が書き込みたいDVD・CDになっているかを確認して、「書き込み」を選択。

f:id:MisakiF:20201101225422p:plain

3. BIOSの起動

次に書き込んだDVD・CDをDVD・CDプレーヤーに入れてBIOSを起動。BIOSとはOSより前に起動してハードウェアを管理するプログラムのこと。パソコンによって起動方法は異なるが、多くの場合「F2を押したままパソコンを立ち上げる」ことでBIOSが起動される。以下の画面は富士通のもの。

f:id:MisakiF:20201101232134p:plain

4. BIOSで「起動」の優先順位を設定

BIOSではどのハードから優先して起動するかを決める事ができる。そこでCD・DVDを優先して起動するようにする。「Shift キー+ +」で順位を上に、-で順位を下げることができる。ここではISOファイルが書き込まれたハードを一番上に持って来る。あとは「F10」で保存して終了。

5. Ubuntuの起動とインストール設定

ここからUbuntuをインストールするにあたっての設定を行っていく。言語・キーボード設定は「日本語」で設定。「通常のインストール」で設定。

f:id:MisakiF:20201102000217p:plain

f:id:MisakiF:20201101234912p:plain

ここで注意なのはwindowsがもとから入っている場合、「ディスクを分割する」と「ディスクを削除してインストール」のどちらにするか。今回はディスク削除することに。データが全てなくなるのでバックアップは必須。
f:id:MisakiF:20201101235722p:plain

あとは住んでいる国、名前・パスワードを入力して終わりです。Ubuntuがインストールされるのを待つだけ。

ランダム化について

ランダム化について勉強する機会があったのでメモ。
ランダム化比較試験は医学研究のゴールドスタンダードとされますが、ランダム化にもいくつかの方法があります。

・単純無作為化法
・層別無作為化法
・最小化法

 これらは募集できそうな対象者数や既知の交絡因子によって選択されます。
 単純無作為化は対象者をランダムに2群以上に分ける、シンプルな方法です。しかしこの方法ではどうしても調整したい交絡を制御したい場合には不安な方法です。RCTでは事前にわかっている交絡因子については、ベースラインにおいて絶対に群間で均等になるように治療を割り付けたいためです。

 アウトカムに影響する交絡因子が既に分かっている・測定されている場合、層別無作為化を選択するのが無難です。これは交絡因子となるカテゴリー変数で層に分け、各層で確率的に2群以上に割り付けます。単純無作為化よりも交絡因子を均等化できるため実務ではよく使用される方法です。
 
 上記の方法はサンプルサイズがある程度大きい場合には有効ですが、小さい場合には交絡因子の分布が群間で偏る可能性があります。つまり偶然偏る確率が高くなり、結果に交絡によるバイアスが入りこむ可能性が高くなります。  

 このような偏りを避ける方法が最小化法です。最小化法は交絡因子が最も均等になるように、参加者を各群に割り振っていく方法です。参加者を追加するごとに割り付けることから、動的割付とも言われます。臨床試験では事前に割付確率を0.7などに設定するのが一般的です。最初の参加者は確率0.5で2群のどちらかに割り付けられます。次の参加者は興味のある変数が偏らないように、事前に決められた確率で割り付けられます。これによって興味のある変数に関しては群間で均等になることが期待されます。しかし測定されていない交絡因子が均等であるかは保証できない点には注意が必要です。単純無作為化や層別無作為化では割付確率0.5ですが、最小化法は交絡因子の分布で割付確率を変更しています。したがって最小化法はサンプルサイズの小さい試験で有効な方法です。

●参考文献

医療統計 群間の平均値比較(連続データ)

 対応のない連続データの群間比較を行う場合、基本的にはt検定かノンパラメトリック検定で考えると思います。またt検定ではアウトカムの正規性の仮定が必要なため、一部では「とりあえずノンパラメトリック検定を行えば良い」との意見があります。しかしこの考えにはいくつかの問題点があるとされています。今回はあまり数式を使わずにまとめてみました。

t検定(ウェルチの検定)

 対応のない連続データの群間比較では一般的な検定です。2つの集団の平均値と標準誤差を元にt統計量を計算し、p値を計算する方法です。他のサイトでも多く触れられているため数式には触れませんが、通常のt検定を行う場合、2群比較ではプール分散を使用することに注意です*1。プール分散を計算する前提には等分散の仮定が置かれています。また不等分散を許すウェルチの検定という方法もあります。等分散性が満たされている場合でも両者の結果にはほとんど違いがありません。したがって等分散のF検定をするくらいなら、最初からウェルチの検定を使うべきです*2

 t検定はアウトカムの平均値とその標準誤差を検定統計量に使用するため、「正規性の仮定」が必要です。なぜなら平均値と標準誤差は正規分布に従わない分布に対しては記述統計として解釈ができないためです。ここでいう「正規性」の仮定は、データが正規分布に従うということではなく、正規母集団からデータがサンプリングされているという仮定です*3。サンプルサイズが大きいならきれいな正規分布に従うかもしれませんが、小さい場合歪んだ分布をとるケースは多いです。それでも歪んだ分布が結果にどのような影響を与えるかはわからないため、一概に「正規性の仮定」を満たしていないとは言えないのです。いずれにせよt検定を使用する場合には、アウトカムの分布をヒストグラムや正規分位プロットで確認することは必須です。

ウィルコクソンの順位和検定(マンホイットニーのU検定)

 ノンパラメトリック検定の代表的な検定です。これは個々のデータを順位変数に変換し、検定統計量を構成する方法です。検定統計量の計算については簡単に触れて起きます。2標本データを一つに統合し、小さい値から順に1からランクを割り当てます(順位変数への変換)。次に各群でのランクの合計(順位和)を計算します。そしてマンホイットニーのU検定の検定統計量は以下の式で計算ができます。

\begin{split}
U_{k} = &N_{1}N_{2} + \frac{N_{k}(N_{k}+1)}{2} - T_{k} \cr
&*N_{1}とN_{2}:各群の標本数(N1>N2)\cr
&*T_{k}:各群の順位和T_{1}かT_{2}
\end{split}

ここで順位和Tkはウィルコクソン順位和検定の検定統計量に相当します。上記の式よりマンホイットニー検定の検定統計量U1とU2が計算されます。検定で使用するのは小さい方になります。実はマンホイットニーのU検定は、検定統計量の解釈が可能な数少ないノンパラメトリック統計量の一つです。2群の観測値をそれぞれXiとYi、標本数をそれぞれN1とN2とすると、UはXi<Yiとなる可能な全てのペア数を意味しています。したがって以下の関係が成立します。

$$
\frac{U}{N_{1}N_{2}}:
$$

ただしこの両群のN数の合計が20以上の大標本下であることが必要です。
実はこの検定の問題点は大きく分けて2つあります。

検出力の低下

 小標本下ではノンパラメトリック検定はt検定と比較すると検出力の劣る方法です。結果を比較したシミュレーションを以下に示します。以下のデータは「平均値が異なる」という条件下で生成しています。つまり帰無仮説が間違っている下で有意差を見ていますので、有意差の回数は検出力として解釈できます。以下の結果を見ると、順位和検定の方が有意な結果は少ないことがわかります。

結果の解釈が難しく、推定に使用することもできない

 最大の問題が解釈の問題です。t検定では帰無仮説は「平均値が等しい」なので、有意差が出れば平均値が異なると解釈できます。しかし順位和検定の帰無仮説は「2つの群の分布形状が等しい」なのです*4。これは2群のどのような分布下で帰無仮説が棄却されるかを考えれば理解できます。まず分布の形状が等しく、2つの集団の平均値が異なれば、順位和の帰無仮説は棄却されます。しかし分布の形状が異なる場合、2つの集団での順位和の違いは、平均値の違いではなく分布が異なることに起因している可能性があります。つまり順位和の違いというのは、片方の群よりも大きいもしくは小さい値が多いという大雑把なことしか意味していないのです。
 またt検定は標準誤差や信頼区間の推定に利用できますが、順位和検定ではこのような区間推定は基本的に不可能です。

ではどうすればよいのか

 データの分布を見て判断し、歪んでいればt検定とノンパラメトリック検定を両方行い結果を比較するのが妥当です。もし2つの結果が異なれば、ノンパラメトリック検定の結果を解釈するという結論になります。t検定には正規性の仮定が必要ですが、データが歪んでいたとしても、実際にその歪みがどの程度結果に影響するのかは未知数です。したがってデータが歪んでいて正規性の仮定が疑われるようであれば、パラメトリック・ノンパラメトリック解析の結果を比較することが必要だと考えます。注意したいのは、仮定を満たしているかを検証するためのF検定や正規性の検定はあまり意味がないということです(多重性の問題、有意性のない結果の解釈が難しいため)。
 実はノンパラメトリック検定だけを行えばよいという意見は、統計家の先生の間でも賛否があるようです。私はAltman先生の意見を支持し、以上のように判断しました。統計学は難しい学問ですね。。。

回帰診断について

統計検定準1級の2017年6月過去問でわからなかった問題があったのでメモ。
意外と回帰分析について理解できていないことが発覚。。。

残差プロット

残差と予測値のプロット

残差の全体像を観察できる。線形性が成り立っている場合、残差は0を中心に一様に分布する。分布が一様でなく曲線的な傾向がある場合、線形性の仮定の妥当性が疑われる。また残差の分布の一様性からのズレが少数の外れ値によることも。

標準化残差の平方根と予測値のプロット

標準化残差の絶対値の全体像を観察できる。
プロットが予測値に対して増加・減少傾向がある場合、等分散性が成り立っていないと考えられる。この場合は説明変数か目的変数を変数変換することで等分散に近づけることができる。例えば残差が予測値に応じて増加傾向にある場合は目的変数を対数変換、減少傾向なら説明変数を対数変換する。一応通常の残差プロットでも問題なし。

Q-Qプロット

残差と正規分布の累積分布関数の分位点プロット。標準化残差と標準正規分布で主に使用。
残差が正規分布に従っているか視覚的に判断できる。正規分布から外れた外れ値を見つけることができる。

てこ比と残差のプロット

てこ比とは、ある目的変数を1増やしたときの、予測値の変化のこと。残差の回帰係数への影響度を確認できる。てこ比が大きいほど回帰係数への影響度が大きいと判断できる。cook距離大きいものは外れ値の候補になる。
cook距離は全データを用いた場合と特定の1データを除いて回帰分析を行った場合での、回帰係数の差を示す。cook距離が大きいほど予測値に

変数変換による決定係数の改善の確認

外れ値について、変数変換前のモデルよりもcook距離が小さくなっていれば改善していると言える。また残差の一様性の分布の改善が改善し、残差変動に曲線などの傾向がなくなれば、決定係数は大きくなっていると判断できる。

実測値と残差プロットから残差・予測値を特定

実測値に値を入れると、予測値を代入することで直線が得られる
実測値=予測値+残差
この直線を通るデータが特定したい残差・予測値である


自然科学の統計学 (基礎統計学)

自然科学の統計学 (基礎統計学)

  • 発売日: 1992/08/01
  • メディア: 単行本

日本統計学会公式認定 統計検定 1級・準1級 公式問題集[2018〜2019年]

日本統計学会公式認定 統計検定 1級・準1級 公式問題集[2018〜2019年]

  • 発売日: 2020/03/11
  • メディア: 単行本(ソフトカバー)

SGPLOTプロシジャ ①経時測定データ編

SGPLOTプロシジャは非常に柔軟にグラフを作成できる大変便利なプロシジャです。作成できるグラフは多岐に渡るので、何回かに分けてまとめていきたいと思います。第1回目は経時測定データです。

まずデータセットの作成です。

data d1;
 call streaminit(915);  /*乱数再現可能な乱数シードの設定*/
 do ID=1 to 100;
  group=rand("table", 1/2, 1/2);  /*2群の乱数生成*/
  do visit=1 to 5;
   bp=rand("normal", 150-(visit)*group , 10 );  /*各時点での正規乱数による値の生成*/
   output;
  end;
 end;
run;

proc format;            /*出力時のラベルを指定*/
 value groupf  1="対照群" 2="介入群"; 
run;

proc print data=d1;
 format group groupf. ;  /変数groupのラベルをgroupfに*/
run;


Obs ID group visit bp
1 1 対照群 1 147.659
2 1 対照群 2 141.000
3 1 対照群 3 146.824
4 1 対照群 4 140.422
5 1 対照群 5 133.076
6 2 介入群 1 130.799
7 2 介入群 2 169.138
8 2 介入群 3 158.752
9 2 介入群 4 131.655
10 2 介入群 5 138.241


上記のプログラムでは乱数生成の際にシードを設定しています。これは乱数生成を開始する初期値を与えているのです。同じシードを設定すれば毎回同じデータを生成できます。


ここからSGPLOTプロシジャでグラフを作成します。まず2群の平均値の推移をグラフで表現します。

proc sgplot data=d1;  
 vline visit /          /*vlineステートメント:折れ線グラフの表示(X軸の変数指定)*/
   response=bp                  /*responseオプション:y軸の変数の指定*/
   group=group                 /*groupオプション:グループ変数の指定*/
   stat=mean                      /*statオプション:プロットする統計量(平均値)*/ 
   markers                          /*markersオプション:プロットに◯を表示*/
   limitstat=stddev;            /*limitstatオプション:SD, SE, CIのどれかを表示*/
 format group groupf.;       /*formatプロシジャで設定したラベルの指定*/
run;

f:id:MisakiF:20200916155622p:plain

統計量の推移をグラフ化するのに使用するのがVLINEステートメントです。これは折れ線グラフの図示に使用されるもので、経時測定データの平均値推移のグラフでよく使用されます。


これだと標準偏差のバーが2群間で重なっていて見づらいかもしれません。その場合はgroupdisplayオプションで分けることができます。またグラフ内に各時点での平均値を表示したい場合は、Xaxistableステートメントで表示可能です。

proc sgplot data=d1;  
 vline visit / response=bp
  group=group stat=mean limitstat=stddev 
  groupdisplay=cluster       /*groupdisplayオプション:2群のプロットをずらして表示*/
   markers;
 xaxistable bp/      /*Xaxistableステートメント:表示する変数の指定*/
  separator          /*グラフと平均値表を線で分ける*/
  stat=mean        /*表示する統計量の指定*/
  loaction=inside;   /*locationオプション:表示位置の指定(inside, outside)*/
 format group groupf.;
run;


f:id:MisakiF:20200916162419p:plain


以上のプログラムは一部のオプションしか紹介できていませんが、VLINEステートメントだけでも非常に多くのオプションがあります。まずはよく使うものだけ覚えて、適宜ヘルプで調べるのが良いでしょう。


場合によっては平均値ではなく、個人ごとの推移をみたい場合もあるかもしれません。
その場合は時系列プロットが可能なseriesステートメントの出番です。

proc sgplot data=d1;
 series x=visit y=bp/ group=group ;
 format group groupf.;
run;

f:id:MisakiF:20200916165238p:plain


今回のデータでは非常に見づらくなっていますが、研究によっては個人ごとの推移が見たい場合もあります。



●困ったときのSASヘルプ
https://documentation.sas.com/?docsetId=grstatproc&docsetTarget=n0yjdd910dh59zn1toodgupaj4v9.htm&docsetVersion=9.4&locale=en

SASのSGPLOTとRのGGPLOT2を比較する面白い資料
https://www.sas.com/content/dam/SAS/ja_jp/doc/event/sas-user-groups/usergroups2016-b-02-06.pdf