2017-08-18 48 views
0

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

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 
) 
+0

I * *觉得你可以用'varComb'结合'varIdent'和'varFixed',但我从来没有理由去尝试,你是不是提供数据进行测试。 – Roland

+0

谢谢@Roland。我正在制作一个定制的权向量,它是sum(w)= 1的向量w。我检查了varComb()的帮助页面,如果我理解它,我不清楚。请提供一个示例 – MyQ

+0

否,除非通过提供一个可重复使用的小例子使其变得容易。 – Roland

回答

0

我相信你想是这样的:

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 
+0

我检查你的代码的一些例子。为什么你使用平方重量?看来实际的重量必须被使用! – TPArrow