R中的模拟数据与Probit模型

R中的模拟数据与Probit模型,r,statistics,R,Statistics,我有一个非常简单的问题,关于在R中使用probit模型的模拟数据。我用于生成数据,然后使用该数据运行probit模型的任何方法都会返回关于完美拟合的警告:特别是: Warning message: In glm.fit(x = X, y = Y, weights = weights, start = start, etastart = etastart, : fitted probabilities numerically 0 or 1 occurred 是否有某种方法可以为这种类型的模型

我有一个非常简单的问题,关于在R中使用probit模型的模拟数据。我用于生成数据,然后使用该数据运行probit模型的任何方法都会返回关于完美拟合的警告:特别是:

Warning message:
In glm.fit(x = X, y = Y, weights = weights, start = start, etastart = etastart, :
  fitted probabilities numerically 0 or 1 occurred
是否有某种方法可以为这种类型的模型生成不会提供此错误的数据?每当我尝试对probit使用glm()命令时,都会收到警告。我尝试了大量不同的set.seed()值,但每一个都返回警告。我也尝试过几种不同的方法(和价值观),但都不管用。以下是示例代码:

n <- 1000
set.seed(1211)
b.true1 <- c(-1, 2, .8)
X1 <- cbind(rnorm(n, 1.5, 2), rnorm(n, -2, 1.3))
eps.t1 <- rnorm(n)
y.star1 <- b.true1[1] + X1%*%b.true1[2:3] + eps.t1
y1 <- ifelse(y.star1<=0, 0, 1)
prob2 <- glm(y1~X1, family=binomial(link="probit"))

n不管它值多少钱,我想知道你为什么要接受如此高的差异。如果你看y.star1(这是probit值),这些值的范围很大(从-10到14)。这将导致警告,因为四舍五入将使概率响应为0或1

注意不要让结果像那些那样极端,这是你摆脱警告所需要的。使X1的平均值的差异更小,b.true1系数更接近于0有助于:

b.true1 <- c(-1, 1, .8)
X1 <- cbind(rnorm(n, 1.5, 2), rnorm(n, -1, 1.3))

非常感谢您的帮助!我从我知道在Matlab中工作的模拟代码开始,并试图使其在R中工作。我有其他代码使用不同的beta值,但仍然得到了错误,因此我认为这与我的设置有关,而不是系数值。
hist(predict(prob2,type="response"))