r - 使用 R 中的 delta 方法估计线性回归截距的标准误差
问题描述
我试图通过“car”包中的“deltaMethod”函数使用delta方法从线性回归中估计转换后的截距(10 ^ a)的SE。但是 deltaMethod 总是为截距的 SE 或其任何变换给出零!例如,对于未转换的截距:
> x <- 1:100; y <- rnorm(100, 4*x, 5)
> m1<-lm(y~x)
> library(car)
> deltaMethod(m1, "Intercept")
Estimate SE 2.5 % 97.5 %
Intercept -1.9561 0.0000 -1.9561 -1.9561
根据“deltaMethod”函数,截距是 0.000,但应该是 0.9034276:
> (summary(m1))$ coefficients [1,2]
[1] 0.9034276
"msm" 包中的函数 "deltamethod" 给出了截距 SE 的正确值:
> library(msm)
> deltamethod (~ x1, coef(m1), vcov(m1))
[1] 0.9034276
但是我在“car”包中的“deltaMethod”函数代码有什么问题?(出于某种原因,我更喜欢使用“car”包而不是“msm”)。谢谢!
解决方案
我似乎无法重现您的问题。我们可以测试这一点的一种方法是编写一个重复创建数据、拟合模型并返回 SE 的函数,就像您在上面所做的那样。我们可以将它传递给replicate
函数并多次重复该过程。这是使用您的代码进行调查的一种方法:
set.seed(42)
library(car)
delta_sim <- function(){
x <- 1:100; y <- rnorm(100, 4*x, 5)
m1<-lm(y~x)
a <- deltaMethod(m1, "Intercept")
list(a)
}
out <- replicate(1000, delta_sim())
out <- do.call(rbind, out)
hist(out$SE)
这将产生以下结果:
重新启动您的 R 会话以确保您没有任何本地变量潜入您的函数可能是值得的。
推荐阅读
- html - “选择”标签的纯 CSS 浮动标签
- c# - 如何创建一个静态全局事件,以便一个表单可以监听另一个表单的不是父表单的事件?
- javascript - 如何在 10 秒不活动后显示弹出窗口
- javascript - 如何为 jquery 1.x 修复 chrome 的非被动元素问题
- android-studio - Android Studio 中隐藏/显示预览的快捷方式
- c# - 从输入字符串中释放 .exe 文件作为代码
- jena - 使用 OWL API 加载在 Turtle 中序列化的 Ontology
- css - 如果一个人的身高发生变化,如何更改所有 div 的高度
- css - 如何将预先存在的 css 类附加到 Cytoscape JS for Angular 中的节点标签
- java - 当页面中存在两个框架时如何移动物理鼠标