之前在做各类回归方程和检验的时候,针对模型里面的值的提取总是有一种碰运气的成本,比如在做t检验的时候想提取里面的自由度,随便举个例子,基于mtcars这个数据集
a<-t.test(mtcars$vs,mtcars$cyl)
结果为
Welch Two Sample t-test
data: mtcars$vs and mtcars$cyl
t = -17.528, df = 35.907, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-6.415358 -5.084642
sample estimates:
mean of x mean of y
0.4375 6.1875
里面其实是有df=35.907这个字段的,但是不能每次看到后在手工提取,之前的做法是针对这类名称,直接用a$df去看,但是其实这个字段储存在parameter里,比如
a$parameter
df
35.90693
那么问题来了,我怎么知道哪个参数储存在哪里呢?
下面意外的用到了str函数。
比如针对刚才的t检验结果a,用str
str(a)
List of 9
$ statistic : Named num -17.5
..- attr(*, "names")= chr "t"
$ parameter : Named num 35.9
..- attr(*, "names")= chr "df"
$ p.value : num 3.5e-19
$ conf.int : atomic [1:2] -6.42 -5.08
..- attr(*, "conf.level")= num 0.95
$ estimate : Named num [1:2] 0.438 6.188
..- attr(*, "names")= chr [1:2] "mean of x" "mean of y"
$ null.value : Named num 0
..- attr(*, "names")= chr "difference in means"
$ alternative: chr "two.sided"
$ method : chr "Welch Two Sample t-test"
$ data.name : chr "mtcars$vs and mtcars$cyl"
- attr(*, "class")= chr "htest"
看到有各类的参数,储存在$后的字段里,比如我要提取p值,直接输入
a$p.value
[1] 3.500725e-19
就能看到p值为3.500725e-19。
同理,我做一个方差分析,比如就这个mtcars数据集了
fit.a<-aov(mpg~am,data=mtcars)
summary(fit.a)
Df Sum Sq Mean Sq F value Pr(>F)
am 1 405.2 405.2 16.86 0.000285 ***
Residuals 30 720.9 24.0
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
看这个方差分析都有什么参数:
str(fit.a)
List of 12
$ coefficients : Named num [1:2] 17.15 7.24
..- attr(*, "names")= chr [1:2] "(Intercept)" "am"
$ residuals : Named num [1:32] -3.39 -3.39 -1.59 4.25 1.55 ...
..- attr(*, "names")= chr [1:32] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" ...
$ effects : Named num [1:32] -113.65 -20.13 -0.64 4.33 1.63 ...
..- attr(*, "names")= chr [1:32] "(Intercept)" "am" "" "" ...
$ rank : int 2
$ fitted.values: Named num [1:32] 24.4 24.4 24.4 17.1 17.1 ...
..- attr(*, "names")= chr [1:32] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" ...
$ assign : int [1:2] 0 1
$ qr :List of 5
..$ qr : num [1:32, 1:2] -5.657 0.177 0.177 0.177 0.177 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr [1:32] "Mazda RX4" "Mazda RX4 Wag"