R语言执行Shapiro-Wilk检验未指定列时操作是否正确?
问题判定
你直接传入整个数据集调用shapiro.test()的操作是错误的,得到的检验结果无效。shapiro.test()的入参要求是一维数值向量,你传入的是包含日期列、收益率列的二维数据框,R会自动对输入对象做隐式类型强转,把日期列也纳入计算流程,最终输出的W统计量和p值根本不是针对日收盘收益率序列的检验结果。
正确操作方法
- 先运行以下命令查看数据集的列名和各列数据类型,确认日收盘收益率列的准确列名:
str(rdailypriceUSA500) - 用
$运算符单独提取收益率列传入检验函数,示例代码如下(把代码里的return_col替换成你自己数据集里实际的收益率列名即可):shapiro.test(rdailypriceUSA500$return_col)
注意事项
- Shapiro-Wilk正态检验仅适用于数值型变量,日期属于时间类数据,传入检验没有实际统计意义
- 不要直接对多列数据框调用该函数,否则会触发隐式类型转换,输出无意义的计算结果
- 你之前得到的
W = 0.85676, p-value < 2.2e-16结果不具备参考价值,传入正确列后重新计算的结果才可信。
内容的提问来源于stack exchange,提问作者dion
相关产品推荐
相关产品推荐

