跳转至

2018

Linux安装rar解压软件

系统环境

centOS7

Bash
1
2
3
4
5
[root@dbf69ae824f9 TCR]# uname -m&&uname -r
x86_64
3.10.0-514.21.1.el7.x86_64
[root@dbf69ae824f9 TCR]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

下载软件包

Bash
1
2
3
4
5
wget http://www.rarlab.com/rar/rarlinux-3.8.0.tar.gz
tar zxvf rarlinux-3.8.0.tar.gz
cd rar
make
make install 

注意:安装需要root权限,没有的话建议用docker尝试,或者自己修改makefile里面的PREFIX 路径

遭遇bug

在尝试解压文件时:

Bash
1
rar x example.rar 

遇到报错:

Bash
1
bash: /usr/local/bin/rar: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

解决

解释:是因为64位系统中安装了32位程序

解决方法:

Bash
1
yum install glibc.i686

再次尝试解压文件,又遇到报错:

Bash
1
error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

解决办法:

Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
[root@dbf69ae824f9 rar]# yum whatprovides libstdc++.so.6
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: mirrors.shu.edu.cn
 * extras: mirrors.163.com
 * updates: mirrors.163.com
libstdc++-4.8.5-36.el7.i686 : GNU Standard C++ Library
Repo        : base
Matched from:
Provides    : libstdc++.so.6



libstdc++-4.8.5-36.el7.i686 : GNU Standard C++ Library
Repo        : @base
Matched from:
Provides    : libstdc++.so.6



[root@dbf69ae824f9 rar]#

yum whatprovides libstdc++.so.6该命令会提示哪个安装包有这个库文件如上,libstdc++-4.8.5-36.el7.i686 这个包可以提供 libstdc++.so.6库,执行

Bash
1
yum install libstdc++-4.8.5-36.el7.i686

然后,rar 就可以用了

rar -h 查看使用帮助。

参考

  • https://haiwei2009.iteye.com/blog/1908263
  • http://blog.51cto.com/oldboy/597515

Git develop SOAP

我的流程

1. 要从Github下载一个项目,需要用到clone命令。

Bash
1
git clone xxxxxxx.git

2. 创建并切换到新建的分支

Bash
1
git checkout -b feature-A develop

然后可以在新的分支上愉快的写代码开发新功能了,开发测试完毕后:

3. 用add命令来添加新写的代码,commit命令用来提交新写的代码

Bash
1
2
git add feature-A
git commit -m "add feature A"

4. add命令执行后,修改被保存到暂存区。可以理解为你操作本地文件按了下ctrl + s

接下来,不可以直接用到merge命令,合并feature-A分到develop去,如果这样做,很可能出现冲突。因为可能出现有很多人在develop分支上更新。所以你这个时候用pull命令,把远程仓库的更新取回并更新。

shell git checkout develop git pull origin develop

5. 然后再切换回自己的分支,用rebase命令合并新更新到自己目前工作的分支。

Bash
1
2
git checkout feature-A
git rebase develop

一般情况下rebase都是会有冲突的,详细查看冲突可以用命令git status然后就会显示哪个文件有冲突,然后打开有冲突的哪个文件,会发现有一些“<<<<<<<”, “=======”, “>>>>>>>” 这样的符号。

Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
"<<<<<<<" 表示冲突代码开始

"=======" 表示test与分支冲突代码分隔符

">>>>>>>" 表示冲突代码的结束

<<<<<<<  

所以这一块区域test分支的代码

=======  
这一块区域develop分支的代码

>>>>>>> 

rebase 和 merge的另一个区别是rebase 的冲突是一个一个解决,如果有十个冲突,先解决第一个,然后用命令

shell git add -u git rebase --continue

继续后才会出现第二个冲突,直到所有冲突解决完,而merge 是所有的冲突都会显示出来。

所以rebase的工作流就是

Bash
1
2
3
4
5
6
7
8
9
git rebase 
while(存在冲突) {
    git status
    找到当前冲突文件,编辑解决冲突
    git add -u
    git rebase --continue
    if( git rebase --abort )
        break; 
}

最后冲突全部解决,rebase成功!!

6. 合并分支git merge --no-ff feature-A 到develop

Bash
1
2
3
git checkout develop
git pull
git merge --no-ff feature-A

7. 更新到gitlab

Bash
1
git push origin develop

引用部分

