Calculate odds ratio(OR) in R

Odds ratio(OR)从字面上可看出,是两个odds的ratio,其用于:

在病例对照研究(case-control study)中,分析暴露风险因素与疾病(或者用药)的关联程度;主要是反映暴露与疾病之间关联强度的指标,OR常适用于病例对照研究,也可以运用于前瞻性的研究(当观察时间相等时)

与其相似的有个指标relative risk(RR),其可以理解为risk ratio,用于:

在队列研究(cohort study)中,分析暴露因素与发病的关联程度;主要是反映暴露与发病(死亡)关联强度的最有用的指标,RR适用于队列研究或随机对照试验。

A cookbook for Mastering Shiny

这是一本online版的shiny book, 《Mastering Shiny》,按照作者Hadley Wickham(真大神也。。)的说法,将于2020年在O’reilly系列中出版

Shiny is a framework for creating web applications using R code. It is designed primarily with data scientists in mind, and to that end, you can create pretty complicated Shiny apps with no knowledge of HTML, CSS, or JavaScript

配置Spotfire-Statistics-Services

这是我整理的关于Spotfire的第三篇文章,主要记录下如何在Spotfire中安装Spotfire Statistics Services服务;由于网上相关资料比较少,而官方文档有些细节没写清楚,因此折腾了好久,因此记录下大致的过程。。。希望能帮助到大家,节省点时间哈(虽然用Spotfire的人真的不多)~

Use R in Spotfire

上篇 Spotfire ironpython示例小结 主要整理了关于Spotfire中关于如何使用Ironpython来拓展Spotfire使用范围,即通过脚本来控制分析及展示的过程

这篇文章主要整理下关于Spotfire中TERR脚本使用注意事项,TERR是一个集成在Spotfire中的一个R版本,代码的函数以及R包的用法大部分都跟Open R(常见的R版本)一样,唯一需要注意的是如何将其结果输出到Spotfire的一些文档属性或者可视化图形中

Prognostic and predictive

在肿瘤研究中,bioinformatics是一个很好的用于寻找biomarker的方法,其中会涉及到两个概念:预后生物标记物(prognostic biomarker)和预测生物标记物(predictive biomarker);最近在一个biomarker探索性研究中把两者搞混了,经推荐看了一篇文章(预后因素?预测因素?一字之差,谬之千里),以及结合研究数据才把两者搞清楚,因此粗略的做个记录

Scikit-learn Pipeline and ColumnTransformer

Pipeline

Pipeline可以用来简化构建变换和模型链的过程

Pipeline的好处:

  1. 构建好Pipeline后,只需要一次fitpredict,即可避免对每一个estimators都调用一遍fittransform
  2. 如果使用grid search,即一次历遍所有estimators的参数
  3. 避免测试集的信息泄露到交叉验证训练集中(典型的就是在做交叉验证前做了scale,这样会leaking statistics)

Categorical Feature Encoding

记录来自Kaggle的一次playground competition(Categorical Feature Encoding Challenge);备注,Kaggle比赛分类以下几种类型,摘抄自知乎回答

  • Getting Started(面向初学者),非常适合入门级的参赛者用来练手,但没有奖牌或奖金,只能看到自己的排名
  • Playground(面向初学者),项目难度比Getting Started稍难,主要是一些趣味性的比赛,看创意而不是解决具体的研究问题,奖励可能是奖金、荣誉,不能获得奖牌
  • Featured(面向竞赛者),是Kaggle上主要的竞赛类型,为解决商业问题而设立的比赛,奖金高竞争激烈,有金银铜牌奖励,对参赛选手的能力有一定的要求
  • Research(面向竞赛者),致力于解决科研界学术界的前沿问题,偏向于实验性质,较难;竞争没那么激烈,通常也有奖金和金银铜牌,但有的比赛只给荣誉奖励,或者是提供参加顶会的机会
  • Recruitment(面向求职者),赞助商为招聘数据科学家而设立的比赛,奖励就是赞助商提供的工作机会
  • Annual,不是严格意义上的比赛,每年两次,一次是美国大学篮球锦标赛期间的三月机器学习比赛,一次是圣诞节期间的圣诞主题优化比赛
  • Limited participation,通常是私人赛或邀请赛,例如只有master级别及以上才能参加的Master’s Competition

Jupyter notebook远程访问设置

最近在Kaggle中学习一些关于ML的方法,其提供的 kernel是一个很好的工具,非常类似于Jupyter notebook

kaggle Kernel本质上是一种jupyter笔记本,可以在浏览器中直接运行代码,并提供免费的gpu

但是遇到一个问题:如果某个训练的模型需要跑N个小时,kernel有时会由于一些原因(可能网络,也可能是无法长时间待机)导致断开;待重开打开后,模型又要重新跑了(而且是该notebook里所有代码都要重新跑)。。。

如果将代码拿到本机上跑,则太占用资源(CPU/内存),有时由于配置不够的原因,导致模型训练速度大大拉长。。

这时我才想起来可以在服务器上安装个Jupyter notebook,然后本机远程连接即可,只要网络不出问题,即可长时间的待机运行代码

Scikit-learn Grid Search

在机器学习模型中,需要人工选择的参数称为超参数。比如SVM的Ckernelgamma,随机森林的n_estimators,人工神经网络模型中的隐藏层层数和每层的节点个数等等

对于各个分类器,各个参数及其对应值都通过get_params()获取

最常用的方法就是网格搜索(grid search),从而获得最佳的cross-validation的score,其中可分为:

  • GridSearchCV
  • RandomizedSearchCV
|