如何对dataframe内全部数据整体进行正态分布检验?
R语言全dataframe数据合并执行shapiro正态性检验方案
你可以将整个dataframe的所有数值拉平为一维向量后传入检验函数,以下是可直接运行的实现:
- 基础实现(无缺失值场景)
使用unlist()函数直接将dataframe转换为单向量,自动合并所有列的所有行数据:
# 拉平数据框为一维向量,use.names参数设为FALSE可去掉默认生成的元素列名标识 all_sample <- unlist(data1, use.names = FALSE) # 执行正态性检验 result <- shapiro.test(all_sample) # 输出检验结果 print(result)
- 含缺失值场景实现
如果数据中存在NA值,可先做缺失值剔除再检验:
all_sample_clean <- na.omit(unlist(data1, use.names = FALSE)) result <- shapiro.test(all_sample_clean)
注意:R原生shapiro.test仅支持样本量在3~5000区间的检验,如果合并后的总数据量超过5000会触发报错,该场景下建议改用适配大样本的正态性检验方法,比如Kolmogorov-Smirnov检验。
内容的提问来源于stack exchange,提问作者upflow
相关产品推荐
相关产品推荐

