R中

2014-04-11 105 views
0

創建係數從COEF功能的矩陣從這個代碼:R中

treatment  <- factor(rep(c(1, 2), c(43, 41)), 
         levels = c(1, 2), 
         labels = c("placebo", "treated")) 
improved  <- factor(rep(c(1, 2, 3, 1, 2, 3), c(29, 7, 7, 13, 7, 21)), 
         levels = c(1, 2, 3), 
         labels = c("none", "some", "marked"))  
numberofdrugs <- rpois(84, 10) + 1  
healthvalue <- rpois(84, 5) 
y    <- data.frame(healthvalue, numberofdrugs, treatment, improved) 
test   <- glm(healthvalue~numberofdrugs+treatment+improved + treatment:improved, y, family=poisson) 
summary(test) 

我們得到了使用COEF下列()函數:

> coef(test) 
        (Intercept)     numberofdrugs    treatmenttreated 
        1.549172817      0.004261529      0.014634807 
        improvedsome     improvedmarked treatmenttreated:improvedsome 
        0.201150827     -0.129251907     -0.258841251 
treatmenttreated:improvedmarked 
        0.051326071 

我想安排的係數變量轉換成矢量,並將相互作用的係數轉換成矩陣,以便更容易地處理它們。

例如:

coef.intercept=(1.5491) 

coef.numberofdrugs=(0.00426) 

coef.treatment=(0, 0.01463) 

coef.improved=(0, 0.2011, -0.1292) 

,並用作爲治療的行的相關矩陣的和改進的爲列,例如:

coef.correlation =

(0  0  0 ) 

(0 -0.2588 -0.2588) 

是否有任何有效的方式去做這個?

請注意,coef()函數中未列出的任何係數都應設置爲零,並縮短了上面的一些數字。

+0

寫一個函數?這似乎不是一件常見的事情。比如,爲什麼使用四個對象而不是一個對象更容易?此外,那些互動條款不相關 – rawr

+0

對不起,互動條款。 – Erosennin

+0

我想這樣做是爲了在R中手動預測,而不是使用predict()函數。因此,我寧願創建一個相互作用係數的矩陣... – Erosennin

回答

1

我相信從effectsallEffects可能感興趣的:

library(effects) 
allEffects(test) 
model: healthvalue ~ numberofdrugs + treatment + improved + treatment:improved 

numberofdrugs effect 
numberofdrugs 
     6  8  10  12  14  16  18  20 
4.050962 4.322559 4.612365 4.921601 5.251570 5.603662 5.979360 6.380247 

treatment*improved effect 
     improved 
treatment  none  some marked 
    placebo 4.416773 3.713517 5.461153 
    treated 4.596433 4.902746 5.309627 
+0

看起來我只需要編寫一個函數 – Erosennin

+0

必須有一種方法來「調用」特定的交互係數......如何預測()函數如何執行此操作? – Erosennin

+0

我想通了:使用as.list(coef(test)),你可以調用所需的係數,因此創建一個矩陣。 – Erosennin