理学療法士がまとめたノート

統計学備忘録 since2016

Rを使って統計学を勉強するブログです.ときどきTexの備忘録.

PDFにページ数を挿入する場合

TeX

PDFにページ数を挿入する場合 PDFのファイル名はNo1,No2,No3の三枚 同じフォルダに入れる \documentclass[uplatex,11pt]{jsarticle} \usepackage[top=15truemm,bottom=15truemm,left=15truemm,right=15truemm]{geometry} %余白 %図 \usepackage[dvipdfmx]{gr…

層別した散布図と回帰直線

以下のようなグラフ 忘れないように記載しておきます データサンプル Group <- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3) p…

ロジスティック回帰の基準変更

data2 <- data.frame(c(rep("あり",15),rep("なし",15)), c(rep("有効",12),rep("無効",3),rep("有効",4),"無効","有効","有効",rep("無効",8))) colnames(data2) <- c("筋トレ","効果") xtabs(~ 効果 + 筋トレ, data = data2) 筋トレ 効果 あり なし 無効 3…

開設3周年

はてなブログさんから素敵なメッセージが届きました

表1の作り方 "tableone"

年齢 性 運動習慣 52 男 NO 55 男 NO 52 男 NO 56 男 YES 56 男 NO 49 男 NO 43 男 NO 48 男 YES 43 男 NO 42 男 YES 44 男 NO 43 男 NO 48 男 NO 51 男 NO 43 男 NO 49 男 NO 39 男 YES 38 男 NO 50 男 YES 52 女 NO 59 女 YES 65 女 NO 54 女 YES 39 女 NO…

層別カテゴリー化した変数を追加

id age 1 35 2 55 3 53 4 56 5 66 6 49 7 43 8 48 9 64 10 42 11 44 12 74 13 48 14 61 15 43 16 49 17 39 18 38 19 55 20 43 21 48 22 48 23 49 24 49 25 43 26 46 27 49 28 46 29 47 30 43 31 43 32 48 33 50 34 41 35 51 36 45 37 50 38 47 39 44 40 68 4…

エラーバー付きのグラフ ggplot2

使用するパッケージ install.packages("ggplot2") library(ggplot2) データセットを作成します #乱数を使用のため、実施毎にグラフは異なります dat <- c(c(rnorm(15)),c(rnorm(15,3,1.2)),c(rnorm(15,10,2)),c(rnorm(15,17,1.5))) pre_post <- c(rep("前", …

独立している2群を比較するグラフ ggplot2

データの準備 dat <- c(c(rnorm(15)),c(rnorm(15,3,1.2)),c(rnorm(15,10,2)),c(rnorm(15,17,1.5))) pre_post <- c(rep("前", 30),rep("後", 30)) treat <- c(rep("A",15),rep("B",15),rep("A",15),rep("B",15)) dataf <- data.frame(dat, pre_post, treat) h…

Rで作る分割表

投稿日:2018/06/28, 最終更新日2019/08/02 次のデータフレームを分割表にして解析してみます x <- data.frame(c(rep("あり",15),rep("なし",15)), c(rep("あり",9),rep("なし",6),rep("あり",5),rep("なし",10)), c(rep("有効",12),rep("無効",3),rep("有効"…

対応のあるデータのグラフ

id <- 1:20 group <- c(rep("A",10),rep("B",10)) x <- c(rnorm(10,20,2), rnorm(10,15,3)) y <- c(rnorm(10,25,1), rnorm(10,20,0.5)) data <- data.frame(id, group, x, y) x <- c(1,2) t_data <- t(data[,3:4]) mg <- ifelse(data$group == "A", 1, 2) ma…

makedummiesを使ったダミー変数の作成 

2018-07-19投稿、最終更新日2019-07-07 下のようなカテゴリカルデータをダミー変数に変更します 治療 効果 NO NO YES YES YES NO NO YES YES YES YES YES NO YES YES NO NO NO NO YES NO NO NO NO YES YES YES YES YES YES YES NO NO NO NO NO YES YES NO NO…

並べ替え検定と正規近似

2017-07-11投稿, 2019.7.4更新 正確なp値 特定の確率分布をもとに推定を行うのではなく、母集団の未知のパラメータやサンプリング誤差が入らないため計算上も正しいp値が得られる. 並べ替え検定 例)x群とy群を比較します x <- c(5, 9) #平均 = 7 y <- c…

Rで簡単(二元配置分散分析:データには対応なし、繰り返し数は5)

投稿2016.11.17 最終更新日2019.6.5 検定は帰無仮説が大切です! 商品のの主効果:帰無仮説=カップ麺でもインスタント麺でも評価の母平均は等しい スープの主効果:帰無仮説=スープが違っても評価の母平均は等しい 商品とスープの主効果:帰無仮説=商品と…

相関行列と共分散行列

相関行列 x1 <- c(93, 89, 115, 90, 75) x2 <- c(121, 136, 121, 161, 125) x3 <- c(101, 115, 118, 122, 106) #データフレームにすること dat <- data.frame(x1, x2, x3) cor(dat) x1 x2 x3 x1 1.0000000 -0.2220449 0.3981155 x2 -0.2220449 1.0000000 0.6…

対応のある一元配置分散分析(繰り返しのない二元配置分散分析)、多重比較

投稿日2018.7.21, 最終更新日2019.6.4 以下のデータセットを使用します x1 <- c(93, 89, 115, 90, 75) x2 <- c(121, 136, 121, 161, 125) x3 <- c(101, 115, 118, 122, 106) 一要因被験者内計画で対応のある一元配置分散分析です また、要因1=ID, 要因2=検…

散布図に直線を描く

x <- rnorm(20) #乱数を使用してるので毎回変わります y <- c(1:20) plot(x,y) xs <- seq(min(x), max(x), length=1000) # xの影響を含むモデル fit <- glm(y~x,family = poisson) lines(xs, exp(fit$coef[1] + xs*fit$coef[2])) # 切片のみのモデル fit.nul…

正規分布の色塗り (polygon関数 )

投稿日:2018.7.19 最終更新日:2019.5.18 polygon関数 例)y = 2*x (x,y)=(0,0), (2,0), (2,4)の△を塗りつぶす場合 x <- 0:5 y <- 2*x plot(x,y) polygon(c(0,1,2,2,1,0),c(0,0,0,4,2,0),col="gray") # c(x軸, y軸, 色) #三角形なので、のように書いても同じ…

Fisherの直接法

投稿日:2017-10-25、最終更新日:2019-07-29 Fisherの正確確率検定やFisherの直接確率検定、他にFisherの正確検定などと呼ばれています(統一してくれれば良いのにといつも思います).もともとカイ二乗検定は近似法でP値を求めています.一つのセルに度数が4以…

個人的によく使うグラフ

サンプル a <- iris$Sepal.Length[51:75] b <- iris$Petal.Length[101:125] c <- a+b data <- data.frame(a,b,c) summary(data) a b c Min. :4.900 Min. :4.50 Min. :10.10 1st Qu.:5.600 1st Qu.:5.10 1st Qu.:11.10 Median :6.100 Median :5.60 Median :11…

確率分布の計算関数

早見表 確率密度関数 確率分布関数 パーセント値 正規分布 dnorm(x, mean, sd) pnorm(q, mean, sd) qnorm(p, mean, sd) カイ二乗分布 dchisq(x, df) pchisq(q, df) qchisq(p, df) t分布 dt(x, df) pt(q, df) qt(p, df) F分布 df(x, df1, df2) pf(q, df1, df2) …

級内相関係数 Case1

以前掲載していたのですが、以下の文献を参考に書き直しました。 主にRのプログラム (パッケージは使用してません) を忘れないようにメモしておきます。 理論は以下の文献を参照してください。 1) SHROUT, Patrick E.; FLEISS, Joseph L. Intraclass correla…

