第九章 假设检验

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第九章 假设检验相关的知识,希望对你有一定的参考价值。

参考技术A

假设检验中,我们首先对总体参数做一个尝试性地假设,称为 原假设 ,记作 ;定义另一个和原假设对立地假设,称为 备择假设 ,记作

例如测试新型燃油系统的燃油效率是否更好,原效率均值24英里/加仑,令新的燃油效率为
我们希望得到的结论为 ,新型的效率更高。

如果样本拒绝 的结论,那么就可以作出 的推断。

如检测饮料净含量是否达标,比如一瓶标注67.6盎司的饮料。


我们将受到挑战的假说(质量达标)作为原假设 ,如果样本不能拒绝原假设,我们则认为商家的产品是达标的。

对于总体均值的假设检验,我们令 为假定值,并采用下面三种形式之一进行假设检验。

简单来说,

在原假设为等式形式出现时,如 ,犯第一类错误的概率称为检验的 显著水平

显著水平 :当作为一个等式的原假设为真时,反第一类错误的概率称为检验的显著水平。用 来表示,一般取0.05或0.01。

应用中:只空值第一类错误的假设检验称为显著性检验(一般也是用这种类型的检)。
由于显著性检验中第二类错误的发生具有不确定性,所以我们只能说不能拒绝 ,而不说接受 。因为接受了可能犯第二类错误。

当总体不服从正态分布时得样本足够大,下面的方法才奏效。

总体均值的 单侧检验 有以下两种形式:

举例:咖啡每听3磅重
假设:
只要拒绝了 就可以处罚制造商,如果不能拒绝那就不惩罚。
我们选取36听作为样本,且总体标准差 ,且样本和总体都服从正态分布。

由于 服从正态分布,则

总体均值假设检验的检验统计量: 已知

当z值达到多小我们才能拒绝 ,两种方法来解决
第一种:P-值法
P-值是一个概率值,它度量样本所提供的证据对原假设的支持程度。P-值越小说明反对原假设的证据越多。

例如刚刚的咖啡例子:
我们根据标准正态概率表查的z=-2.67下侧的面积为0.0038。则P-值为0.0038(也称为实际显著水平)

P-值法的拒绝法则 :如果p-值 ,则拒绝

第二种:临界值法
临界值 是确定检验统计量的值是否小到足以拒绝原假设的一个基准。换句话,临界值是使我们拒绝原假设的检验统计量的最大值。

下侧检验的拒绝法则:临界值法
如果 ,则拒绝

例子:咖啡(书上可能写错,根据查表z应该是-2.33)
临界值时标准正态概率分布中,下侧面积 相对应的检验统计量的值。利用查表法,我们发现z=-2.23时下侧面积为0.01。 对应 则我们拒绝

小结
p-值法相较于临界值法,优点在于可以知道有多么显著(实际显著水平)
单侧检验的p-值:

可以根据excel的函数快速进行p和z的转化:

双侧检验 的一般形式:

举例:高尔夫球的发球距离必须为295码,多了或少了都不行。
假设:
如果 没有明显偏离295则不会拒绝
选择 作为检验的显著性水平,样本量为50, ,

p-值法
如果检验统计量的值位于抽样分布的两侧尾部,则支持拒绝原假设。
上述高尔夫例子:
p-值
由于p-值 ,所以不能拒绝

双侧检验p-值得计算步骤

临界值法
例如取显著水平 ,左右两侧得临界值对应得面积就为 根据查表法,求得检验统计量的临界值 当
当 或者 则拒绝

区间估计所构造的区间有 %概率包含总体均值,

针对 未知的情况,检验统计量服从自由度为n-1的t分布。
总体均值假设检验的检验统计量: 未知

第八章讲了t分布是在假设抽样总体服从正态分布下得到的,当然如果样本容量n足够大也可以用。

例子:给希斯罗机场评分,n为60,评分从0-10分, 分,样本标准差 ,因为高于7认定机场提供了优质服务,所以假设如下:

我们取显著性水平

根据查询t分布表,查得自由度59,t=1.84的情况下p-值为

使用excel来对t和p进行转换:

