這是我第一次問一個關於R的問題,所以如果我遺漏了必要的細節,請原諒我。我會盡量做到儘可能徹底而簡潔。我的數據有4列:分數(值-1,0或1);物種(至少10種);棲息地(三個不同的);和網站(至少8個不同的網站)。所以每一行都是得分,物種,棲息地和場地的獨特組合。請參閱下面的頂行:錯誤,當試圖進行兩兩比較lme
score species habitat site
0 NOCA NAG NAG1
0 BRTH NAG NAG1
0 BARS NAG NAG1
1 COYE NAG NAG1
0 HOWR NAG NAG1
0 SAVS NAG NAG1
0 CEDW NAG NAG1
1 CHSP NAG NAG1
0 EAKI NAG NAG1
1 MODO NAG NAG1
0 NOCA NAG NAG16
0 BRTH NAG NAG16
我跑了LME評估的物種和棲息地得分的影響,與網站是一個隨機效應。代碼如下:
anova(model<-lme(score~species*habitat, random=~1|site))
然後,我想做兩兩比較來找出重大差異在哪裏。 TukeyHSD不與LME的工作,所以我用了multcomp包如下:
summary(glht(model, linfct=mcp(habitat="Tukey")))
其中,據我可以告訴會做基於棲息地類型分數的成對比較。我也嘗試用物種替代棲息地來進行基於物種的比較。在這兩種情況下,我得到了以下錯誤:
Error in contrMat(table(mf[[nm]]), type = types[pm]) : less than two groups
我不知道怎樣纔能有不到兩個組的任何地方,因爲羣體的最小數目我有任何列是三。也許我誤解了R所指的是什麼「組」?有什麼可能出錯的建議以及如何解決它?
編輯根據建議(謝謝),這裏是一些關於我的數據的更多信息,可能會使它具有可重現性。首先,我整個使用的代碼。
library(nlme)
library(multcomp)
null<-read.csv("baci_null_red.csv", head=TRUE)
attach(null)
anova(model<-lme(score~species*habitat, random=~1|site))
numDF denDF F-value p-value
(Intercept) 1 1392 1.929021 0.1651
species 29 1392 2.691207 <.0001
habitat 2 48 3.412485 0.0411
species:habitat 58 1392 1.239267 0.1099
摘要(glht(模型,linfct = MCP(境= 「杜克」)))
Error in contrMat(table(mf[[nm]]), type = types[pm]) :
less than two groups
以下是有關可能再現它有助於數據的一些彙總......它只是有點大,我不知道如何使它最小化,但仍然得到錯誤。
str(null)
'data.frame': 1530 obs. of 4 variables:
$ score : int 0 0 -1 0 0 0 0 0 0 0 ...
$ species: Factor w/ 30 levels "AMGO","AMRO",..: 27 5 7 2 18 12 22 28 6 13 ...
$ habitat: Factor w/ 3 levels "CUM","IAG","NAG": 3 3 3 3 3 3 3 3 3 3 ...
$ site : Factor w/ 51 levels " CUM6","CUM1",..: 37 37 37 37 37 37 37 37 37 37 ..
summary(null)
score species habitat site
Min. :-1.00000 AMGO : 51 CUM:210 CUM6 : 30
1st Qu.: 0.00000 AMRO : 51 IAG:660 CUM1 : 30
Median : 0.00000 BARS : 51 NAG:660 CUM10 : 30
Mean :-0.01569 BCCH : 51 CUM12 : 30
3rd Qu.: 0.00000 BHCO : 51 CUM2 : 30
Max. : 1.00000 BLJA : 51 CUM3 : 30
(Other):1224 (Other):1350
dput(null[somerows,c("species","habitat","site")])
structure(list(species = structure(c(27L, 5L, 7L, 2L, 18L, 12L,
22L, 28L, 6L, 13L, 15L, 23L, 4L, 10L, 14L, 11L, 20L, 30L, 9L,
19L, 26L, 8L, 16L, 25L, 3L, 17L, 21L, 29L, 24L, 1L, 27L, 5L,
7L, 2L, 18L, 12L, 22L, 28L, 6L, 13L, 15L, 23L, 4L, 10L, 14L,
11L, 20L, 30L, 9L, 19L, 26L, 8L, 16L, 25L, 3L, 17L, 21L, 29L,
24L, 1L, 27L, 5L, 7L, 2L, 18L, 12L, 22L, 28L, 6L, 13L, 15L, 23L,
4L, 10L, 14L, 11L, 20L, 30L, 9L, 19L, 26L, 8L, 16L, 25L, 3L,
17L, 21L, 29L, 24L, 1L, 27L, 5L, 7L, 2L, 18L, 12L, 22L, 28L,
6L, 13L), .Label = c("AMGO", "AMRO", "BARS", "BCCH", "BHCO",
"BLJA", "BOBO", "BRTH", "CEDW", "CSWA", "EABL", "EAKI", "EAWP",
"FISP", "GCFL", "HOLA", "HOWR", "INBU", "KILL", "LEFL", "MODO",
"NOCA", "RBGR", "RWBL", "SAVS", "SOSP", "VESP", "WIFL", "YSFL",
"YWAR"), class = "factor"), habitat = structure(c(3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L), .Label = c("CUM", "IAG", "NAG"), class = "factor"), site = structure(c(37L,
37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L,
37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L,
37L, 37L, 37L, 46L, 46L, 46L, 46L, 46L, 46L, 46L, 46L, 46L, 46L,
46L, 46L, 46L, 46L, 46L, 46L, 46L, 46L, 46L, 46L, 46L, 46L, 46L,
46L, 46L, 46L, 46L, 46L, 46L, 46L, 47L, 47L, 47L, 47L, 47L, 47L,
47L, 47L, 47L, 47L, 47L, 47L, 47L, 47L, 47L, 47L, 47L, 47L, 47L,
47L, 47L, 47L, 47L, 47L, 47L, 47L, 47L, 47L, 47L, 47L, 48L, 48L,
48L, 48L, 48L, 48L, 48L, 48L, 48L, 48L), .Label = c(" CUM6",
"CUM1", "CUM10", "CUM12", "CUM2", "CUM3", "CUM8", "IAG1", "IAG10",
"IAG13", "IAG14", "IAG15", "IAG16", "IAG18", "IAG19", "IAG21",
"IAG22", "IAG23", "IAG24", "IAG25", "IAG26", "IAG27", "IAG28",
"IAG3", "IAG4", "IAG5", "IAG6", "IAG8", "IAG9", "NAG10", "NAG11",
"NAG13", "NAG14", "NAG15", "NAG18", "NAG19", "NAG2", "NAG21",
"NAG22", "NAG23", "NAG24", "NAG25", "NAG26", "NAG27", "NAG28",
"NAG3", "NAG4", "NAG5", "NAG6", "NAG7", "NAG8"), class = "factor")), .Names =
c("species", "habitat", "site"), row.names = c(NA, 100L), class = "data.frame")
你有它:感謝任何指導。
這不是[再現的](http://stackoverflow.com/questions/5963269/how-to-make-a-great- r-reproducible-example),因爲在你的例子中'habitat'或'site'沒有變化。 – 2013-02-12 21:10:42
您確實需要提供有關您的數據的更多信息。看看這裏的其他問題,瞭解如何使您的產品具有可重複性。至少要給你的數據str()和summary()。我製作了一套與您的描述相匹配的虛擬集合,並且運行良好,所以我期望有關於您的數據的信息會導致此問題。 – alexwhan 2013-02-13 01:47:58
這不是我。這就是說:我也無法重現它('score'不包含在你的'dput()'中)。製作一個可重複使用的例子通常非常困難,但這是唯一的出路(您是否閱讀了@ user1317221_G的評論中的鏈接?)您可以在某處發佈'baci_null_red.csv'數據集或其匿名/隨機版本的數據集可公開訪問?你可以檢查'桌子(物種,棲息地)',並確保你有每個棲息地的物種? – 2013-03-11 04:04:45