【问题标题】:Using custom made weights and structural weight in lme function in R在 R 的 lme 函数中使用定制的权重和结构权重
【发布时间】:2017-08-18 10:26:26
【问题描述】:

我将在 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
)

【问题讨论】:

  • 认为您可以使用varComb 来组合varIdentvarFixed,但我从来没有理由尝试,而且您没有提供测试数据.
  • 谢谢@Roland。我正在制作一个定制的权重向量,它是一个 sum(w)=1 的向量 w。我检查了 varComb() 的帮助页面,我不清楚我是否理解它。请你提供一个例子
  • 不,除非您通过提供一个可重复的小示例来简化操作。
  • @Roland 请查看更新。实际上,我正在寻找将权重输入函数的权重参数的方法。

标签: r mixed-models nlme


【解决方案1】:

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

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

【讨论】:

  • 我检查了您的代码以获取一些示例。为什么要使用方形砝码?看来必须使用实际重量!
猜你喜欢
  • 2015-06-22
  • 2021-12-21
  • 2017-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多