我正在尝试使用mvnormtest
软件包中的mshapiro.test对来自五个站点的一些密度数据进行正态性的多变量测试。每个站点都是一列,密度在下面。它是5列5行,顶行作为标题(站点名称)。下面是我加载数据的方式:
datafilename="/Users/megsiesiple/Documents/Lisa/lisadensities.csv"
data.nc5=read.csv(datafilename,header=T)
attach(data.nc5)`
数据如下所示:
B07 B08 B09 B10 M
1 72571.43 17714.29 3142.86 22571.43 8000.00
2 44571.43 46857.14 49142.86 16857.14 7142.86
3 54571.43 44000.00 26571.43 6571.43 17714.29
4 57714.29 38857.14 32571.43 2000.00 5428.57
当我为data.nc5调用mshapiro.test()时,我得到这样的消息:Error in mshapiro.test(data.nc5) : U[] is not a matrix with number of columns (sample size) between 3 and 5000
我知道要使用mshapiro.test()
执行夏皮罗-威尔克测试,数据必须是一个数字矩阵,列数在3到5000之间。但是,即使我使.csv成为一个只包含数字的矩阵(即,当我省略站点名称时),我仍然会得到错误。我需要以不同的方式设置矩阵吗?其他人也有这个问题吗?谢谢!
发布于 2011-07-28 05:20:54
如果您通过read.csv()
将数字矩阵读入R,使用的代码与您所显示的代码类似,那么它将作为数据帧读入,而这不是矩阵。
试一试
mat <- data.matrix(data.nc5)
mshapiro.test(mat)
(没有测试,因为你没有给出一个可重复的例子,而且现在在我的时区已经晚了;-)
发布于 2018-12-06 18:48:15
您需要在矩阵中转置数据,以便您的变量在行中,观察值在列中。该命令将为:
M <- t(data.nc51:4,1:5)
mshapiro.test(M)
它对我来说是这样的。导入过程中需要识别第一行中的标签,因此数据将从第一行开始,否则会出现缺失值错误。
https://stackoverflow.com/questions/6851294
复制相似问题