簡體   English   中英

R-如何從嶺回歸結果中提取T統計量

[英]R - How to Extract T-Statistics From Ridge Regression Results

我正在使用R中的嶺回歸軟件包 ,但是在提取系數列表中的T統計量p值時遇到了麻煩。

下面是一些示例代碼在這里 ;

data(GenCont)
mod <- linearRidge(Phenotypes ~ ., data = as.data.frame(GenCont))
summary(mod)

這返回

Call:
linearRidge(formula = Phenotypes ~ ., data = as.data.frame(GenCont))

Coefficients:
             Estimate Scaled estimate Std. Error (scaled) t value (scaled) Pr(>|t|)    
(Intercept)  1.533386              NA                  NA               NA       NA    
SNP1         0.277296        4.045409            0.266120           15.201  < 2e-16 ***
SNP2        -0.110458       -1.256154            0.216332            5.807 6.38e-09 ***

但是我想以編程方式訪問“系數”中的數據。 我了解,如果我使用lm,則類似

coef(summary(mod))

應該可以工作,但這似乎並不能滿足我的要求。 我只是得到一個NULL。

請問有關如何訪問此數據的任何想法?

要獲得針對自動選擇了脊參數的情況的系數表,您應該將summary()結果存儲為某個對象,然后訪問列表元素summaries$summary1$coefficients 您可以使用功能str(sumar)看到summary()對象的整個結構。

sumar<-summary(mod)
sumar$summaries$summary1$coefficients
                Estimate Scaled estimate Std. Error (scaled) t value (scaled)     Pr(>|t|)
(Intercept)  1.533385893              NA                  NA               NA           NA
SNP1         0.277296215     4.045408706           0.2661197      15.20146202 0.000000e+00
SNP2        -0.110457822    -1.256153622           0.2163319       5.80660491 6.375233e-09
SNP3        -0.110457822    -1.256153622           0.2163319       5.80660491 6.375233e-09
SNP4         0.005229639     0.011635212           0.3716925       0.03130332 9.750276e-01
SNP5         0.531172545     6.323006229           0.3153685      20.04958196 0.000000e+00
SNP6        -0.119163534    -1.373227248           0.2230470       6.15667175 7.428960e-10
SNP7         0.113843942     0.113730041           0.3721807       0.30557749 7.599264e-01
SNP8        -0.099148877    -1.028580596           0.3558067       2.89084074 3.842128e-03
SNP9        -0.008320553    -0.008312229           0.3723863       0.02232152 9.821915e-01
SNP10        0.058562323     0.101128163           0.3715670       0.27216670 7.854938e-01
SNP11       -0.096526424    -1.495698673           0.3292496       4.54275034 5.552500e-06
SNP12       -0.334279101    -0.333944654           0.3722483       0.89710186 3.696646e-01

要僅獲取t值,請選擇此表的第四列。

> sumar$summaries$summary1$coefficients[,4]
(Intercept)        SNP1        SNP2        SNP3        SNP4        SNP5        SNP6        SNP7        SNP8        SNP9 
         NA 15.20146202  5.80660491  5.80660491  0.03130332 20.04958196  6.15667175  0.30557749  2.89084074  0.02232152 
      SNP10       SNP11       SNP12 
 0.27216670  4.54275034  0.89710186 

要訪問由summary()函數產生的其他元素,您只需選擇適當的列表元素。 摘要對象的結構顯示要選擇的元素。

str(sumar$summaries$summary1)
List of 4
 $ coefficients: num [1:13, 1:5] 1.53339 0.2773 -0.11046 -0.11046 0.00523 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr [1:13] "(Intercept)" "SNP1" "SNP2" "SNP3" ...
  .. ..$ : chr [1:5] "Estimate" "Scaled estimate" "Std. Error (scaled)" "t value (scaled)" ...
 $ df          : Named num [1:3] 3.12 1.21 5.04
  ..- attr(*, "names")= chr [1:3] "model" "variance" "residual"
 $ nPCs        : int 1
 $ lambda      : num 2.21

例如獲取df

sumar$summaries$summary1$df
   model variance residual 
3.120934 1.205412 5.036457 

也可以選擇結果而無需創建新對象-只需使用summary(mod)而不是對象名稱sumar

summary(mod)$summaries$summary1$df
   model variance residual 
3.120934 1.205412 5.036457 

暫無
暫無

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

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