项目中长期存在的两个分支

  • master:主分支,负责记录上线版本的迭代,该分支代码与线上代码是完全一致的。
  • develop:开发分支,该分支记录相对稳定的版本,所有的feature分支和bugfix分支都从该分支创建。

其它分支为短期分支,其完成功能开发之后需要删除

  • feature/*:特性(功能)分支,用于开发新的功能,不同的功能创建不同的功能分支,功能分支开发完成并自测通过之后,需要合并到 develop 分支,之后删除该分支。
  • bugfix/*:bug修复分支,用于修复不紧急的bug,普通bug均需要创建bugfix分支开发,开发完成自测没问题后合并到 develop 分支后,删除该分支。
  • release/*:发布分支,用于代码上线准备,该分支从**develop**分支创建,创建之后由测试同学发布到测试环境进行测试,测试过程中发现bug需要开发人员在该release分支上进行bug修复,所有bug修复完后,在上线之前,需要合并该release分支到**master**分支和**develop**分支。
  • hotfix/*:紧急bug修复分支,该分支只有在紧急情况下使用,从**master**分支创建,用于紧急修复线上bug,修复完成后,需要合并该分支到**master**分支以便上线,同时需要再合并到**develop**分支。

参考

  • https://segmentfault.com/a/1190000008209343
  • http://www.open-open.com/lib/view/open1451353135339.html
  • http://www.open-open.com/lib/view/open1461324562769.html
  • https://blog.csdn.net/chenansic/article/details/44122107

你是否工作的开心?

1、 自我决定论

mark

自我决定论认为,满足上述三个条件,人心里健康和幸福感才能获得保障。

参考:

我的几点看法:

  1. 写博客有利于获得提高自我效能感。在博客中不断的记录下你工作中遇到的困难和你的解决办法,当有一天,你回头看看以自己曾今的博客,会发现那是翻过一座座高山,趟过一条条大河的足迹,是一点点打怪升级的历练,你会对未来的看法更加乐观,更加自信!
  2. 和同事的交流互动是必要且重要的。你不需要刻意逢迎,也不可能和所有人成为知己,但是应该表现出**容易交流,并且有礼貌**。更何况,人类有社会属性,你也不例外。
  3. 加强主观能动性。你可能无法决定工作的内容方向,但更主动的参与,变相提高**自主权**,也能缓解工作的压抑,不让自己时时刻刻觉得自己是被迫出售劳动力的那个人。我要再提一下写博客的重要性,要多反思,多总结,在被动工作获得主动的提升。"别人出钱请你让你给自己刷怪练级,有啥不乐意的?"

软件著作权申请流程

1、 网页账户注册

  • 注册账户
  • 注册账户
  • 注册后登陆界面如下:
  • 点击修改资料, 完善个人信息,填写手机号和邮箱
  • 点及我要登记R11.计算机软件著作权登记申请
  • 填写你的各项信息,注意区分企业法人自然人, 申请人的地址按身份证上的填写
  • 浏览器右键打印(单面打印,后续所有表格均为单面打印)该申请表(全名为计算机软件著作权登记申请表),在最后页申请人签章: 处盖公司公章
    • 该表右上方有流水号,若同一账户有多份申请表需要注意,稍后会用到

2、 准备纸质材料

  • 准备其他纸质材料:
    • 软件源代码
      • Calibri 字体,10 码,黑色
      • 源代码的前30页和后30页,多一页少一页都不行(再次强调单面打印)
      • 标明页码,每页50行左右(+-5)(word设置每页50行)
    • 计算机软件合作开发合同
      • 通常是你和你公司签订
      • 需要公司盖公章
      • 开发人圆签名,并写上日期
      • 日期时间应该比计算机软件著作权登记申请表 上的开发完成日期
    • 开发人员身份证正反面复印件
      • 每个开发者一份,签名,并写上 仅供软件著作权申请使用
    • 企业营业执复印件
      • 盖上企业公章
      • 写上仅供软件著作权申请使用
    • XX软件使用手册
      • 目录如下
      • 标明页码,并且更新目录
        Text Only
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        目录  
        XXXXXX软件  
        用户手册
        1 引言   
        1.1 编写目的   
        1.2 背景  
        1.3参考资料  
        2 软件概述  
        2.1 软件用途  
        2.2 软件功能  
        2.3 软件性能  
        3 运行环境  
        3.1 硬件设备  
        3.2 软件环境  
        4 使用说明  
        4.1 软件安装与运行  
        4.2 输入输出文件  
        4.3 举例  
        

3、 微信预约

  • 关注微信公众号
    • 微信号 CPCC1718
    • 公众号名: 中国版权服务
  • 找到 微平台
    • 点击 快速预约
    • 点击 华东版权登记大厅 (上海所属版权地区)
    • 填写预约登记信息
    • 如果有多份软著申请,注意区分流水号

4、 地址

  • 中国版权保护中心 上海市闵行区莘庄工业园IF如果创意园春东路508

5、 注意事项

  • 预约手机号必须是 账号绑定的手机号,无法更改
  • 填写 计算机软件著作权登记申请表 时,无论是走 代理人 还是 著作权人 申请途径,均需要申请人本人亲自去,后续所有的流程均由该人办理
  • 预约需要提前 1 个工作日, 不可当天申请当天去
  • 著作权人 中若包含外国人,需要提供公证后的 护照翻译件(复印件),本人签名
  • 30工作日后领取证书,可登陆中国版权保护中心查询进度,证书印制后三个工作日才可领取
  • 若材料有问题:
    • 代码和软件说明书出问题,当日即可修改
    • 需要签字或盖章的材料,需要接受补证通知,重新准备材料或申请书
      • 申请书 此时只能修改一次(可保存,先不提交)
  • 工作人员上午11:30 下班,下午1点上班

将cd和ls两个命令组合起来使用

1、 将 cd 和 ls 两个命令组合起来使用

效果:很明显,可以少敲一次命令

1.1、 具体实现

编辑 .bashrc文件(如果你用的时zsh或者时csh 就去编辑其对应的配置文件,如~/.zshrc~/.cshrc

在文件中添加如下的一个函数cl

Bash
1
2
3
4
5
cl() {
    cd "$@" && ls
}

alias 'cd'=' cl'

保存退出,刷新

Bash
1
2
3
source ~/.bashrc 
source ~/.zshrc
source ~/.cshrc

在终端里敲 cl /home 查看效果

该命令是 cd 和 ls 的组合命令,若cd命令执行失败,则 ls 命令不会执行

1、 R 拓展包的安装

1.1、 官方在线安装

例如:安装 "ggplots" 包

S
1
2
options(CRAN="http://cran.r-project.org");
install.packages("ggplots");

1.2、 本地安装

将安装包下载到本地,然后本地安装

我一般都在这俩地址下载:

  • https://mirrors.tuna.tsinghua.edu.cn/CRAN/
  • http://bioconductor.org/

注意win下的地址的写法

S
1
install.packages("C:\\ggplot2.zip",contriburl=NULL)
1.3、 通过第三方工具在线安装(bioconductor)

S
1
2
source("http://bioconductor.org/biocLite.R")
biocLite("ggplots")
最新的 使用方法,参见: http://bioconductor.org/install/

1.4、 通过第三方工具在线安装(devtools + github)安装发布在github上的R包

例如:安装 "fishplot" 包,安装GitHub上的R包,需要指定R包的作者,一般这个包的github页面都会介绍安装的步骤

S
1
2
3
install.packages("devtools")
library(devtools)
install_github("chrisamiller/fishplot")
1.5、 github上R包的本地安装

例如:安装 "fishplot" 包, Linux 直接在命令行安装 windows需要在cmd界面安装

Bash
1
2
3
git clone git@github.com:chrisamiller/fishplot.git
R CMD build fishplot
R CMD INSTALL fishplot_0.2.tar.gz

1.6、 内网安装

https://blog.csdn.net/liu365560704/article/details/70321153

2、 常用技巧

S
1
rm(list = ls(all=TRUE))   # 清除变量

PyClone的安装报错及解决

1、 PyClone 安装,报错及解决

1.1、 安装
Bash
1
conda install PyClone

命令如下:

Bash
1
PyClone run_analysis_pipeline --in_files SRR385938.tsv SRR385939.tsv SRR385940.tsv SRR385941.tsv --working_dir ./tt
1.2、 报错:
Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Traceback (most recent call last):
  File "/home/lixy/miniconda2/envs/ngs2/bin/PyClone", line 11, in <module>
    load_entry_point('PyClone==0.13.1', 'console_scripts', 'PyClone')()
  File "/home/lixy/miniconda2/envs/ngs2/lib/python2.7/site-packages/pyclone/cli.py", line 78, in main
    args.func(args)
  File "/home/lixy/miniconda2/envs/ngs2/lib/python2.7/site-packages/pyclone/run.py", line 97, in run_analysis_pipeline
    args.thin
  File "/home/lixy/miniconda2/envs/ngs2/lib/python2.7/site-packages/pyclone/run.py", line 409, in _cluster_plot
    samples=samples,
  File "/home/lixy/miniconda2/envs/ngs2/lib/python2.7/site-packages/pyclone/post_process/plot/clusters.py", line 58, in density_plot
    fig = pp.figure(figsize=(width, height))
  File "/home/lixy/miniconda2/envs/ngs2/lib/python2.7/site-packages/matplotlib/pyplot.py", line 534, in figure
    **kwargs)
  File "/home/lixy/miniconda2/envs/ngs2/lib/python2.7/site-packages/matplotlib/backend_bases.py", line 170, in new_figure_manager
    return cls.new_figure_manager_given_figure(num, fig)
  File "/home/lixy/miniconda2/envs/ngs2/lib/python2.7/site-packages/matplotlib/backend_bases.py", line 176, in new_figure_manager_given_figure
    canvas = cls.FigureCanvas(figure)
  File "/home/lixy/miniconda2/envs/ngs2/lib/python2.7/site-packages/matplotlib/backends/backend_qt5agg.py", line 35, in __init__
    super(FigureCanvasQTAggBase, self).__init__(figure=figure)
  File "/home/lixy/miniconda2/envs/ngs2/lib/python2.7/site-packages/matplotlib/backends/backend_qt5.py", line 235, in __init__
    _create_qApp()
  File "/home/lixy/miniconda2/envs/ngs2/lib/python2.7/site-packages/matplotlib/backends/backend_qt5.py", line 122, in _create_qApp
    raise RuntimeError('Invalid DISPLAY variable')
RuntimeError: Invalid DISPLAY variabl
1.3、 解决:

aroth85 :

Please check user group (https://groups.google.com/forum/#!forum/pyclone-user-group) for threads on this.

There is another bit in the links about changing your "matplotlibrc" file, instead of the code. This will globally set the backend for all Python scripts to Agg which is what you likely want for a remote server. You should not need to edit the code if you set this file up correctly. See the matplotlib help page with search terms matplotlibrc for details.

具体:

  1. 报错的原因是 matplotlib的配置文件没有设置好:
  2. 找到配置文件:

Bash
1
2
3
>>> import matplotlib
>>> matplotlib.matplotlib_fname()
'/home/foo/.config/matplotlib/matplotlibrc'
参考 1. 编辑你的 matplotlibrc (第44行) :

Bash
1
2
vim /home/foo/.config/matplotlib/matplotlibrc :
backend      : Agg

再次执行命令,成功!

基于已有的image创建dockerimages

1、 创建docker images 有两种方法

  • 运行一个容器,在运行容器的基础上安装软件,部署服务,然后导出为新的image
  • 通过编写dockerfile文件来创建新的image

配合docker 私有仓库,可以用来部署生产环境

2、 缘起

本文记录了在一个已近存在的docker image,安装软件,并保存为新image的过程。

首先通过:

Bash
1
docker images

找到我们事先下载好得

Bash
1
docker images

docker.io/hiono/texlive

3、 运行 docker 镜像:

Bash
1
docker run -it docker.io/hiono/texlive 

以下操作都发生在运行的该docker image中

3.1、 下载 anaconda
Bash
1
wget  https://repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_64.sh
3.2、 安装 anaconda
Bash
1
2
3
4
5
6
Anaconda3-5.2.0-Linux-x86_64.sh: 350: Anaconda3-5.2.0-Linux-x86_64.sh: bunzip2: not found
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
root@890b8b636b88:~# yum install -y bzip2
-su: yum: command not found
root@890b8b636b88:~# apt-get install -y bzip2
3.3、 安装依赖环境以及treeomics软件

按照 https://github.com/johannesreiter/treeomics 要求创建环境,安装相应得依赖环境

Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
conda create  -n treeomics  python=3.4 NumPy SciPy networkx seaborn pandas matplotlib=1.5
apt-get update 
apt-get install git
git clone https://github.com/johannesreiter/treeomics.git
apt-get install wkhtmltopdf
pip install pdfkit
conda install perl=5.26.2
conda update -n base conda
apt-get install circos
apt-get install cpanminus
cpanm SVG
pip install varcode
pip install pyensembl
Bash
1
git clone https://github.com/johannesreiter/treeomics
3.4、 安装 cplex
Bash
1
2
3
4
./cplex_studio126.linux-x86-64.bin
2
cd /opt/ibm/ILOG/CPLEX_Studio1261/cplex/python/3.4/x86-64_linux
python setup.py install

4、 测试

Bash
1
2
cd /root/treeomics/src
python treeomics -h

出现帮助信息,表明依赖安装完毕……

5、 docker 封装

新开一个shell 窗口,docker ps 获得我们docker 容器的id 890b8b636b88

exit 退出正在运行的 docker 容器 后

Bash
1
2
$ docker commit -m "a docker image for treeomics" -a "biolxy<biolxy@aliyun.com>" 890b8b636b88 ubuntu_treeomics
sha256:0bd8695dd6d647b249d7469eac397595ddbe40e7391415805d59f05d7d375e3d

mark

可以查看到我们创建的镜像了,OK

5.1、 使用:
Bash
1
docker run -it -v `pwd`:`pwd` -w `pwd`  ubuntu_treeomics

6、 参考

  • https://blog.csdn.net/leo15561050003/article/details/71274718?locationNum=14&fps=1
  • https://www.cnblogs.com/mthoutai/p/6812871.html

你用的是哪个版本的rename

1、 mv 与 rename 的区别

“mv命令只能对单个文件重命名”,这实就是mv命令和rename命令的在重命名方面的根本区别。

当你的目录下由大量的文件需要批量命名时,rename的作用就体现出来了,例如100个后最为.html 的文件替换为 .txt 文件,通常你需要写一行for循环,如

Bash
1
$ for i in `ls *.html`;do name=`basename .html`; mv $i $name.txt ;done

如果你想替换的字符不再文件的最前或最后方,由或则你想实现更多功能,那么你就需要rename

2、 rename 有两个版本

Linux 的rename命令有两个版本,一个是C语言版本的,一个是Perl语言版本的,早期的Linux发行版基本上使用的是C语言版本的,现在已经很难见到C语言版本的了,由于历史原因,在Perl语言大红大紫的时候,Linux的工具开发者们信仰Perl能取代C,所以大部分工具原来是C版本的都被Perl改写了,因为Perl版本的支持正则处理,所以功能更加强大,已经不再需要C语言版本的了。

3、 如何区分系统里的rename命令是哪个版本的?

我在网上搜到描述都是这个

输入man rename 看到第一行是 RENAME(1) Linux Programmer’s Manual RENAME(1) 那么 这个就是C语言版本的。 而如果出现的是: RENAME(1) Perl Programmers Reference Guide RENAME(1) 这个就是Perl版本的了!

然而这根本就**不对!**

我的 centOS下是c版rename :

mark

RENAME(1) User Commands RENAME(1)

并不是 RENAME(1) Linux Programmer’s Manual RENAME(1)

我的ubuntu下是perl版的rename:

mark

RENAME(1p) User Contributed Perl Documentation RENAME(1p)

并不是RENAME(1) Perl Programmers Reference Guide RENAME(1)

正确的做法:

Bash
1
vim `which rename`

c语言版本的是一个二进制文件,打开后是乱码

perl语言的你会明显看到 #!/usr/bin/perl -w

亦或者你可以通过上述图片中rename的用法来判断你用的是哪个版本

4、 两个版本的语法差异:

C语言的rename的语法格式是:

Bash
1
rename .html .txt  *.html

C语言的rename的语法格式是:

Bash
1
rename 's/\.html$/\.txt/' *.html
  • rename C语言版本所能实现的功能:批量修改文件名,结果是每个文件会被用相同的一个字符串替换掉!也就是说,无法实现诸如循环 然后按编号重命名!
  • 重点: C语言版本的rename无法处理带有- 的替换(别问怎么知道,都是泪啊)

5、 Perl 版本的批量重命名

Perl 版本的好处是,你可以使用正则表达式来完成很奇特的功能。

具体用法就不细说了。

6、 如果你的服务器不幸安装的时C版的rename,怎么办?安装一个rename

Text Only
1
conda install rename

统计学中常用的RR-OR-HR的含义及区别

1、 相对危险度 (RR)

RR也叫相对风险(relative risk )或风险比(risk ratio ) - RR=暴露组的发病或死亡率/非暴露组的发病或死亡率

它是反映暴露与发病(死亡)关联强度的指标。 - 队列研究是将某一特定人群按是否暴露于某可疑因素或暴露程度分为不同的亚组,追踪观察两组或多组成员结局(如疾病)发生的情况,比较各组之间结局发生率的差异,从而判定这些因素与该结局之间有无因果关联及关联程度的一种观察性研究方法。 - 通常,暴露可以指危险因素,比如吸烟、高血压,也可指服用某种药物。而事件可以是疾病发生,比如肺癌、心血管病,也可指服药后的治疗效果。

RR表明暴露组发病或死亡的危险是非暴露组的多少倍。RR值越大,表明暴露的效应越大,暴露与结局关联的强度越大。 - 适用于前瞻性研究

示例1:

患肺癌 未患肺癌
抽烟者 a b
非吸烟者 c d

其中吸烟者患肺癌的概率为20%,非吸烟者患肺癌的概率为1%。这种情况在上边的2×2表中表示。

这里,a = 20,b = 80,c = 1,d = 99。 那么与吸烟相关的癌症的相对风险将是:
$$ RR={a/(a+b) \over c/(c+d)} = {20 / 100 \over 1/100} =20 $$

统计学意义时

相对风险经常用于二元结果的统计分析,其中感兴趣的结果具有相对低的概率。因此,它通常适用于临床试验数据,用于比较未接受新药物治疗(或接受安慰剂)的人群与接受既定(标准治疗)治疗的人群发生疾病的风险。或者,它用于比较接受药物的人产生副作用的风险与未接受治疗(或接受安慰剂)的人相比。它特别有吸引力,因为它可以在简单的情况下手工计算,但也适用于回归建模,通常在泊松回归框架中。

在实验组和对照组之间进行简单比较:

  • RR = 1 意味着两组之间的风险没有差异。
  • RR <1 表示实验组中发生的事件不太可能发生在对照组中。
  • RR> 1 表示事件更可能发生在实验组而不是对照组。

2、 优势比 (OR)

优势比 (OR, Odds Ratio),又称比值比,用于反映病例与对照在暴露上的差异,从而建立疾病与暴露因素之间的联系。

  • OR=(病例组暴露人数/非暴露人数)/(对照组暴露人数/非暴露人数)
  • 适用于回溯性研究

示例:

OR的计算公式是: $$ OR = \frac {a / c } { b / d } = { {ad} \over {cb} } $$

OR 的三个要素:

  • OR的值

  • P value , <0.05 时两组的暴露史比例差异显著,提示暴露可能与疾病有联系。

  • 计算OR 95%可信限(confidence interval)
  • 可由R软件 fisher.test() 函数计算出这三个值

OR与RR的区别: - RR的计算需要使用发病率,因此队列研究、随机对照试验等前瞻性研究均可使用RR;但若是开展回顾性研究(如病例-对照研究),只能根据研究对象状态分组,无法直接计算暴露人群和非暴露人群的发病率,这种情况则需要使用OR.

  • 公式不难看出,两者的差异主要来源于分母,即 \(a/(a+b)\)\(a/b\) 的区别,因此,若a数值较小,则 \(a/(a+b) \approx a/b\) ,也就是说,当该**疾病发生率较低时(罕见病),其RR值和OR值的大小是近似的。因此这类疾病,若无法实施队列研究,则可采用病例-对照研究中的**OR值替代RR值

3、 风险比 (HR)

风险比(HR, hazardratio) - HR=的风险函数h1(t)/非暴露组的风险函数h2(t) - t指在相同的时间点上 - 风险函数指危险率函数、条件死亡率、瞬时死亡率。 - Cox比例风险模型可以得到,HR要用于生存分析。

HR与RR的区别

  1. 两者均用于前瞻性研究,多数认为HR与RR意思一样,但从计算公式可看出,HR还考虑了时间因素,换言之,包含了时间效应的RR就是HR;
  2. 从终点时间的角度来看,也可以这样理解,RR考虑了终点事件的差异,而HR不仅考虑了终点事件的有无,还考虑了到达终点所用的时间及截尾数据。

4、 补充

研究的目的、时间、成本、可行性决定研究类型。 研究类型分两种:

  • 观察性研究(描述性,分析性)
    • 横断面研究
    • 回顾性研究
    • 前瞻性研究
  • 实验性研究
    • 临床试验
    • 社区干预试验
    • 现场试验