用pwr包做功效分析

2023-11-10 07:59
文章标签 分析 包做 功效 pwr

本文主要是介绍用pwr包做功效分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载自:http://blog.csdn.net/lilanfeng1991/article/details/33728435

样本大小 :指实验设计中每种条件/组中观测的数目;

显著性水平(alpha):由I型错误的概率来定义,可看做是发现效应不发生的概率;

功效:通过1减去二型错误的概率来定义,即真实效应发生的概率;

效应值:指在重力备择或研究假设下效应的量。

1、用pwr包做功效分析

pwr包中的函数

函数功效计算的对象
pwr.2p.test()两比例(n相等)
pwr.2p2n.test()两比例(n不相等)
pwr.anova.test()平衡的单因素ANOVA
pwr.chisq.test()卡方检验
pwr.f2.test()广义线性模型
pwr.p.test()比例(单样本)
pwr.r.test()相关系数
pwr.t.test()t检验(单样本、两样本、配对)
pwr.t2n.test()t检验(n不相等的两样本)

(1)t检验问题一:

反应时间有1.25的偏差,反应时间1s的差值是巨大的差异,可设定要检测的效应值为d=1/1.25=0.8或更大。若差异存在,则希望有90%的把握检测到它,因随机变异性的存在,也希望有95%的把握不会误报差异显著,对于该研究坱要多少受试者呢?

[plain] view plaincopy在CODE上查看代码片派生到我的代码片




  1. library(pwr)  

  2. pwr.t.test(d=.8,sig.level=0.05,power=.9,type=”two.sample”,alternative=”two.sided”)  



每组中需要34个受试者(总共68人),这样才能保证有90%的把握检测到0.8的效应值,并且最多 5%的可能性会误报差异存在。

(2)t检验问题二:

若检测到总体均值0.5个标准差的差异,且将误报差异的几率限制在1%内,另,获得的受试者只有40个,则该研究中,能检测到这么大总体均值差异的概率是多少?

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. pwr.t.test(n=20,d=.5,sig.level=.01,type=”two.sample”,alternative=”two.sided”)  

结果表明,在0.01的先验显著性水平下,每组20个受试者,因变量的标准差为1.25s,有低于14%的可能性断言差值为0.625s或者不显著(d=0.5=0.625/1.25)。换句话说,将有86%的可能性错过要寻找的疚值。即需要慎重考虑要投入到该研究中的时间和精力。

(3)方差分析

eg:

问题:现对五个组做单因素方差分析,要达到0.8的功效,效应值为0.25,并选择0.05的显著性水平,计算各组需要的样本大小 

[plain] view plaincopy在CODE上查看代码片派生到我的代码片




  1. pwr.anova.test(k=5,f=.25,sig.level=.05,power=.8)  

结果表明,总体样本大小为5*39,即195。

(4)相关性

问题:

研究抑郁与孤独的关系

H0:r<=0.25;H1:r>0.25;

[plain] view plaincopy在CODE上查看代码片派生到我的代码片




  1. pwr.r.test(r=.25,sig.level=.05,power=.90,alternative=”greater”)  

要满足以上要求,需要134个受试者来评价抑郁与孤独的关系,以便在零假设为候的情况下有90%的信心拒绝它。

(5)线性模型

f^2=R^2/(1-R^2)(1)

f^2=(Rab^2-Ra^2)/(1-Rab^2)(2)    (Ra^2表示集合A中变量对总体方差的解释率,Rab^2集合A和B中变量对总体方差的解释率)

当评价一组预测变量对结果的影响程度时,适宜第一个公式来计算f2;

当要评价一组预测变量对结果的影响超过第二组变量时(协变量)多少时,适宜用第二个公式。


问题:

假设想研究老板的领导风格对员工满意度的影响,是否超过薪水和工作小费对员工满意度的影响。领导风格可有讨论会个变量来评估,薪水和小费与三个变量有关。过去的经验表明,薪水和小费能够解释约30%的员工满意度和方差。而从现实出发,领导风格至少能解释35%的方差。假定显著性水平为0.05,则在90%的置信度情况下,坱要多少受试者能够得到这样的方差贡献率?

sig.level=0.05, power=0.90,u=3(总预测变量数送去集合B中的预测变量数),效应值为f2=(0.35-0.30)/(1-0.35)=0.0769

[plain] view plaincopy在CODE上查看代码片派生到我的代码片




  1. pwr.f2.test(u=3,f2=0.0769,sig.level=0.05,power=0.90)  

多元回归中,分母的自由度等于N-k-1,N是总观测数,k是预测变量数;本例中,N-7-1=185,即需要样本大小N=185+7+1=193


(6)比例检验

当两样本组中n相同时,pwr.2p.test(h=,n=,sig.level=,power) h是效应值,n是各组相同的样本量,h=2*arcsin(p1^1/2)-s*arcsin(p2^1/2),可用ES.h(p1,p2)函数进行计算;

当两样本组中n不同时,使用函数:pwr.2p2n.test(h,n1=,n2=,sig.level=,power=)

问题:

若对某流行药物能缓解60%使用者的症状感到怀疑,而一种更贵的新药叵能缓解65%使用者的症状,就会被投放到市场中,在研究中需要多少受试者才能够检测到两种药物存在这一特定的差异?假设要90%的把握得出新药更有效的结论,并且希望95%的把握不会误得结论。另只对评价新药是否比标准药物更好感兴趣,因此只需单边检验

[plain] view plaincopy在CODE上查看代码片派生到我的代码片




  1. pwr.2p.test(h=ES.h(.65,.6),sig.level=.05,power=.9,alternative=”greater”)  

