第二节 检验方法使用条件考察

独立性:不同案例间的取值互相独立,不受到除研究中考虑的分组因素、配对因素等研究因素之外任何其他因素的影响,其他非研究因素的影响基本可以等同于随机误差

非独立的情形:研究儿童生长发育,样本中存在兄弟、表兄弟等近亲关系

数据的非独立的影响是比较大的,因为传统统计模型均按照数据独立假设进行推导,非独立会导致数据方差估计不准确,进而导致假设检验的结果错误,很严重的数据非独立也会使得参数估计值出现偏差

最好在研究设计阶段就进良保证数据不违反独立性

数据独立性的检测:游程检验、DW统计量、自相关分析等

如果违反了独立性:采用专门的方差分析模型,或者专门对方差等进行校正,或者采用GEEs、混合效应模型等专门的非独立数据分析模型

 

正态性的考察:直方图、茎叶图、箱图、PP图、QQ图

PP图的经验界值,去掉趋势的上下偏离不超过0.05

正态性用建模后的残差进行假设检验,但是不推荐,样本量偏低过于迟钝,样本量较大又会过敏,除非临床试验这类问题,一般不用假设检验去考察正态性,因为临床试验本身会对样本量进行预先的计算

 

直方图进行正态性考察

ccss.index1.plot.hist()

 

箱图

ccss.index1.plot.box()

 

使用k-s检验,考察正态性

import scipy.stats as ss
ss.kstest(ccss.index1, "norm")  # 用k-s检验考察正态性,采用最大离群值进行计算,因此只要有一个强离群值就会判非正态,statistic检验统计量,pvalu p值,拒绝H0,不服从正态分布
KstestResult(statistic=0.999128160418483, pvalue=0.0)

ks = lambda x: ss.kstest(x, "norm")  # 使用k-s检验考察时间分组正态性
ccss.groupby("time").index1.apply(ks)
time
200704                   (1.0, 0.0)
200712    (0.9967105263157895, 0.0)
200812                   (1.0, 0.0)
200912                   (1.0, 0.0)
Name: index1, dtype: object

使用Shapiro检验,考察正态性

ccss.groupby("time").index1.apply(ss.shapiro)  # 使用Shapiro检验,考察正态性,不需要参数,shapiro默认采用median作为考察对象,而不是mean,因此比k-s较稳健,也大多使用这个方法
time
200704    (0.966885507106781, 2.2581652956432663e-06)
200712    (0.9562035202980042, 6.700251020674841e-08)
200812     (0.977051854133606, 8.660431194584817e-05)
200912    (0.9523671865463257, 4.465105973849859e-07)
Name: index1, dtype: object

发现数据非正态的应对策略:进行变量变换,更换分析方法(非参数方法)

评估严重程度,t检验有一定耐受性

正偏态分布:对数变换或者平方根变换,有负值,-(最小值)+1

超过30%-60%区间的率:平方根反正弦变换

 

方差齐性

  在各组样本含量相差不大的时,方差轻微不齐仅会对方差分析的结论有少许影响,一般而言,只要最大/最小方差之比小于3,分析结果都是稳定的;然而如果各组样本含量相差过大时,方差不齐会对方差分析造成相当大的影响

 

直方图考察方差齐性

ccss.index1.hist(by=ccss.time)
array([[<matplotlib.axes._subplots.AxesSubplot object at 0x000001C8DDAA46D8>,
        <matplotlib.axes._subplots.AxesSubplot object at 0x000001C8E3D75160>],
       [<matplotlib.axes._subplots.AxesSubplot object at 0x000001C8DD518FD0>,
        <matplotlib.axes._subplots.AxesSubplot object at 0x000001C8E6EF14E0>]],
      dtype=object)
 
箱图考察方差齐
ccss.boxplot(column='index1', by='time')

ccss.groupby('time').boxplot(column='index1')

 

使用假设检验考察方差齐性

ss.levene(ccss.index1[ccss.time==200704],
         ccss.index1[ccss.time==200712],
         ccss.index1[ccss.time==200812],
         ccss.index1[ccss.time==200912]
         )
LeveneResult(statistic=2.2068913639343792, pvalue=0.08563270755698366)


方差不齐应对策略:
  校正
  变换变量
  更换方法

posted @ 2020-04-07 00:13  kog_maw  阅读(409)  评论(0编辑  收藏  举报