2012-08-25 64 views
2

對於具有固定效果和混合效果的高斯模型,我試圖對MASS:stepAIC函數做類似的操作。這個想法是將它完全推廣到許多固定和混合的效果,因爲這些任務可以輕鬆地用手執行一些。R中的公式操作

我希望能夠寫公式輸入,你會爲11聚物:

`Y〜X1 + X2 +(A | B)+(1 | C)

我無法從公式類中提取我需要的信息。此外,我需要能夠將選擇的變量數量放回到lm和lmer函數中。所以我想能公式的部分提取到:

data  fixed effects  mixed effects 
Y    x1     a|b 
       x2     1|c 

然後我需要能夠自動發送的固定和混合效果的任意一組,以流明:

lm(y ~ x1)

+2

每個固定和混合效果總是有兩個嗎?你想要它有多靈活?混合效應總是形式(a | b)? – Spacedman

+1

你可能想先看看lme4軟件包中(私有)'lme4 ::: drop1.mer'函數的內部結構...... –

+0

@Spacedman,我希望它儘可能通用化。目前我沒有任何複雜的效果比| b更復雜,所以這將是實現期望的初始級別。謝謝。 –

回答

1

如果我們可以假設正是因爲混合效果方面形式(variable|variable)則:

library(gsubfn) 
fo <- Y ~ x1 + x2 + (a|b) + (1|c) 

mixed.vec <- strapplyc(format(fo), "[(] *(\\w+) *[|] *(\\w+) *[)]")[[1]] 
mixed <- matrix(mixed.vec, byrow = TRUE, nc = 2) 
fixed <- setdiff(all.vars(fo)[-1], mixed) 

其給出以下:

> mixed 
    [,1] [,2] 
[1,] "a" "b" 
[2,] "1" "c" 
> fixed 
[1] "x1" "x2" 

這裏mixed是一個矩陣,其第一列包含|第二列保存|之後的相應變量。

+0

這太好了。只有一點我發現,如果公式太長格式將其分成多行,因此可以打破混合效應。這可以繞過使用as.character(fo)[3]來代替。 –

+0

它的完整性,非常感謝,現在可以採取任何glm和lme4 glmer可以解決和執行前向擬合程序,打印所有步驟的透明度,並節省大量的工作辛苦工作.. 。 –