如何更改线性回归中每个变量的置信水平名称

How to change the names of confidence levels per variable in linear regression

我得到了每个变量的线性置信水平 regression.I 想使用结果对变量进行排序,所以我将结果集保留为数据框。但是,当我尝试对其中一个变量执行 str() 函数时出现错误(如下所示)。如何存储结果数据集以便我能够对其进行处理?

df <- read.table(text = "target birds    wolfs     
                         1        9         7 
                         1        8         4 
                         0        2         8 
                         1        2         3                                               3 
                         0        1         2 
                         1        7         1 
                         0        1         5 
                         1        9         7 
                         1        8         7 
                         0        2         7 
                         0        2         3 
                         1        6         3 
                         0        1         1 
                         0        3         9 
                         0        1         1  ",header = TRUE)
model<-lm(target~birds+wolfs,data=df)
confint(model)
                  2.5 %     97.5 %
(Intercept) -0.23133823 0.36256052
birds        0.10102771 0.18768505
wolfs       -0.09698902 0.00812353
s<-as.data.frame(confint(model))
str(s.5%)
Error: unexpected numeric constant in "str(s.5"

$ 运算符后面的表达式必须是有效的 R 标识符。 2.5% 不是有效的 R 标识符,但有一种简单的方法可以使其成为一个:将其放入反引号中:`2.5%`1。此外,您需要注意列名与 完全匹配 (或者至少它的前缀匹配)。也就是说,需要在%:

前加一个space
str(s$`2.5 %`)

总的来说,a$ba[['b']] 相同(有一些细微差别;请参阅 documentation)。所以你也可以这样写:

str(s[['2.5 %']])

或者,您可以为有效标识符 data.frame 提供不同的列名,只需分配不同的列名即可。但要注意 make.names :它使您的字符串成为有效的 R 名称,但代价是以并不总是显而易见的方式破坏它们。依赖它可能会使代码的读者感到困惑,因为以前未声明的标识符突然出现在代码中。同样,您应该 始终check.names = FALSE 指定为 data.frame,否则 R 会再次破坏您的列名。


1 其实R这里也接受单引号(s$'2.5 %')。但是,我建议你立即忘记这个;这是 R 语言的历史事故,将标识符和字符串一视同仁(尤其是因为处理不一致)弊大于利。