我使用的是一个在线练习教程中的数据集,代码可以在第7页的底部找到(https://tomhouslay.files.wordpress.com/2017/02/indivvar_mv_tutorial_asreml.pdf)
在教程中,他们表示他们正在引入";特征";作为表示多元模型的关键字,但当我运行完全相同的代码时,我会得到以下结果:
eval中出错(parse(text=x(,envir=data,enclos=asreml4Env(:找不到对象"trait"。
haggis实践csv文件可以从这里下载: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)
当您尝试在函数中使用scale
时,asreml
函数会变得混乱。首先进行缩放(还需要将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)