2026/5/17(日);初稿
はじめに
気づいたときに何の前触れもなく、パッと行う必要がある解析として、相関係数の算出がある。しかし、これも計算しては忘れることを繰り返している用に思う。依って、ここに覚書しておく。以下はデータフレームdfの列column1と列column2の散布図を描き、そこに単回帰(y = ax +b)を求めて、それを散布図に重ねるためのRのコードである。単回帰と相関係数は、使用する目的が違うので、これらの用語を使うときはちょっと注意かも知れない。単回帰は、従属変数(観測値、x)による目的変数(結果、予測値、y)の予測、相関係数はyとxの関連性である。ただし、計算的には一致するはずなので、以下のプロットで相関を求めたと言える。
散布図と単回帰直線
以下のコードが切片が任意の数値の場合である。
R
plot(x = column1, y = column2, data = df, main = "linear regression")
abline(lm(column1 ~ column2, data = df), col = "blue")R以下が切片を0にする場合である。
R
plot(x = column1, y = column2, data = df, main = "linear regression")
abline(lm(column1 ~ column2 - 1, data = df), col = "blue")Rもし、対数変換した方がよくフィットするようならば、目的変数を対数変換すれば良い。それを単回帰に使用する場合、それらは対数変換されていることを忘れてはならない。
| 対数 | 対数 | Rによる演算 |
|---|---|---|
| 自然対数 | ln | log(df$column2) |
| 常用対数 | log10 | log10(df$column2) |
| 底2の対数 | log2 | log(x = df$column2, base = 2) |
相関係数の統計値の取得
解析中に思いついたようにパッと単回帰する場合は、例えば、そのspoleや切片だけが必要ってことも多い。それらを取得するためには、lm()の結果から直接それらを取ってくれば良い。
R
result_lm <- lm(column1 ~ column2, data = df)
result_lm$coefficients[1] # this is intercept
result_lm$coefficients[2] # this is slope
summary(result_lm)$r.squared # R^2 value
summary(result_lm)$coefficients # shows intercept, slope, p-value and more. Rまとめ
lm()は遺伝子発現解析のQCなどに有用であり、それだけではなく色々なところで思い立ったように出てくる関数と思う。これだけの簡単な関数なのに、一瞬で忘れてしまうほど自分の頭は笊である。困ったものだわ。