-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
60457a5
commit 3e57ab2
Showing
122 changed files
with
15,085 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,319 @@ | ||
--- | ||
title: "통계를 배우자!: Group Differences Adjustment in Observational Studies" | ||
author: "김진섭" | ||
date: "2025-01-18" | ||
format: | ||
revealjs: | ||
theme: zarathu_theme.scss | ||
title-slide-attributes: | ||
data-background-image: bg.png | ||
data-background-size: cover | ||
data-background-opacity: "0.3" | ||
logo: Zarathu Circle Clipping Mask2.png | ||
footer: "zarathu.com" | ||
self-contained: false | ||
chalkboard: | ||
buttons: false | ||
preview-links: true | ||
show-notes: false | ||
slide-number: false | ||
width: 1600 | ||
height: 900 | ||
editor: visual | ||
subtitle: "Zarathu Co., Ltd" | ||
--- | ||
|
||
## 자기소개 | ||
|
||
회사: 차라투 주식회사(Zarathu Co.,Ltd) | ||
|
||
- R 활용 의학연구지원 | ||
- R 패키지 개발 및 교육 | ||
|
||
경력 | ||
|
||
- 의학사, 성균관대학교 (\~2009) | ||
- 예방의학전문의/박사수료,서울대보건대학원 (\~2013) | ||
- 책임, 삼성전자 DMC연구소/무선사업부 (\~2016) | ||
- 대표, 차라투 (2018\~) | ||
|
||
**jinseob2kim\@gmail.com, github.com/jinseob2kim** | ||
|
||
## Executive summary | ||
|
||
1. Baseline 맞춘다(X), RCT를 모방한다(O) | ||
</br> | ||
|
||
2. Matching, IPTW의 장단점을 이해한다 | ||
|
||
- Matching은 ATT(average treatment effect on treated), IPTW는 ATE(average treatment effect) | ||
|
||
- Matchinig은 심플하지만 샘플이 감소. IPTW는 샘플은 유지하지만 분석방법 복잡 & Weight문제 | ||
|
||
- 3그룹 이상일땐 가장 작은 그룹에 맞춰 매칭 or IPTW with `twang` package. | ||
|
||
3. openstat.ai 에서 2그룹 매칭 & IPTW 후 분석가능 | ||
|
||
4. Clone Censor weight라는 새로운 방법론 | ||
|
||
|
||
|
||
## 日本ブログレビュー | ||
|
||
::: columns | ||
::: {.column width="50%"} | ||
![](jskm_japan.png) | ||
::: | ||
|
||
::: {.column width="50%"} | ||
![](jskm_japan2.png) | ||
::: | ||
::: | ||
|
||
Survey data, Landmark, Competing risk analysis support | ||
|
||
::: notes | ||
特に日本の研究者の方がランドマーク分析機能をたくさん利用してくださって、ブログレビューがたくさんあります。 토쿠니 니혼노 켄큐우샤노 호오가 란도마아쿠분세키키노오오 타쿠산 리요오시테쿠다삿테 부로구레뷰우가 타쿠산 아리마스 | ||
::: | ||
|
||
## | ||
|
||
<center><a href="https://github.com/jinseob2kim/jstable"><img src="jstable.png" width="100%"/></a></center> | ||
|
||
::: columns | ||
::: {.column width="50%"} | ||
``` r | ||
## Gaussian | ||
glm_gaussian <- glm(mpg~cyl + disp, data = mtcars) | ||
glmshow.display(glm_gaussian, decimal = 2) | ||
``` | ||
|
||
``` r | ||
$first.line | ||
[1] "Linear regression predicting mpg\n" | ||
|
||
$table | ||
crude coeff.(95%CI) crude P value adj. coeff.(95%CI) adj. P value | ||
cyl "-2.88 (-3.51,-2.24)" "< 0.001" "-1.59 (-2.98,-0.19)" "0.034" | ||
disp "-0.04 (-0.05,-0.03)" "< 0.001" "-0.02 (-0.04,0)" "0.054" | ||
|
||
$last.lines | ||
[1] "No. of observations = 32\nR-squared = 0.7596\nAIC value = 167.1456\n\n" | ||
``` | ||
::: | ||
|
||
::: {.column width="50%"} | ||
``` r | ||
## Binomial | ||
glm_binomial <- glm(vs~cyl + disp, data = mtcars, family = binomial) | ||
glmshow.display(glm_binomial, decimal = 2) | ||
``` | ||
|
||
``` r | ||
$first.line | ||
[1] "Logistic regression predicting vs\n" | ||
|
||
$table | ||
crude OR.(95%CI) crude P value adj. OR.(95%CI) adj. P value | ||
cyl "0.2 (0.08,0.56)" "0.002" "0.15 (0.02,1.02)" "0.053" | ||
disp "0.98 (0.97,0.99)" "0.002" "1 (0.98,1.03)" "0.715" | ||
|
||
$last.lines | ||
[1] "No. of observations = 32\nAIC value = 23.8304\n\n" | ||
``` | ||
::: | ||
::: | ||
|
||
## Subgroup analysis | ||
|
||
``` r | ||
TableSubgroupMultiGLM(status ~ sex, var_subgroups = c("kk", "kk1"), data = lung, family = "binomial") | ||
``` | ||
|
||
``` r | ||
Variable Count Percent OR Lower Upper P value P for interaction | ||
sex2 Overall 228 100 3.01 1.65 5.47 <0.001 <NA> | ||
1 kk <NA> <NA> <NA> <NA> <NA> <NA> 0.476 | ||
2 0 38 16.9 7 0.7 70.03 0.098 <NA> | ||
3 1 187 83.1 2.94 1.55 5.57 0.001 <NA> | ||
4 kk1 <NA> <NA> <NA> <NA> <NA> <NA> 0.984 | ||
5 0 8 3.6 314366015.19 0 Inf 0.997 <NA> | ||
6 1 217 96.4 2.85 1.55 5.25 0.001 <NA> | ||
``` | ||
|
||
``` r | ||
TableSubgroupMultiCox(Surv(time, status) ~ sex, var_subgroups = c("kk", "kk1"), data = lung) | ||
``` | ||
|
||
``` r | ||
Variable Count Percent Point Estimate Lower Upper sex=1 sex=2 P value P for interaction | ||
sex Overall 228 100 1.91 1.14 3.2 100 100 0.014 <NA> | ||
1 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> | ||
2 kk <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> 0.525 | ||
3 0 38 16.9 2.88 0.31 26.49 10 100 0.35 <NA> | ||
4 1 187 83.1 1.84 1.08 3.14 100 100 0.026 <NA> | ||
5 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> | ||
6 kk1 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> 0.997 | ||
7 0 8 3.6 <NA> <NA> <NA> 0 100 <NA> <NA> | ||
8 1 217 96.4 1.88 1.12 3.17 100 100 0.018 <NA> | ||
``` | ||
|
||
## 中国での動画やブログレビュー | ||
|
||
::: columns | ||
::: {.column width="50%"} | ||
![](jstable_ch.png) | ||
::: | ||
|
||
::: {.column width="50%"} | ||
![](jstable_ch2.png) | ||
::: | ||
::: | ||
|
||
## | ||
|
||
<center><a href="https://github.com/jinseob2kim/jsmodule"><img src="jsmodule.png" width="100%"/></a></center> | ||
|
||
::: columns | ||
::: {.column width="50%"} | ||
![](https://github.com/jinseob2kim/jsmodule/blob/master/vignettes/figures/ps.png?raw=true) | ||
::: | ||
|
||
::: {.column width="50%"} | ||
1\~2行のコードだけで分析ウェブを作れるよう、各分析機能をmoduleとして開発 | ||
|
||
![](jsmodule2.png) | ||
::: | ||
::: | ||
|
||
::: notes | ||
마지막으로 jsmodule입니다. jskm, jstable 내용을 포함해 의학통계에서 많이 이용되는 분석기능들을 Shiny module로 만들고, 이 모듈들을 모아 로컬에서 실행할 수 있는 Shiny App 을 만들었습니다. Shiny App은 총 5종류로 일반데이터용, Survey data용, GEE를 적용한 반복측정데이터용, 마지막으로 인과추론 분석방법인 Propensity score mathching과 IPTW 를 수행할 수 있는 Shiny App 입니다. 각 분석기능은 독립적으로 Shiny module로 개발되었으므로, 누구나 자신의 Shiny app에 적용할 수 있습니다. | ||
::: | ||
|
||
## | ||
|
||
![](그림1.png) | ||
|
||
::: notes | ||
이것은 jskm을 Shiny module로 만든 것이며, 그림은 PPT로 다운받아 직접 편집할 수 있습니다. officer과 rvg 패키지를 이용했습니다. | ||
::: | ||
|
||
## 論文支援実績 | ||
|
||
SCI論文200編以上サポート | ||
|
||
- 医学分野 トップジャーナル NEJM、LANCET、JAMAを含む | ||
- 6つの大学病院と年単位研究支援契約、10ヶ所の製薬会社の臨床試験分析をサポート | ||
|
||
![](그림2.png) | ||
|
||
::: notes | ||
저희 회사에서는 이 패키지들을 이용해 의학연구를 지원하고 있으며, 세계 3대 의학저널인 NEJM, LANCET, JAMA 포함 200편 이상의 SCI 논문에 필요한 분석을 지원하였습니다. 한국의 6개 대학병원과 연단위 계약을 수행중이며, 10개이상 제약회사의 임상시험 데이터분석을 지원중입니다. | ||
::: | ||
|
||
## 無料統計ウェブ | ||
|
||
- よく利用される分析機能を無料で分析できるopenstat.ai 公開 | ||
- jskm/jstable/jsmoduleの分析moduleを適用 | ||
|
||
::: columns | ||
::: {.column width="70%"} | ||
[**openstat.ai**](https://openstat.ai/)**: free** | ||
|
||
![](example-meta.png) | ||
::: | ||
|
||
::: {.column width="30%"} | ||
**Openstat QR code** | ||
|
||
![](오픈스탯.png) | ||
::: | ||
::: | ||
|
||
::: notes | ||
연구자들이 R 패키지 설치없이도 웹에서 이용할 수 있도록 하기 위해 openstat.ai를 출시하였습니다. 연구자는 자신의 데이터를 업로드하여 jsmodule의 4가지 Shiny app을 이용할 수 있습니다. 메타분석, 샘플수계산을 위한 Shiny app도 이용할 수 있습니다. | ||
::: | ||
|
||
## 国家R&D選定 | ||
|
||
3件の国家R&D支援事業を通じて技術開発および医学研究用の高度化を遂行 | ||
|
||
\`22 (韓国)科学技術情報通信部「公開SW基盤のクラウド統計パッケージSW開発」(2年1億円) | ||
|
||
- 統計非専攻者及び一般向け | ||
|
||
\`23 (韓国)情報通信産業振興院公開SW技術拡散支援事業(7ヶ月2000万円) | ||
|
||
- 医学研究用 | ||
|
||
\`23 (韓国)中小ベンチャー部 (1200万円) | ||
|
||
- 医学研究用&臨床試験 | ||
|
||
::: notes | ||
저희 패키지는 한국에서 3건의 R&D 지원을 받아 개발 및 의학연구/임상시험용 고도화를 수행하였습니다. | ||
::: | ||
|
||
## 著作権登録 | ||
|
||
<center><img src="jj.png" width="50%"/></a></center> | ||
|
||
::: notes | ||
R&D 지원을 통해 소프트웨어 저작권을 등록했으며 | ||
::: | ||
|
||
## オープンソース管理 | ||
|
||
::: columns | ||
::: {.column width="50%"} | ||
https://statgarten-issue.streamlit.app/ | ||
|
||
![](metric.png) | ||
::: | ||
|
||
::: {.column width="50%"} | ||
Github action | ||
|
||
- テスト、ホームページアップデート、ライセンス同意、コードstyle | ||
|
||
![](ga.png) | ||
::: | ||
::: | ||
|
||
::: notes | ||
자체 개발한 파이썬 streamlit 기반 대시보드를 이용해 깃허브 활성화 정도를 실시간으로 체크할 수 있으며, 모든 패키지는 Github action을 통해 에러체크, 홈페이지 업데이트, 코드 스타일링, 라이선스 동의가 자동으로 수행됩니다. | ||
::: | ||
|
||
## オープンソースライセンス検証 | ||
|
||
<center><img src="license.png" width="80%"/></a></center> | ||
|
||
::: notes | ||
모든 패키지는 나라에서 지원하는 오픈소스라이선스검증 프로그램을 이용해, 라이선스 문제가 없음을 검증받았습니다. | ||
::: | ||
|
||
## R package: Shiny -\> exe | ||
|
||
R必要なくexeファイルにしてローカル環境で実行 - [executablePackeR](https://github.com/ChangwooLim/executablePackeR) | ||
|
||
<center><a href="https://www.r-bloggers.com/2023/03/creating-standalone-apps-from-shiny-with-electron-2023-macos-m1//"><img src="スクリーンショット 2024-04-17 午後12.02.26.png" width="50%"/></a></center> | ||
|
||
::: notes | ||
폐쇄 인터넷망 및 R패키지 설치가 어려운 병원들을 위해, Shiny app을 exe파일로 만들어주는 R패키지를 만들어 크랜에 공개하였습니다. 이 패키지를 이용하면 exe 파일의 실행만으로 shiny app을 이용할 수 있으며, 알블로거에도 소개되었습니다. | ||
::: | ||
|
||
## 要約 | ||
|
||
- 医学研究用Rパッケージの開発、日本/中国で活用 | ||
|
||
- 国家R&D選定 | ||
|
||
- 最新オープンソース管理技術 | ||
|
||
- ライセンス検証 | ||
|
||
# ご清聴、ありがとうございました。 | ||
|
||
::: notes | ||
ご清聴(せいちょう)ありがとうございました。 | ||
::: |
Oops, something went wrong.