R с пакетом asreml: установка ключевого слова для многомерной модели, однако оно просто остается ключевым словом «объект не найден»

#r #asreml

#r #asreml

Вопрос:

Я использую набор данных из онлайн-руководства по практике, и код можно найти внизу страницы 7 (https://tomhouslay .files.wordpress.com/2017/02/indivvar_mv_tutorial_asreml.pdf )

В руководстве они заявляют, что вводят «признак» в качестве ключевого слова для обозначения многомерной модели, но когда я запускаю точно такой же код, я получаю следующее:

Ошибка при оценке (parse(text = x), envir = data, enclos = asreml4Env): объект «признак» не найден.

CSV-файл haggis practice можно загрузить отсюда: https://figshare.com/articles/Haggis_data_behavioural_syndromes/4702540

Вот код, предоставленный в руководстве, что-то изменилось с функцией asreml?

 asr_E_B_us <- asreml(cbind(scale(exploration),
                           scale(boldness)) ~ trait   
                       trait:scale(assay_rep, scale = FALSE)   
                       trait:scale(body_size), 
                     random =~ ID:us(trait, init = c(1, 
                                                     0.1,1)), 
                     residual =~ units:us(trait, init = c(0.1, 
                                                      0.1,0.1)), 
                     data = HData, 
                     maxiter = 100)
  

Ответ №1:

asreml Функция запутывается, когда вы пытаетесь использовать scale внутри функции. Сначала выполните масштабирование (а также вы должны превратить ID в фактор). Затем вызовите asreml .

 HData <- read.csv("syndrome.csv")
head(HData)
   ID assay_rep boldness exploration fitness body_size
1 S_1         1    18.57       39.74      39     21.72
2 S_1         2    18.32       39.41      NA     21.55
3 S_1         3    20.33       40.16      NA     21.34
4 S_1         4    19.40       40.29      NA     20.78
5 S_2         1    20.70       39.47      56     25.71
6 S_2         2    18.60       40.12      NA     26.43

HData <- transform(HData, exploration=scale(exploration), boldness=scale(boldness),
                   ID = factor(ID))
asr_E_B_us <- asreml(cbind(exploration, boldness) ~ trait   
                       trait:scale(assay_rep, scale = FALSE)   
                       trait:scale(body_size), 
                     random =~ ID:us(trait, init = c(1, 0.1,1)), 
                     residual =~ units:us(trait, init = c(0.1, 0.1,0.1)), 
                     data = HData, 
                     maxiter = 100)