调用
coeftest(m)
返回 z系数测试:
Estimate Std. Error z value Pr(>|z|)
lenDelta 0.26592 0.13038 2.0397 0.04138 *
-2|-1 -2.59586 0.24090 -10.7758 < 2.2e-16 ***
-1|0 -0.81155 0.13558 -5.9860 2.150e-09 ***
0|1 0.73271 0.13394 5.4706 4.486e-08 ***
1|2 1.98097 0.19182 10.3271 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
我知道我可以使用
访问各个数值coeftest(m)[1,4]
从这里我可以直接获得重要性代码。
但是,如何访问与lenDelta相关联的重要性代码字符串“*”?
对象的结构如下
str(coeftest(m))
返回以下输出
coeftest [1:5, 1:4] 0.266 -2.596 -0.812 0.733 1.981 ...
- attr(*, "dimnames")=List of 2
..$ : chr [1:5] "lenDelta" "-2|-1" "-1|0" "0|1" ...
..$ : chr [1:4] "Estimate" "Std. Error" "z value" "Pr(>|z|)"
- attr(*, "method")= chr "z test of coefficients"
完整的可重复示例(来自here)
## data
library("foreign")
dat <- read.dta("ats.ucla.edu/stat/data/ologit.dta")
## model
library("MASS")
m <- polr(apply ~ pared + public + gpa, data = dat, Hess = TRUE)
## coefficient test
library("AER")
coeftest(m)
由于
答案 0 :(得分:2)
print
个对象的coeftest
方法在内部调用printCoefmat
(就像summary
或lm
个对象的glm
方法一样。这会利用函数symnum
,默认情况下使用系数测试/摘要图例中显示的分割点。
要手动调用,您可以执行以下操作。 (我在这里使用的是更简单的模型,因为我在访问加州大学洛杉矶分校的网站时遇到了问题。)
安装模型:
m <- lm(dist ~ speed, data = cars)
从coeftest中提取p值:
pv <- coeftest(m)[,4]
将p值切割为显着组:
symnum(pv, corr = FALSE, na = FALSE,
cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1),
symbols = c("***", "**", "*", ".", " ")
)
## (Intercept) speed
## * ***
## attr(,"legend")
## [1] 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
答案 1 :(得分:0)
我建议使用以下函数ctdf
将coeftest
打印输出转换为可以使用r2$sig
等传统方法轻松访问的数据框。要专门访问“lenDelta”的重要明星,请使用r2[row.names(r2)=="lenDelta","sig"]
# Obtain coeftest object
r1=coeftest(m)
#*** Function to convert coeftest results object to data frame
ctdf=function(x){
rt=list() # generate empty results list
for(c in 1:dim(x)[2]) rt[[c]]=x[,c] # writes column values of x to list
rt=as.data.frame(rt) # converts list to data frame object
names(rt)=names(x[1,]) # assign correct column names
rt[,"sig"]=symnum(rt$`Pr(>|z|)`, corr = FALSE, na = FALSE,cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1),symbols = c("***", "**", "*", ".", " "))
return(rt)
}
# Apply function
r2=ctdf(r1) # returns a data frame that can be accessed normally