Почему я получаю сообщение об ошибке, когда пытаюсь смоделировать автокорреляцию, даже если точно следую этому примеру в Pinheiro and Bates (2009)? - PullRequest
5 голосов
/ 17 мая 2011

Вот выдержка из Модели со смешанными эффектами в S и S-Plus страница 238 :


enter image description here enter image description here


это код, который я использовал для воссоздания этого примера:

library(nlme)
spatDat <- data.frame(x = c(0,0.25,0.5,0.75,1), y = c(0,0.25,0.5,0.50,0.75))
cs1Exp <- corExp(1, form = ~x+y)
cs1Exp <- initialize(cs1Exp, spatDat)

но когда я это делаю, я получаю эту ошибку:

Error in getClass(Class) : 
  c("\"corExp\" is not a defined class", "\"corSpatial\" is not a defined class", "\"corStruct\" is not a defined class")
In addition: Warning message:
In if (!is.na(match(Class, .BasicClasses))) return(newBasic(Class,  :
  the condition has length > 1 and only the first element will be used

Почему я получаю эту ошибку?


Приложение

R version 2.13.0 (2011-04-13)
Platform: x86_64-pc-linux-gnu (64-bit)
attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] nlme_3.1-101

loaded via a namespace (and not attached):
[1] grid_2.13.0     lattice_0.19-26

Ответы [ 3 ]

10 голосов
/ 17 мая 2011

Причина в том, что Initialize берет капитал I в nlme, поэтому его не следует путать с initialize в base. И затем есть комментарий Виви на spatdat$y

Это работает:

> library(nlme)
> spatDat <- data.frame(x = c(0,0.25,0.5,0.75,1), y = c(0,0.25,0.50,0.75,1.0))
> cs1Exp <- corExp( 1, form = ~x+y )
> cs1Exp <- Initialize( cs1Exp, spatDat )
> corMatrix( cs1Exp )
          [,1]      [,2]      [,3]      [,4]      [,5]
[1,] 1.0000000 0.7021885 0.4930687 0.3462272 0.2431167
[2,] 0.7021885 1.0000000 0.7021885 0.4930687 0.3462272
[3,] 0.4930687 0.7021885 1.0000000 0.7021885 0.4930687
[4,] 0.3462272 0.4930687 0.7021885 1.0000000 0.7021885
[5,] 0.2431167 0.3462272 0.4930687 0.7021885 1.0000000
5 голосов
/ 17 мая 2011

Есть пара проблем с вашим кодом. Вот исправленная версия:

library(nlme)    
spatDat <- data.frame(x = c(0, 0.25, 0.5, 0.75, 1), y = c(0, 0.25, 0.5, 0.75, 1.0))    
cs1Exp <- corExp(1, form = ~x+y)    
cs1Exp <- Initialize(cs1Exp, spatDat)  
corMatrix(cs1Exp)  

          [,1]      [,2]      [,3]      [,4]      [,5]
[1,] 1.0000000 0.7021885 0.4930687 0.3462272 0.2431167
[2,] 0.7021885 1.0000000 0.7021885 0.4930687 0.3462272
[3,] 0.4930687 0.7021885 1.0000000 0.7021885 0.4930687
[4,] 0.3462272 0.4930687 0.7021885 1.0000000 0.7021885
[5,] 0.2431167 0.3462272 0.4930687 0.7021885 1.0000000
3 голосов
/ 17 мая 2011

Чтобы подчеркнуть качество документации (и, надеюсь, сэкономить чужое время при работе с таким хорошо документированным пакетом учебника), я укажу, что соответствующий код приведен в файле справки под ?corExp* 1002. *

Examples:

     # Pinheiro and Bates, p. 238
     spatDat <- data.frame(x = (0:4)/4, y = (0:4)/4)

     cs1Exp <- corExp(1, form = ~ x + y)
     cs1Exp <- Initialize(cs1Exp, spatDat)
     corMatrix(cs1Exp)
     ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...