在 R 中的 lme 函数中使用自定义权重和结构权重

Using custom made weights and structural weight in lme function in R

我将在 R 的 lme 函数中使用像 varIndent(from = ~1 |Sex) 这样的结构权重和一个自定义的权重向量 w 。所以我想知道是否有人知道如何组合权重在函数中。这是一个例子(只是为这个问题做的)

n=25
data=data.frame(
  y   = rnorm(n),
  Sex = as.factor(sample(c('Male','Female','Female'),size = n,replace = TRUE)),
  Age = as.factor(sample(c('1-1-2013','10-3-2013','1-5-2013'),size = n,replace = TRUE)),
  Area= as.factor(sample(c('a','b','a'),size = n,replace = TRUE))
)
w = runif(n)
MY_WEIGHT_VECTOR = w/sum(w)



l = lme(
  fixed = y ~ Sex + Age,
  data = data,
  random = ~ 1 |    Area,
  weights = varIdent(form =  ~1 | Sex)+???MY_WEIGHT_VECTOR
)

我相信你想要这样的东西:

data$v <- 1/MY_WEIGHT_VECTOR^2

l = lme(
  fixed = y ~ Sex + Age,
  data = data,
  random = ~ 1 |    Area,
  weights = varComb(varIdent(form =  ~1 | Sex), varFixed(~ v))
)

varFixed 采用 v 向量并将其用作固定残差方差。证明这确实会产生所需的权重:

varfun <- varFixed(~ v)
varfun <- Initialize(varfun, data)
all.equal(varWeights(varfun), MY_WEIGHT_VECTOR)
#[1] TRUE