Frage

Ich würde gerne wissen, wie ich die einzelnen Felder in einem R-Objekt enthalten zugreifen können. Oder, genauer gesagt, wie R, um mir zu sagen, wie.

Zum Beispiel, wenn ich den folgenden Code ausführen:

dx.ct <- ur.df(dat1[,'dx'], lags=3, type='trend')
summary(dx.ct)

dann bekomme ich folgende Ausgabe:

############################################### 
# Augmented Dickey-Fuller Test Unit Root Test # 
############################################### 

Test regression trend 


Call:
lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.46876 -0.24506  0.02420  0.15752  0.66688 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)  
(Intercept)  1.099231   0.561377   1.958   0.0606 .
z.lag.1     -0.239438   0.141093  -1.697   0.1012  
tt          -0.019831   0.007799  -2.543   0.0170 *
z.diff.lag1 -0.306326   0.193001  -1.587   0.1241  
z.diff.lag2 -0.214229   0.186135  -1.151   0.2599  
z.diff.lag3 -0.223433   0.179040  -1.248   0.2228  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.3131 on 27 degrees of freedom
Multiple R-squared: 0.3326,     Adjusted R-squared: 0.209 
F-statistic: 2.691 on 5 and 27 DF,  p-value: 0.04244 


Value of test-statistic is: -1.697 2.4118 3.2358 

Critical values for test statistics: 
      1pct  5pct 10pct
tau3 -4.15 -3.50 -3.18
phi2  7.02  5.13  4.31
phi3  9.31  6.73  5.61

Also, ich weiß, dass ich in der Lage zu sollte über individuell alle Werte zugreifen, ich weiß nicht, wie zu Punkt zu ihnen. Gibt es eine Möglichkeit R zu bitten, mir zu zeigen, wie sie gespeichert werden?

Ich denke entlang der Linien von:

showobjects(summary(dx.ct))

Und dann gibt es

$formula
$residuals
$coefficients
etc.

und dann kann ich

showobjects(summary(dx.ct)$residuals)

, die dann Ausgänge

$min
$1Q
$median
etc.

Danke
Karl

War es hilfreich?

Lösung

Als eine weitere Alternative, werfen Sie einen Blick auf attributes. z.

example(ur.df)
attributes(lc.df) #lc.df is an ur.df object created during by example.

$y
[1] 10.4831 10.4893 10.5022 10.5240 10.5329 10.5586 10.5190 10.5381
[9] 10.5422 10.5361 10.5462 10.5459 10.5552 10.5548 10.5710 10.5861
[17] 10.5864 10.5802 10.6006 10.6168 10.6275 10.6414 10.6629 10.6758
[25] 10.6881 10.7240 10.7143 10.7222 10.7156 10.6964 10.6990 10.7081
[33] 10.7142 10.7078 10.7073 10.6954 10.6910 10.6967 10.7015 10.7083
[41] 10.7127 10.6922 10.6874 10.6989 10.7224 10.7452 10.7462 10.7663
[49] 10.7633 10.7737 10.8282 10.7872 10.8015 10.8139 10.7909 10.8029
[57] 10.7868 10.7979 10.8007 10.8008 10.7991 10.7956 10.8005 10.8160
[65] 10.8260 10.8405 10.8482 10.8633 10.8633 10.8615 10.8732 10.8649
[73] 10.8793 10.8909 10.8938 10.9116 10.9202 10.9409 10.9663 10.9700
[81] 10.9808 10.9878 11.0048 11.0272 11.0420 11.0701 11.0751 11.0964
[89] 11.1069 11.1123 11.1231 11.1223 11.1303 11.1307 11.1389 11.1325
[97] 11.1261 11.1232 11.1220

$model
[1] "trend"

$lags
[1] 3

# etc.

Wenn Sie nicht die volle Leistung wollen, dann names(attributes(lc.df)) kehrt nur die, äh, Namen.

[1] "y"         "model"     "lags"      "cval"      "res"       "teststat"  "testreg"   "test.name" "class" 

Andere Tipps

Neben unclass(), versuchen str(). Oder den Quellcode zu lesen, um zu sehen, wie die andere Accessoren es tun.

Edit: Hier ist zum Beispiel der Quellcode der S4-Klasse Methode summary für das ur.df Objekt, das Sie suchen unter:

setMethod("summary", "ur.df", function(object){
  return(new("sumurca", classname="ur.df", test.name=object@test.name,\
    testreg=object@testreg, teststat=object@teststat, cval=object@cval, \
    bpoint=NULL, signif=NULL, model=object@model, type=NULL, auxstat=NULL, \
    lag=NULL, H=NULL, A=NULL, lambda=NULL, pval=NULL, V=NULL, W=NULL, P=NULL))
})

und es verwendet ein Standard-@ Accessor für S4 Objektelemente.

Eine Sache, die Sie tun können, ist die Verwendung unclass().

 ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
 trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
 group <- gl(2,10,20, labels=c("Ctl","Trt"))
 weight <- c(ctl, trt)
 anova(lm.D9 <- lm(weight ~ group))
 s <- summary(lm.D90 <- lm(weight ~ group - 1))

Verwenden Sie Namen, die es zu untersuchen:

 > names(unclass(s))
  [1] "call"          "terms"         "residuals"     "coefficients"  "aliased"            "sigma"         "df"            "r.squared"     "adj.r.squared"
 [10] "fstatistic"    "cov.unscaled" 

Und dann einen bestimmten Wert verweisen:

 > s$r.squared
 [1] 0.9817833

Sie können die angegebenen Feldwert via @ für diese S4 Typ Klasse erhalten, wie Dirk Eddelbuettel erwähnt.

summary(dx.ct)@teststat

               tau3      phi2     phi3
statistic -1.668368 0.9731316 1.444461

summary(dx.ct)@cval

1pct  5pct 10pct
tau3 -3.96 -3.41 -3.12
phi2  6.09  4.68  4.03
phi3  8.27  6.25  5.34
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top