連続変数をダミー変数に変換する方法

makedummiesの作者の荒様から,便利な使い方を教えていただきましたので再々更新しておきます。 irisのSepal.Lengthを使用して、4~5, 5~6, 6~7, 7~8 の4区分をダミー変数にします。 一瞬で終わります library(dplyr) library(makedummies) data <- data.f…

共分散分析を考えるためのグラフ

いつも勉強させていただいおります、下記サイトの共分散分析より グラフの描き方の備忘録です 我楽多頓陳館--雑学と統計学の館 以下のようなグラフになります データのサンプルは上記サイトから引用してdataに入れました # まずはこれを描いて考える・・・!…

生存時間解析の基本

パッケージのインストール install.packages("survival") library(survival) survivalのデータセットheartを使用します head(heart) start, stop, event: Entry and exit time and status for this interval of time age: age-48 years year: year of accept…

subset関数で層別化したデータセット

以下のようなデータセットを男女で層別したセットに変更します id 年齢 性 身長 1 39 女 162.6 2 39 女 161.4 3 41 男 174.1 4 41 女 154.7 5 42 男 184.7 6 43 男 169.3 7 43 男 163.2 8 43 男 164.4 9 44 男 167.8 10 44 男 168.5 11 44 女 154.8 12 45 男…

CSVファイルの取り込み

職場と自宅の2台のPCを使用していると仮定します MY_DIR <- "C:\\Users\\職場\\Documents\\職場のフォルダ" MY_DIR <- "C:\\Users\\自宅\\Documents\\自宅のフォルダ" それぞれのPCのパスを記載して、いつでもどこでも書けるように、 USBやクラウドなどに保…

データフレームの列を入れ替えて、欠損値のある行を除外する

忘れないうちに書いときます 欠損値のあるデータセットを用意します x <- LETTERS[1:10] y <- c(1,2,NA,2,4,NA,5,1,2,5) z <- c(1,2,2,1,1,2,2,1,1,1) xyz <- data.frame(x,y,z) x y z 1 A 1 1 2 B 2 2 3 C NA 2 4 D 2 1 5 E 4 1 6 F NA 2 7 G 5 2 8 H 1 1 9…

コピーした1行のデータをベクトルに変換

以下のようなデータをコピーしてRのベクトルに変換する方法です 10 12 14 15 18 まず以下のように入力します x = scan() するとコンソールに次のように表示されます > x = scan() 1: この1: の横に10 12 14 15 18をペーストして、enterを2回 > x = scan()…

ヒストグラムのビン調整

head(iris) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa 変数Speciesがsetosa…

ノンパラメトリック 相関係数

[,1] [,2] [,3] [1,] 27 14 5 [2,] 10 17 26 [3,] 5 12 50 上記の分割表から行の順序スコアと列の順序スコアを算出してデータセットを作成します #RANK xr1 <- c(rep(23.5,46),rep(73,53),rep(133,67)) xc1 <- c(rep(21.5,27),rep(64,14),rep(125,5),rep(21.…