使用mshapiro.test时出错:“U []不是矩阵,列数(样本大小)在3到5000之间”

时间:2011-07-27 21:10:38

标签: r anova

我正在尝试使用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()执行Shapiro-Wilk测试,数据必须在数字矩阵中,列数在3到5000之间。但是,即使我制作了.csv只有数字的矩阵(即,当我省略站点名称时),我仍然得到错误。我需要以不同方式设置矩阵吗?有没有其他人有这个问题? 谢谢!

2 个答案:

答案 0 :(得分:4)

您需要将数据转置为矩阵,以便变量位于行中,观察值位于列中。该命令将是:

M <-t(data.nc5 [1:4,1:5])

mshapiro.test(M)

这种方式对我有用。导入期间应识别第一行中的标签,因此数据将从第1行开始。否则,将出现“缺少值”错误。

答案 1 :(得分:2)

如果您使用与您所显示的代码类似的代码通过read.csv()将数字矩阵读入R,则它将作为数据框读入,而不是矩阵。

尝试

mat <- data.matrix(data.nc5)
mshapiro.test(mat)

(未进行测试,因为您没有提供可重复的示例,现在我的时区已经晚了; - )