positive: 假设在发生心梗的人群中,患高血压是40人,而在没发生过心梗的人群中患高血压20人。那么我们可以得到以下的四格表:<br>那么OR=(40/60)/(20/80)=40*80/20*60=2.67。那么这2.67说明什么呢?其意义基本上可以等同为:患高血压的人发生心梗的风险是未患高血压的人的2.67倍。<br>那论文里常常出现的危险因素、保护因素是什么意思呢?研究人员在进行统计得到OR值的时候,会把OR值和1进行比较,如果某个因素OR值大于1,那么这个因素就是患病的危险因素;也就是携带这个因素的人,患病的风险高。如果OR值小于1,那么这个因素就是患病的保护因素;有这个因素的人患病的风险低。<br>为什么我们能做出这样的判断呢?我们先来假设一下,假如患高血压和发生心梗无关,那么可以推论,患高血压的人和不患高血压的人心梗的发生率是一样的。也就是说,患高血压的人的心梗发生率=未患高血压的人。因为病例对照研究得不到发病率,所以我们只好推论改成:心梗病例中高血压/无高血压的比值和非心梗对照中高血压/无高血压的比值相同。在上面这个假设成立的时候,我们得到的OR值是多少呢?OR=(心梗病例中高血压/无高血压的比值)/( 非心梗对照中高血压/无高血压的比值)=1。通过上面这样一说大家应该明白为啥我们的OR值都要和1比了吧。<br>最后以一张meta分析的森林图结尾。
negative: "\ue50a2011-11-30　17:28:43　\ue50bPS　:在阅读本篇文章之前,最好先搞清楚:　1.　数据类型在计算机内的存储方式;　2.　数据类型在　VC++　或者　GCC　中的数值范围和精度。　如果对以上两点不清楚,请先阅读另一篇文章《计算机的数据存储及　VC++/GCC　的数值范围》:　另外,看完本篇文章后,再去学习一下　Java　的数据类型,能够极大地加深理解。　判断一个数是否是“整型”(　int　),调用系统函数即可　#include　#include　using　namespace　std;　int　main()　{　double　i=3;　cout　=0)　if(　(n-(int)n)　　0.999999999999999　)　//　双精度对应　1e-15　和15　个9(　单精度对应　1e-6　和6个9)printf(""YES\n"");　else　printf(""NO\n"");　else　if(　-(n-(int)n)　　0.999999999999999　)　printf(""YES\n"");　else　printf(""NO\n"");　解析:　当n>=　0　时,那么只要　(n-(int)n)　　0.999999999999999　则n也认为是整数,从而将　0.999　…　999　的情况也排除了。　当n　0.999999999999999　则n就是整数,将-　0.999　…　999　的情况排除了。　注意:常量　0.99　…　99　的默认存储类型是　double　型,如果在末尾加　L　写成　0.99　…　99L　,则代表　long　double　型,　在VC　中long　double　型和　double　型没多少区别,所以一般不用它　(　GCC　中可以用)。同理整数末尾也可以加　L　,代表　long　int　,取值范围是正负　21　亿多(在32　位系统中　int　和long　[int]　都是占　4　个字节,取值范围也一样,所以一般　long　类型也不常用,　64　位系统中可以用),例如　212345678L　(　9　位数,　21　亿多)。　完整程序如下:　#include　#include　int　main()　{　double　n;　while(scanf(""%lf"",&n)==1)　{　if(n>=0)　if(　(n-(int)n)　　0.9999999999"