1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

中央値を使ったデータフレームからの抽出

Last updated at Posted at 2021-01-28

データフレームから中央値を使った抽出の仕方

概要

最近は分析時にもベイズ的な観点を持って作業を行う事があり、
モデルを複数作成し、分析結果をbroomでデータフレームに保存し、
その中から各説明変数の評価を取り出したいと思った。
その際に、p.valueから適切なスコアを取り出したいと思ったが、
p値は最小値が0に収束していくのに対して、最大値は0.7などの値を取るため、
平均を取り出して評価すると説明変数を過小評価することになるため、
中央値を取り出すこととした。

だが中央値をsummariseで取り出してしまうと、それとペアとなっているestimateが取り出せないため、
事前にmedianで取り出したp値とイコールとなるp値を取り出そうとしてみるが、
変数の数が奇数であれば、中央値は一意に定まるが、偶数だと平均を作ってしまうため、
イコールで一意に定まらず、取り出せない事があったので、別の解を検討してみる。

使用していたライブラリ

  • tidyverse

うまく行かなかったケース


broomed_DF %>% 
  group_by(term) %>% # 説明変数をグループ化する 
  mutate(median_pvalue = median(p.value)) %>% 
  filter(p.value == median_pvalue) # ここで想定したレコード数よりも減りすぎている


行ったこと

  • filter時にround関数をかけてn桁までで一致するものを取り出そうとしてみるがうまくいかない

うまく行った方法

broomed_DF %>% 
  group_by(term) %>% # 説明変数をグループ化する 
  mutate(rank_pvalue = rank(p.value)) %>% # rank関数で整数の順序をつける
  mutate(rank_median_pvalue = as.integer(median(rank_pvalue))) %>% # median関数で中央値を取り出すが、同時に整数にすることで偶数時にも一意にスコアを取り出せる
  # この方法はどちらか片方に任意にすることには向いていないため、どちらでも大きく影響しないだろうというときに利用すると良い
  filter(rank_pvalue == rank_median_pvalue) # すべての変数について中央値を抽出できる

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?