我正在尝试使用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只有数字的矩阵(即,当我省略站点名称时),我仍然得到错误。我需要以不同方式设置矩阵吗?有没有其他人有这个问题?
谢谢!
答案 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)
(未进行测试,因为您没有提供可重复的示例,现在我的时区已经晚了; - )