R “传销”对象的“stats::confint”的置信区间错误?
这里我不确定我是否做错了什么,或者这是R “传销”对象的“stats::confint”的置信区间错误?,r,statistics,R,Statistics,这里我不确定我是否做错了什么,或者这是R本身的confint函数中的一个错误,但我得到的是不包含估计的回归估计的置信区间 这里是reprex: #模型(将数据中的所有数字列转换为z分数) mod#A tibble:4 x 8 #>响应项估计标准误差统计p值形态低形态高 #> #>1 mpg(截距)8.05e-17 0.0893 9.01e-16 1.00e+0-0.182 0.182 #>2加仑重量-8.68e-1
R
本身的confint
函数中的一个错误,但我得到的是不包含估计的回归估计的置信区间
这里是reprex:
#模型(将数据中的所有数字列转换为z分数)
mod#A tibble:4 x 8
#>响应项估计标准误差统计p值形态低形态高
#>
#>1 mpg(截距)8.05e-17 0.0893 9.01e-16 1.00e+0-0.182 0.182
#>2加仑重量-8.68e-10.0908-9.56e+0.29e-10-1.05-0.682
#>3显示(截距)-1.70e-16 0.0826-2.06e-15 1.00e+0-0.182 0.182
#>4显示重量8.88e-10.08401.06e+11.22e-11-1.05-0.682
确认(mod)
#> 2.5 % 97.5 %
#>:(截距)-0.1824544 0.1824544
#>:wt-1.0530332-0.6822855
#>:(截距)-0.1824544 0.1824544
#>:wt-1.0530332-0.6822855
如果绘制估算图,这一点会更加明显:
我做错什么了吗?或者这是预期的行为 confint()现在可用于传销:
confint(lm(mpg~wt,data=mtcars))
2.5 % 97.5 %
(Intercept) 33.450500 41.119753
wt -6.486308 -4.202635
confint(lm(disp~wt,data=mtcars))
2.5 % 97.5 %
(Intercept) -204.0914 -58.2054
wt 90.7579 134.1984
confint(lm(cbind(mpg,disp)~wt,data=mtcars))
2.5 % 97.5 %
mpg:(Intercept) 33.450500 41.119753
mpg:wt -6.486308 -4.202635
disp:(Intercept) -204.091436 -58.205395
disp:wt 90.757897 134.198380
问题在于在dplyr或purrr中使用scale,我在scale之后使用as.data.frame,因为您的所有列都是数字:
confint(lm(cbind(mpg,disp)~wt,data=as.data.frame(scale(mtcars))))
2.5 % 97.5 %
mpg:(Intercept) -0.1824544 0.1824544
mpg:wt -1.0530332 -0.6822855
disp:(Intercept) -0.1687740 0.1687740
disp:wt 0.7165054 1.0594545
对于dplyr和purrr,您可以看到变量名称也很混乱:
library(dplyr)
library(purrr)
confint(lm(cbind(mpg,disp)~wt,data=modify_if(.x = mtcars, .p = is.numeric, .f = scale)))
2.5 % 97.5 %
:(Intercept) -0.1824544 0.1824544
:wt -1.0530332 -0.6822855
:(Intercept) -0.1824544 0.1824544
:wt -1.0530332 -0.6822855
confint(lm(cbind(mpg,disp)~wt,data=mutate_if(mtcars,is.numeric,scale))
2.5 % 97.5 %
:(Intercept) -0.1824544 0.1824544
:wt -1.0530332 -0.6822855
:(Intercept) -0.1824544 0.1824544
:wt -1.0530332 -0.6822855
我猜当你进行缩放时,结转的属性会与确认的内容相混淆(仍在查看代码)。解决这个问题的一种方法是强制输出到一个向量(使用c或as.numeric):
或
不幸的是,
tidy(..,conf.int=TRUE)
不太有效,因此在绘图时,需要使用stats中的confint
,并进行一些操作。确实,间隔看起来完全错误。看见
confint(lm(cbind(mpg,disp)~wt,data=modify_if(mtcars,is.numeric,~c(scale(.x)))))
confint(lm(cbind(mpg,disp)~wt,data=mutate_if(mtcars,is.numeric,~c(scale(.x)))))
2.5 % 97.5 %
mpg:(Intercept) -0.1824544 0.1824544
mpg:wt -1.0530332 -0.6822855
disp:(Intercept) -0.1687740 0.1687740
disp:wt 0.7165054 1.0594545