同样可以使用临界值法:
在自由度为59的t分布中上侧面积 对应的临界值为 只要 我们就可以拒绝 。

举例:玩具生产商有近千家分销零售商,预计每个分销零售商需要的订货量为40个玩具,现抽样25个商家,令 表示订货量的总体均值,做出假设(定置信水平 ):

如果我们不能拒绝 那我们就认为总体需求的均值为40(虽然可能犯二类错误)
样本均值
检验统计量的值:

当然也可以用 临界值法
先求检验统计量的临界值 (书上是-2.604有点离谱,我还是以excel为准)
则用计算出来的检验统计量t值来比较,如果在-2.06-2.06之间,我们不能拒绝

我们令 代表总体比率的假设值,下面是关于总体比率的假设检验的三种形式:

举例:高尔夫球场,女性少 %。经过运营后,看下是否上升。
假设: 如果能拒绝 就可以支持女性占比上升的结论。取显著水平

前面提到过, 且 ,则 服从正态分布。

总体比率假设检验的检验统计量

回到刚刚的例子,我们选取样本n=400,其中100个为女性,则 。
检验统计量

我们将z转换为p(此时为下侧面积),根据查表此时下侧面积=0.9938,那么对应的上侧面积p-值=1-0.9938=0.0062<0.05,则我们可以拒绝 认为女性上升了。

也可以用 临界值法
我们求出 ,由于计算出来的 所以我们认为可以拒绝

和总体均值的检验一样,不过需要 且 ,这样 才符合正态分布。

我们知道:

对于决策者来说,总是需要做出决策,哪怕不能拒绝 。所以后续的章节我们会讨论如何控制第二类错误。

举例:测试电池寿命,我们假设 ,要求显著水平
已知n=36, ,我们使用临界值法
则看检验统计量是否满足不等式
满足,则拒绝 ,我们对不等式进行处理 相当于

为了计算第二类错误的发生概率,我们需要选择一个小于120小时的 值,比如选取 ,我们可能从这批均值为112的货物中选出了 的样本

对于其他小于120的 值,我们可以重复计算该过程,求出不同 值下犯第二类错误的概率。

当 为假,我们作出拒绝 的正确结论的概率称作检验的 功效(power) ,根据不同的 对应的功效 ,我们可以绘制曲线称作为功效曲线。

总结计算第二类错误的概率流程:

发生第一类错误的概率为 ,发生第二类错误的概率为
这里 为满足 的 值
我们对上式进行转换可得 总体均值单侧假设检验中的样本容量

备注:双侧检验中使用 来代替
在决定样本容量之前,需要明确能接受两类错误的概率大小。再计算即可获得样本容量的大小。

对于 , , 之间的关系如下:

这里可以知道,我们不能同时减小第一类错误和第二类错误,不可兼得。

链接: https://pan.baidu.com/s/1fc0q-Q4kj3g-7Fr4MHZaqw 提取码: 333c 复制这段内容后打开百度网盘手机App,操作更方便哦

[学习笔记—Objective-C]《Objective-C-基础教程 第2版》第九章 内存管理

内存管理:

  • 确保在须要的时候分配内存,在程序运行结束时释放占用的内存
  • 假设仅仅分配内存而不释放内存,则会发生内存泄漏(leak memory),程序的内存占用量不断添加。终于会被耗尽并导致程序崩溃。
  • 不要使用不论什么刚释放的内存,否则可能误用陈旧的数据。假设内存已经载入了其它数据,将会破坏这些新数据。

9.1 对象生命周期

对象的生命周期:

  1. 诞生:通过alloc或new方法实现
  2. 生存:接受消息并运行操作
  3. 交友:通过复合以及向方法传递函数
  4. 死去:被释放掉

9.11 引用计数

关于引用计数的操作:

  • 添加对象的保留计数器的值:发送retain 。方法:-(id) retain //返回值为id类型
[[Car retain] setTire: tire atIndex:2];//car对象保留计数器的值+1并运行setTire的操作
  • 降低对象的保留计数器的值:发送release。方法:(oneway void)release;
  • 获得保留计数器当前的值:retainCount。方法:-(NSUInteger) retainCount;//格式化方法:%ld
  • 对象的保留计数器归0时,系统会自己主动向对象发送dealloc消息。
  • 能够在自己的对象中重写dealloc方法,这样能够释放掉已经分配的全部相关资源,不能直接调用dealloc方法。

