0

我正在尝试使用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

我知道要使用 执行 Shapiro-Wilk 测试mshapiro.test(),数据必须在数字矩阵中,列数在 3 到 5000 之间。但是,即使我将 .csv 设为只有数字的矩阵(即,当我省略了站点名称),我仍然得到错误。我需要以不同的方式设置矩阵吗?有没有其他人有这个问题?谢谢!

4

2 回答 2

4

您需要在矩阵中转置数据,以便您的变量在行中,而观察值在列中。命令将是:

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

mshapiro.test(M)

它以这种方式对我有用。导入时要识别第一行的标签,所以数据会从第一行开始,否则会出现“缺失值”的错误。

于 2018-12-06T10:48:15.223 回答
2

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

尝试

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

(未经测试,因为您没有给出可重复的示例,而且现在在我的时区已经晚了 ;-)

于 2011-07-27T21:20:53.550 回答