如何从R中rms包的ols()模型中获取系数的p值
我使用mtcars数据集和rms包的ols()函数运行回归,如下所示:如何从R中rms包的ols()模型中获取系数的p值,r,structure,regression,rms,R,Structure,Regression,Rms,我使用mtcars数据集和rms包的ols()函数运行回归,如下所示: > library(rms) > mod_ols = ols(mpg~wt+qsec+am+hp+vs+drat+cyl, mtcars) > > mod_ols Linear Regression Model ols(formula = mpg ~ wt + qsec + am + hp + vs + drat + cyl, data =
> library(rms)
> mod_ols = ols(mpg~wt+qsec+am+hp+vs+drat+cyl, mtcars)
>
> mod_ols
Linear Regression Model
ols(formula = mpg ~ wt + qsec + am + hp + vs + drat + cyl, data = mtcars)
Model Likelihood Discrimination
Ratio Test Indexes
Obs 32 LR chi2 62.73 R2 0.859
sigma 2.5703 d.f. 7 R2 adj 0.818
d.f. 24 Pr(> chi2) 0.0000 g 6.519
Residuals
Min 1Q Median 3Q Max
-3.3615 -1.7407 -0.2537 1.0893 4.5929
Coef S.E. t Pr(>|t|)
Intercept 15.7714 16.5491 0.95 0.3501
wt -3.0826 1.0888 -2.83 0.0092
qsec 0.7426 0.6632 1.12 0.2739
am 2.5945 1.8802 1.38 0.1803
hp -0.0182 0.0162 -1.12 0.2728
vs 0.2321 2.0291 0.11 0.9099
drat 0.6387 1.5186 0.42 0.6778
cyl 0.0309 0.9091 0.03 0.9732
制作的模型结构如下:
> str(mod_ols)
List of 18
$ coefficients : Named num [1:8] 15.7714 -3.0826 0.7426 2.5945 -0.0182 ...
..- attr(*, "names")= chr [1:8] "Intercept" "wt" "qsec" "am" ...
$ residuals : Named num [1:32] -2.193 -1.823 -3.362 0.714 1.81 ...
..- attr(*, "names")= chr [1:32] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" ...
$ effects : Named num [1:32] -113.65 -29.12 -9.1 5.12 3.04 ...
..- attr(*, "names")= chr [1:32] "Intercept" "wt" "qsec" "am" ...
$ rank : int 8
$ fitted.values : Named num [1:32] 23.2 22.8 26.2 20.7 16.9 ...
..- attr(*, "names")= chr [1:32] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" ...
$ assign :List of 7
..$ wt : int 2
..$ qsec: int 3
..$ am : int 4
..$ hp : int 5
..$ vs : int 6
..$ drat: int 7
..$ cyl : int 8
$ qr :List of 5
..$ qr : num [1:32, 1:8] -5.657 0.177 0.177 0.177 0.177 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr [1:32] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" ...
.. .. ..$ : chr [1:8] "Intercept" "wt" "qsec" "am" ...
.. ..- attr(*, "assign")= int [1:8] 0 1 2 3 4 5 6 7
..$ qraux: num [1:8] 1.18 1.05 1.08 1.18 1.03 ...
..$ pivot: int [1:8] 1 2 3 4 5 6 7 8
..$ tol : num 0.0000001
..$ rank : int 8
..- attr(*, "class")= chr "qr"
$ df.residual : int 24
$ var : num [1:8, 1:8] 273.872 3.919 -9.225 -13.12 -0.054 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : chr [1:8] "Intercept" "wt" "qsec" "am" ...
.. ..$ : chr [1:8] "Intercept" "wt" "qsec" "am" ...
$ stats : Named num [1:6] 32 62.733 7 0.859 6.519 ...
..- attr(*, "names")= chr [1:6] "n" "Model L.R." "d.f." "R2" ...
$ linear.predictors: Named num [1:32] 23.2 22.8 26.2 20.7 16.9 ...
..- attr(*, "names")= chr [1:32] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" ...
$ call : language ols(formula = mpg ~ wt + qsec + am + hp + vs + drat + cyl, data = mtcars)
$ terms :Classes 'terms', 'formula' length 3 mpg ~ wt + qsec + am + hp + vs + drat + cyl
.. ..- attr(*, "variables")= language list(mpg, wt, qsec, am, hp, vs, drat, cyl)
.. ..- attr(*, "factors")= int [1:8, 1:7] 0 1 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "dimnames")=List of 2
.. .. .. ..$ : chr [1:8] "mpg" "wt" "qsec" "am" ...
.. .. .. ..$ : chr [1:7] "wt" "qsec" "am" "hp" ...
.. ..- attr(*, "term.labels")= chr [1:7] "wt" "qsec" "am" "hp" ...
.. ..- attr(*, "order")= int [1:7] 1 1 1 1 1 1 1
.. ..- attr(*, "intercept")= num 1
.. ..- attr(*, "response")= int 1
.. ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
.. ..- attr(*, "predvars")= language list(mpg, wt, qsec, am, hp, vs, drat, cyl)
.. ..- attr(*, "dataClasses")= Named chr [1:8] "numeric" "numeric" "numeric" "numeric" ...
.. .. ..- attr(*, "names")= chr [1:8] "mpg" "wt" "qsec" "am" ...
.. ..- attr(*, "formula")=Class 'formula' length 3 mpg ~ wt + qsec + am + hp + vs + drat + cyl
.. .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
$ Design :List of 11
..$ name : chr [1:7] "wt" "qsec" "am" "hp" ...
..$ label : chr [1:7] "wt" "qsec" "am" "hp" ...
..$ units : Named chr [1:7] "" "" "" "" ...
.. ..- attr(*, "names")= chr [1:7] "wt" "qsec" "am" "hp" ...
..$ colnames : chr [1:7] "wt" "qsec" "am" "hp" ...
..$ assume : chr [1:7] "asis" "asis" "asis" "asis" ...
..$ assume.code : int [1:7] 1 1 1 1 1 1 1
..$ parms : list()
..$ limits : list()
..$ values : list()
..$ nonlinear :List of 7
.. ..$ wt : logi FALSE
.. ..$ qsec: logi FALSE
.. ..$ am : logi FALSE
.. ..$ hp : logi FALSE
.. ..$ vs : logi FALSE
.. ..$ drat: logi FALSE
.. ..$ cyl : logi FALSE
..$ interactions: list()
$ non.slopes : num 1
$ na.action : NULL
$ scale.pred : chr "mpg"
$ fail : logi FALSE
- attr(*, "class")= chr [1:3] "ols" "rms" "lm"
>
>str(mod_ols)
18人名单
$coverties:Named num[1:8]15.7714-3.0826 0.7426 2.5945-0.0182。。。
..-attr(*,“name”)=chr[1:8]“Intercept”“wt”“qsec”“am”。。。
$residuals:Named num[1:32]-2.193-1.823-3.362 0.714 1.81。。。
..-attr(*,“name”)=chr[1:32]“马自达RX4”“马自达RX4 Wag”“Datsun 710”“大黄蜂4路”。。。
$effects:Named num[1:32]-113.65-29.12-9.15.12 3.04。。。
..-attr(*,“name”)=chr[1:32]“Intercept”“wt”“qsec”“am”。。。
$rank:int 8
$fitted.values:Named num[1:32]23.2222.826.220.716.9。。。
..-attr(*,“name”)=chr[1:32]“马自达RX4”“马自达RX4 Wag”“Datsun 710”“大黄蜂4路”。。。
$assign:7人名单
..$wt:int 2
..$qsec:int 3
..$am:int 4
..$hp:int 5
..$vs:int 6
..$drat:int 7
..$cyl:int 8
$qr:5人名单
..$qr:num[1:32,1:8]-5.657 0.177 0.177 0.177 0.177。。。
.. ..- 属性(*,“dimnames”)=2个列表
.. .. ..$ : chr[1:32]“马自达RX4”“马自达RX4 Wag”“Datsun 710”“大黄蜂4路”。。。
.. .. ..$ : chr[1:8]“截获”“wt”“qsec”“am”。。。
.. ..- 属性(*,“赋值”)=int[1:8]01 2 3 4 5 6 7
..$qraux:num[1:8]1.181.05 1.08 1.181.03。。。
..$pivot:int[1:8]1 2 3 4 5 6 7 8
..$tol:num 0.0000001
..$rank:int 8
..-attr(*,“类”)=chr“qr”
$df.剩余:整数24
$var:num[1:8,1:8]273.8723.919-9.225-13.12-0.054。。。
..-attr(*,“dimnames”)=2个列表
.. ..$ : chr[1:8]“截获”“wt”“qsec”“am”。。。
.. ..$ : chr[1:8]“截获”“wt”“qsec”“am”。。。
$stats:Named num[1:6]32 62.733 7 0.859 6.519。。。
..-attr(*,“name”)=chr[1:6]“n”型号L.R.“d.f.“R2”。。。
$linear.predictors:Named num[1:32]23.2222.826.220.716.9。。。
..-attr(*,“name”)=chr[1:32]“马自达RX4”“马自达RX4 Wag”“Datsun 710”“大黄蜂4路”。。。
$call:语言ols(公式=mpg~wt+qsec+am+hp+vs+drat+cyl,数据=mtcars)
$terms:Classes'terms','公式'长度3英里~wt+qsec+am+hp+vs+drat+cyl
.. ..- 属性(*,“变量”)=语言列表(mpg、wt、qsec、am、hp、vs、drat、cyl)
.. ..- 属性(*,“因子”)=int[1:8,1:7]01100。。。
.. .. ..- 属性(*,“dimnames”)=2个列表
.. .. .. ..$ : chr[1:8]“mpg”“wt”“qsec”“am”。。。
.. .. .. ..$ : chr[1:7]“wt”“qsec”“am”“hp”。。。
.. ..- 属性(*,“术语标签”)=chr[1:7]“wt”“qsec”“am”“hp”。。。
.. ..- 属性(*,“顺序”)=int[1:7]1
.. ..- 属性(*,“截距”)=num 1
.. ..- 属性(*,“响应”)=int 1
.. ..- 属性(*,“.Environment”)=
.. ..- 属性(*,“前置变量”)=语言列表(mpg、wt、qsec、am、hp、vs、drat、cyl)
.. ..- attr(*,“dataClasses”)=命名的chr[1:8]“numeric”“numeric”“numeric”“numeric”。。。
.. .. ..- 属性(*,“名称”)=chr[1:8]“mpg”“wt”“qsec”“am”。。。
.. ..- 属性(*,“公式”)=等级“公式”长度3英里~wt+qsec+am+hp+vs+drat+cyl
.. .. .. ..- 属性(*,“.Environment”)=
$Design:11人名单
..$name:chr[1:7]“wt”“qsec”“am”“hp”。。。
..$label:chr[1:7]“wt”“qsec”“am”“hp”。。。
..$units:命名为chr[1:7]“”。。。
.. ..- 属性(*,“名称”)=chr[1:7]“wt”“qsec”“am”“hp”。。。
..$colnames:chr[1:7]“wt”“qsec”“am”“hp”。。。
…假设:chr[1:7]“asis”“asis”“asis”“asis”。。。
..$ASSUBE.code:int[1:7]1
..$parms:list()
..$limits:list()
..$values:list()
..$7人名单
.. ..$ wt:logi-FALSE
.. ..$ qsec:logi-FALSE
.. ..$ am:逻辑错误
.. ..$ hp:logi-FALSE
.. ..$ vs:logi-FALSE
.. ..$ drat:logi-FALSE
.. ..$ cyl:logi FALSE
..$interactions:list()
$non.slopes:数量1
$na.action:NULL
$scale.pred:chr“mpg”
$fail:logi-FALSE
-属性(*,“类”)=chr[1:3]“ols”“rms”“lm”
>
但是,我无法在mod_ols结构中找到p.值。如何从rms包的ols()函数生成的模型中获取系数的P值?感谢您的帮助。使用
summary.lm
:
summary.lm(mod_ols)$coefficients[ , "Pr(>|t|)"]
# Intercept wt qsec am hp vs
#0.350087341 0.009234825 0.273857810 0.180345204 0.272787068 0.909889126
# drat cyl
#0.677806300 0.973163043
下面的每一行也可以做到这一点:
summary.lm(mod_ols)$coefficients[ , 4]
coef(summary.lm(mod_ols))[ , 4]
coef(summary.lm(mod_ols))[ , "Pr(>|t|)"]
summary
为什么会因为ols
而被劫持?@JesseKnightsummary
是一个“通用函数”,其输出取决于输入对象的类别。如果在mod_ols
对象上调用summary
,则在引擎盖下调用summary.rms
,来自rms
包的函数。如果您想了解更多关于这个通用主题及其工作原理的信息,可以搜索“R”和“S3”、“泛型函数”、“方法distpatch”和“OOP”等术语