9.12 对象全部权

  • 某个实体拥有一个对象时,该实体就要负责将其拥有的对象进行清理
    • 假设一个对象内有指向其它对象的实例变量,则称该对象拥有这些对象
    • 假设一个函数创建了一个对象。则称该函数拥有这个对象
main(){
Car *car = [Car new];
Engine *engine = [Engine new];//engine拥有engine对象

[car setEngine: engine];//car拥有engine对象
}

注意:main()和Car类都拥有engine对象,怎样释放?

  • 让Car类在setEngie方法中保留engine对象。main()负责释放engine对象,Car类完毕任务时再释放engine对象

9.13 訪问方法中的保留和释放

-(void)setEngine: (Engine *)newEngine
{
    [newEngine retain];    //先保留新的对象
    [engine release];      //释放旧的对象
    engine = newEngine;

9.14 自己主动释放

-(NSString *) description
{
    NSString *description = [[NSString alloc] initWithFormat:@"I am %d years old", 4];
    return (destription);
}

main{
    NSString *desc = [someObject description];
    NSLog(@"@",desc);
    [desc release];
}

注意:在description方法中创建的字符串对象怎样释放?

9.15 全部对象放入池中

-(id)autorelease;//返回接受这条消息的对象
  • 当给一个对象发送autorelease消息时,是将对象加入到了自己主动释放池中,当自己主动释放池被销毁时,会像该池中的全部对象发送release消息。
-(NSString *) description
{
    NSString *description = [[NSString alloc] initWithFormat:@"I am %d years old", 4];
    return ([destription autorelease]);//对象暂时放入池中,等调用NSLog代码结束后。自己主动释放池会被自己主动销毁
}

main(){
    NSLog(@"@",[someObject description]);
}

9.16 自己主动释放池销毁时间 略

9.17 自己主动释放池的工作流程


int main ()
{
    NSAutoreleasePool *pool;
    pool = [[NSAutoreleasePool alloc] init];

    RetainTracker *tracker;
    tracker = [RetainTracker new]; // count: 1

    [tracker retain]; // count: 2
    [tracker autorelease]; // count: still 2,自己主动释放池有一个引用指向了该对象,当自己主动释放池被销毁时。将给tracker对象发送一条release消息。保留计数器的值仍然大于0,仍处于活动状态。

[tracker release]; // count: 1 NSLog (@"releasing pool"); [pool release]; //dealloc方法调用 return (0); }

9.2 Cocoa的内存管理规则

  • 使用new。alloc,或copy方法创建对象时。该对象的保留计数器为1。

  • 假设通过其它对象获得一个对象时,假设该对象的保留计数器值为1,并且一景被设置为自己主动释放,那么不须要运行不论什么操作确保该对象得到清理。
  • 假设打算一段时间拥有对象,则须要保留它并确保在操作完毕时释放它。

  • 假设保留了某个对象,就须要终于释放或自己主动释放该对象。

    必须保持retain方法和release方法的使用次数相等。

注意:当拥有一个对象的时候。须要弄清楚:怎样获得对象的?打算拥有多长时间?

9.21 暂时对象

并未打算长期拥有对象的情况下:暂时对象

  • 假设是用new,alloc。copy方法获得的这个对象。就须要安排好该对象的内存释放
  • new。alloc,copy以外的方法获得对象。则能够假设该对象被返回时保留计数器的值是1并且被设置为自己主动释放。

9.22 拥有对象

在多段代码中一直拥有某个对象。将她们加入到诸如NSArray或NSDictionary集合中

  • 假设使用了new,alloc。copy方法获得了一个对象。仅仅须要在拥有该对象的dealloc方法中释放它就可以。

-(void)dostuff
{
    flonkArray = [NSMutableArray new]; //count:1
}
-(void) dealloc
{
    [flonkArray release]; //count:0
    [super dealloc];
}
  • 假设使用new。alloc。copy以外的方法获得了一个对象。须要保留该对象,由于在事件循环结束后或自己主动释放池被销毁时,该对象会收到一条release消息。

-(void)dostuff
{
    flonkArray = [NSMutableArray arrayWithCapacity:17]; //count:1,autoreleased

}
-(void) dealloc
{
    [flonkArray release]; //count:0 
    [super dealloc];
}

注意:自己主动释放池被清理的时间是全然确定的:在代码中你自己手动销毁;使用AppKit时在事件循环结束时结束。

9.23 垃圾回收:自己主动内存管理机制

垃圾回收器定期检查变量和对象并且跟踪它们的指针,发现没有不论什么变量指向某个对象时,就将该对象视为应该丢弃的垃圾。

假设实例变量指向某个对象,一定要将该实例赋值为nil。取消对该对象的引用并告知垃圾回收器该对象能够清理了。

注意:

  • 垃圾回收仅仅支持OSX开发,无法用在ios应用程序上。苹果公司不建议在自己的代码中使用autorelease方法,也不要使用会返回自己主动释放对象的一些便利的方法:stringWith:
  • 垃圾回收器在运行时工作。通过返回的代码定期检查对象

9.24 自己主动引用计数

  • 自己主动引用计数(automatic refrence counting。ARC):系统追踪对象并决定哪一个仍会使用,哪一个不会再用到。

  • ARC在编译时进行工作的,在代码中插入了retain和release语句。

  • 有效范围:可保留的对象指针

    • 代码块指针
    • Objective-C指针
    • 通过attribute((NSObject))类型定义的指针
  • 使用ARC满足的条件:

    • 能够确定哪些对象须要内存管理
    • 能够表面怎样管理对象
    • 有可行的办法传递对象的全部权
  • A引用了B。B的引用计数器+1,强指针。被引用的+1

  • A释放了B,B的引用计数器-1;被释放的-1

  • 归零弱引用:zeroing weak reference 若引用的对象被释放的情况下,若引用会被设置为0

声明归零弱引用:

  • _weak NSString *mystring
  • @property (weak) NSString *myString

注意:内存管理的关键字和特性是不能一起用的

垃圾回收机制禁用的前提下才干使用ARC
转换之前确保代码符合ARC的需求
一旦转换成ARC版本号,就不能够再恢复了

  • 拥有者权限:为了让ARC便于工作,须要告诉编译器哪个对象时指针的拥有者。

    • (_bridge)传递指针但不会传递它的全部权
    cfstring = (_bridge CFStringRef)theString;
    //指针的全部权仍然由theString保留
    
    • (_bridge_retain):全部权转移到non-ROP上

      cfstring = (_bridge_retain CFStringRef)theString; 
      //cfstring拥有指针并且保留计数器+1
    • (_bridge_transfer):全部权交给ROP

      ARC拥有对象并能确保它会像其它ARC对象一样得到释放

9.3 异常

NSException类来表示异常

  • 抛出异常(提出异常):处理异常的行为,通知异常的行为
  • 捕捉异常:处理被抛出的异常的行为

假设一个异常被抛出可是没有被捕捉到。程序会在异常断点处停止运动并通知有这个异常。

9.31 与异常有关的关键字

  • @try:定义用来測试的代码块决定是否抛出异常
  • @catch:定义用来处理已抛出异常的代码块
  • @finally:不管是否有抛出异常都会运行代码块
  • @throw:抛出异常

9.32 捕捉不同类型的异常

  • 多个@catch代码块。处理代码应该依照从详细到抽象的顺序排序

9.33 抛出异常

  • 当程序检測到了异常。就必须向处理它的代码块报告这个异常
    • 使用@“throw异常名”
    • 向某个NSException对象发送raise消息
NSException *theException = [NSException exceptionWithName: ];
@throw theException; //抛出异常,能够用在其它对象上
[theException rasie];//抛出异常,raise仅仅对NSException对象有效

以上是关于第九章 假设检验的主要内容,如果未能解决你的问题,请参考以下文章

统计学-假设检验

简述假设检验的步骤?

数理统计学习统计假设检验

假设性检验的作用都有哪些?

统计学基础之假设检验

R假设检验之莫德中位数检验(Mood‘s Median Test)