最近在忙GWAS里imputation的事情,更新一直拖到了现在。还是要说一句抱歉,不过可以分享的内容又变多了,先挖个坑,过几天填~
1. NHANES中描述分布及正态性
我们还是以官方教程提供的数据和代码为参考,同时加上简单随机抽样代码以及Nhanes中复杂多阶段概率抽样代码,便于大家比较
- dataset链接地址
https://wwwn.cdc.gov/nchs/data/tutorials/analysis_data.sas7bdat
- SAS代码
PROC UNIVARIATE normal data=ANALYSIS_DATA; /*常见简单随机抽样数据Univariate过程*/
where ridageyr >= 20;
VAR lbxtc;
title "Distribution of cholesterol: NHANES 1999-2002";
run;
PROC UNIVARIATE normal data=ANALYSIS_DATA; /*Nhanes中官方推荐的Univariate过程*/
where ridageyr >= 20;
VAR lbxtc;
freq wtmec4yr;
title "Distribution of cholesterol: NHANES 1999-2002";
run;
-
结果展示
一点总结
有朋友应该已经发现区别了,代码里面多了freq这一句,之后输出的结果均数、中位数略有差距,正态性检验的结果基本一致(非正态,不过正态性检验对于正态性要求比较高,稍微偏离正态P值就会<0.05)
2. NHANES中均数计算
- dataset和之前一样
- SAS代码
proc surveymeans data=ANALYSIS_DATA; missing min max median mean clm; /*clm表示输出mean的95%置信区间*/
stratum sdmvstra;
cluster sdmvpsu;
weight wtmec4yr;
var lbxtc;
run;
-
结果输出
- 一点总结
surveymeans输出是mean,standard error以及95% CI,并不是常见的mean,standard deviation。standard error与standard deviation是完全不同的概念,前者会小很多,不要误用
3. NHANES中频率计算
- dataset(进行变量赋值)
data ANALYSIS_DATA_1;
set ANALYSIS_DATA;
where ridageyr >= 20;
age = .;
if 20 LE ridageyr LE 39 then age=1;
if 40 LE ridageyr LE 59 then age=2;
if ridageyr GE 60 then age=3;
race=.;
if ridreth1=3 then race=1;
if ridreth1=4 then race=2;
if ridreth1=1 then race=3;
if ridreth1=2 or ridreth1=5 then race=4;
run;
- SAS代码
proc surveyfreq data=ANALYSIS_DATA_1;
stratum sdmvstra;
cluster sdmvpsu;
weight wtmec4yr;
tables age*race/nototal nowt nocellpercent col row ;
run;
-
结果输出
- 一点总结
因为用的survey过程,仍然会有standard error的结果输出
4. 参考内容
大家对于教程有什么建议或者意见可以写评论或者发私信,我看到后再调整更新内容。这期对内容做了一点调整,相对来说概念更少,更多的是可以实操的例子。
后期Nhanes更新的初步规划是t检验、方差分析及卡方→线性回归和logistic回归→cox回归→不同周期数据集合并及注意事项……
中间会穿插GWAS的内容,主要是数据前处理的部分,第一期是Windows电脑Linux系统及常见工具(plink, bcftools, vcftools, vcfcooker, eagle, minimac4)安装
不要忘了点赞哈~