根据结果可知,为满足以上要求,在本研究中需要1605个试用新药,1605个试用已有药物。

(7)卡方检验

卡方检验常用来评价两个类别变量的关系。

问题:

假设想研究人种与工作晋升的关系,预期样本中70%是白种人,10%是美国黑人,20%西班牙裔人。

且认为相比30%的美国黑人和50%的西班牙裔人,60%的白种人更容易晋升,研究假设的晋升概率如下表所示:













人种晋升比例未晋升者比例
白种人0.420.28
美国黑人0.030.07
西班牙裔0.100.10
取0.05的显著水平和0.90的预期功效水平,双因素列联表的自由度为(r-1)*(c-1),r是行数,c是列数

计算假设的效应值

[plain] view plaincopy在CODE上查看代码片派生到我的代码片




  1. prob<-matrix(c(.42,.28,.03,.07,.10,.10),byrow=TRUE,nrow=3)  

  2. ES.w2(prob)  

计算所需样本大小

[plain] view plaincopy在CODE上查看代码片派生到我的代码片




  1. pwr.chisq.test(w=.1853,df=2,sig.level=.05,power=.9)  

结果表明,在既定的效应值、功效水平和显著性水平下,该研究需要369个受试者才能检验人种与工作晋升的关系。

(8)在新情况下中选择合适的效应值

功效分析中,若对主题有一定的了解,可根据相应的测量经验,来计算效应值。但若是当面对全新的研究情况,没有任何过去的经验可借鉴时,可根据Cohen提出的一个基准。

Cohen效应值基准




































统计方法效应值测量建议的效应值基准



t检验d0.200.500.80
方差分析f0.100.250.40
线性模型f20.020.150.35
比例检验h0.200.500.80
卡方检验w0.100.300.50
注意:Cohen基准值仅是根据许多社科类研究得出的一般性建议,对于特殊领域可能并不适用。

[plain] view plaincopy在CODE上查看代码片派生到我的代码片




  1. library(pwr)  

  2. es<-seq(.1,.5,.01)  

  3. nes<-length(es)  

  4. samsize<-NULL  

  5. for(i in 1:nes){  

  6.   result<-pwr.anova.test(k=5,f=es[i],sig.level=.05,power=.9)  

  7.   samsize[i]<-ceiling(result$n)  

  8. }  

  9. plot(samsize,es,type=”l”,lwd=2,col=”red”,  

  10.      ylab=”Effect Size”,  

  11.      xlab=”Sample Size(per cell)”,  

  12.      main=”One Way ANOVA with Power=.90 and Alpha=.05”)  



2.绘制功效分析图形

[plain] view plaincopy在CODE上查看代码片派生到我的代码片




  1. library(pwr)  

  2. r<-seq(.1,.5,.01)  

  3. nr<-length(r)  

  4. p<-seq(.4,.9,.1)  

  5. np<-length(p)  

  6. samsize<-array(numeric(nr*np),dim=c(nr,np))  

  7. for(i in 1:np){  

  8.   for(j in 1:nr){  

  9.     result<-pwr.r.test(n=NULL,r=r[j],sig.level=.05,power=p[i],alternative=”two.sided”)  

  10.     samsize[j,i]<-ceiling(result$n)  

  11.   }  

  12. }  

  13. xrange<-range(r)  

  14. yrange<-round(range(samsize))  

  15. colors<-rainbow(length(p))  

  16. plot(xrange,yrange,type=”n”,  

  17.      xlab=”Correlation Coefficient(r)”,  

  18.      ylab=”Sample Size(n)”)  

  19. for(i in 1:np){  

  20.   lines(r,samsize[,i],type=”l”,lwd=2,col=colors[i])  

  21. }  

  22. abline(v=0,h=seq(0,yrange[2],50),lty=2,col=colors[i])  

  23. abline(h=0,v=seq(xrange[1],xrange[2],.02),lty=2,col=”gray89”)  

  24. title(“Sample Size Estimation for Correlation Studies\n Sig=0.05(Two-tailed)”)  

  25. legend(“topright”,title=”Power”,as.character(p),fill=colors)  



3.其他软件包

piface包
[plain] view plaincopy在CODE上查看代码片派生到我的代码片




  1. install.packages(“piface”,repos=”http://R-Forge.R-project.org”)  

  2. library(piface)  

  3. piface()  

该包提供了一个R交互的Java图形用户界面(GUI),包含各种计算样本量的方法。
专业化的功效分析软件包
软件包目的
asypow通过渐近似然比方法计算功效
PwrGSD组序列设计的功效分析
pamm混合模型中随机效应的功效分析
powerSurvEpi流行病研究的生存分析中功效和样本量的计算
powerpkg患病同胞配对法和TDT(Transmission Disequilibrium Test,传送不均衡检验)设计的功效分析
powerGWASinteractionGWAS交互作用的功效计算
pedantics一些有助于种群基因研究功效分析的函数
gap一些病例队列研究设计中计算功效和样本量的函数
ssize.fdr微阵列实验中样本量的计算

MBESS包中也包含了可供各种形式功效分析所用的函数,主要供行为学、教育学和社会学的研究使用。



这篇关于用pwr包做功效分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/381377

相关文章

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑

Spring、Spring Boot、Spring Cloud 的区别与联系分析

《Spring、SpringBoot、SpringCloud的区别与联系分析》Spring、SpringBoot和SpringCloud是Java开发中常用的框架,分别针对企业级应用开发、快速开... 目录1. Spring 框架2. Spring Boot3. Spring Cloud总结1. Sprin