首页 > 其他 > 详细

[PROC FREQ] Monte Carlo 模拟

时间:2021-08-24 22:58:32      阅读:25      评论:0      收藏:0      [点我收藏+]

本文链接:https://www.cnblogs.com/snoopy1866/p/15182533.html
??\(2\times C\)表各水平率或构成比的比较,常用卡方检验,当样本量<40或存在理论频数>5的情况时,使用Fisher精确概率法计算P值。Fisher精确概率法基于超几何分布,通常需要计算各水平频数的阶乘,在小样本的情况下表现良好。但当样本量过大,而又存在某几个水平的频数<5时,使用Fisher精确概率法将消耗大量运算时间,此时可改用蒙特卡洛模拟估计精确概率。
??例如:6种药物对高血压的治疗效果差异比较,数据如下。

data analysis;
    input drug $ effect $ weight @@;
cards;
A 有效 421 A 无效 125
B 有效 435 B 无效 137
C 有效 10  C 无效 2
D 有效 3   D 无效 0
E 有效 255 E 无效 68
F 有效 672 F 无效 236
;
run; 

??使用常规卡方检验,SAS提示:25%的单元格的期望频数小于5,卡方可能不是有效的检验。这是由药物C水平的期望频数<5导致的结果。

proc freq data = analysis;
    tables drug*effect /nopercent nocol chisq;
    weight weight;
run;

技术分享图片
??改用Fisher精确概率法,SAS提示 WARNING: Computing exact p-values for this problem may require much time and memory。这是因为样本量太大导致Fisher精确概率法难以实现。

proc freq data = analysis;
    tables drug*effect /nopercent nocol;
    weight weight;
    exact fisher;
run;

技术分享图片
??在 PROC FREQ过程的exact语句中,可以使用mc选项进行模拟计算精确P值,代码如下:

proc freq data = analysis;
    tables drug*effect /nopercent nocol;
    weight weight;
    exact fisher /mc n = 50000 seed = 20210817;
run;

选项含义:
mc:要求通过Monte Carlo模拟计算fisher精确P值
n:Monte Carlo模拟的次数
seed:模拟的初始种子数
SAS输出结果:
技术分享图片

[PROC FREQ] Monte Carlo 模拟

原文:https://www.cnblogs.com/snoopy1866/p/15182533.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!