簡體   English   中英

R:如何從摘要模型擬合中提取信息

[英]R: how to extract information from summary model fit

library(nlme)
fm1 <- nlme(height ~ SSasymp(age, Asym, R0, lrc),
            data = Loblolly,
            fixed = Asym + R0 + lrc ~ 1,
            random = Asym ~ 1,
            start = c(Asym = 103, R0 = -8.5, lrc = -3.3))
> summary(fm1)
Nonlinear mixed-effects model fit by maximum likelihood
  Model: height ~ SSasymp(age, Asym, R0, lrc) 
 Data: Loblolly 
       AIC      BIC    logLik
  239.4856 251.6397 -114.7428

Random effects:
 Formula: Asym ~ 1 | Seed
            Asym  Residual
StdDev: 3.650642 0.7188625

Fixed effects: Asym + R0 + lrc ~ 1 
         Value Std.Error DF   t-value p-value
Asym 101.44960 2.4616951 68  41.21128       0
R0    -8.62733 0.3179505 68 -27.13420       0
lrc   -3.23375 0.0342702 68 -94.36052       0
 Correlation: 
    Asym   R0    
R0   0.704       
lrc -0.908 -0.827

Standardized Within-Group Residuals:
        Min          Q1         Med          Q3         Max 
-2.23601930 -0.62380854  0.05917466  0.65727206  1.95794425 

Number of Observations: 84
Number of Groups: 14 

我有興趣從NLME擬合的摘要輸出中提取信息。

我想提取一下

  1. 隨機效應的StdDev(即Asym的StdDev,= 3.65)對於這個我嘗試fm1$apVar但沒有運氣。
  2. 固定效應的參數估計(即Asym = 101.44960,R0 = -8.62733等),可以通過fixef(fm1)提取
  3. Std.Error的固定效應(即2.46,0.317,0.034)。 對於這個我已經嘗試了sqrt(diag(fm1$varFix))但這些值與固定效果下的Std.Error列下的值不完全匹配?
  4. logLikelihood(即-114.7428,可以使用fm1$logLik提取)
  5. 殘差(即0.7188625,可以使用fm1 fm1$Residuals提取)

我的最終目標是適應多個模型並將其各自的摘要估計存儲到有組織的數據data.frame

fm1 <- nlme(height ~ SSasymp(age, Asym, R0, lrc),
            data = Loblolly,
            fixed = Asym + R0 + lrc ~ 1,
            random = Asym ~ 1,
            start = c(Asym = 103, R0 = -8.5, lrc = -3.3))

fm2 <- nlme(height ~ SSasymp(age, Asym, R0, lrc),
            data = Loblolly,
            fixed = Asym + R0 + lrc ~ 1,
            random = Asym ~ 1,
            start = c(Asym = 103, R0 = -5.4, lrc = -3.3))

summary(fm1)
summary(fm2)

mylist = list(NULL, summary(fm1), NULL, summary(fm2), NULL, NULL)

假設我的列表對象看起來像是mylist 現在我想創建一個看起來像這樣的data.frame

model    FixedAsym    FixedAsymStdError   FixedR0      ...     Residual
 1       101.44960        2.4616951       -8.62733            0.7188625
 2       101.44934        2.4616788       -8.62736     ...    0.7188625

並創建此data.frame(行數對應於我在mylist有多少個模型摘要)我需要系統地從模型摘要輸出中提取這些值(編號為1-5)。

這里還有幾件......

as.numeric(VarCorr(fm1)[,2])
# [1] 3.6506418 0.7188625

summary(fm1)$tTable[,2]
#       Asym         R0        lrc 
# 2.46169512 0.31795045 0.03427017 

# looks like you don't need this one anymore, but here's a way of getting it
summary(fm1)$corFixed
#            Asym         R0        lrc
# Asym  1.0000000  0.7039498 -0.9077793
# R0    0.7039498  1.0000000 -0.8271022
# lrc  -0.9077793 -0.8271022  1.0000000

抱歉這不是一個完整的答案 - 可能很難創建一個像你所描述的匯總表,因為每個潛在行的結構將是不同的,並且將取決於包含哪些變量作為固定和隨機效應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM