gpt4 book ai didi

r - 在 R 中绘制逻辑回归中的两条曲线

转载 作者:行者123 更新时间:2023-12-04 21:53:53 25 4
gpt4 key购买 nike

我在 R (glm) 中运行逻辑回归。然后我设法绘制结果。我的代码如下:

 temperature.glm = glm(Response~Temperature, data=mydata,family=binomial)

plot(mydata$Temperature,mydata$Response, ,xlab="Temperature",ylab="Probability of Response")
curve(predict(temperature.glm,data.frame(Temperature=x),type="resp"),add=TRUE, col="red")
points(mydata$Temperature,fitted(temperature.glm),pch=20)
title(main="Response-Temperature with Fitted GLM Logistic Regression Line")

我的问题是:
  • 如何在一个图中绘制两条逻辑回归曲线?
  • 我从其他统计软件中得到了这两个系数。我如何创建随机数据,插入这两组系数(组 1 和组 2),然后生成两条逻辑回归曲线?

  • 型号:
                       SET 1
    (Intercept) -88.4505
    Temperature 2.9677

    SET 2
    (Intercept) -88.585533
    Temperature 2.972168
    mydata在 2 列和 ~ 700 行中。
    Response Temperature 
    1 29.33
    1 30.37
    1 29.52
    1 29.66
    1 29.57
    1 30.04
    1 30.58
    1 30.41
    1 29.61
    1 30.51
    1 30.91
    1 30.74
    1 29.91
    1 29.99
    1 29.99
    1 29.99
    1 29.99
    1 29.99
    1 29.99
    1 30.71
    0 29.56
    0 29.56
    0 29.56
    0 29.56
    0 29.56
    0 29.57
    0 29.51

    最佳答案

  • 要绘制曲线,您只需定义响应和预测变量之间的关系,并指定您希望绘制该曲线的预测变量值的范围。例如。:
    dat <- structure(list(Response = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L,
    0L, 0L), Temperature = c(29.33, 30.37, 29.52, 29.66, 29.57, 30.04,
    30.58, 30.41, 29.61, 30.51, 30.91, 30.74, 29.91, 29.99, 29.99,
    29.99, 29.99, 29.99, 29.99, 30.71, 29.56, 29.56, 29.56, 29.56,
    29.56, 29.57, 29.51)), .Names = c("Response", "Temperature"),
    class = "data.frame", row.names = c(NA, -27L))

    temperature.glm <- glm(Response ~ Temperature, data=dat, family=binomial)

    plot(dat$Temperature, dat$Response, xlab="Temperature",
    ylab="Probability of Response")
    curve(predict(temperature.glm, data.frame(Temperature=x), type="resp"),
    add=TRUE, col="red")
    # To add an additional curve, e.g. that which corresponds to 'Set 1':
    curve(plogis(-88.4505 + 2.9677*x), min(dat$Temperature),
    max(dat$Temperature), add=TRUE, lwd=2, lty=3)
    legend('bottomright', c('temp.glm', 'Set 1'), lty=c(1, 3),
    col=2:1, lwd=1:2, bty='n', cex=0.8)

    第二个curve调用上面,我们是说逻辑函数定义了 x 之间的关系和 y . plogis(z)的结果等同于评估 1/(1+exp(-z)) 时获得的结果. min(dat$Temperature)max(dat$Temperature)参数定义了 x 的范围其中y应该被评估。我们不需要告诉函数x指温度;当我们指定应对该预测变量值范围进行评估时,这是隐含的。

    Adding additional curves to a plot
  • 如您所见,curve函数允许您绘制曲线而无需模拟预测变量(例如温度)数据。如果您仍然需要这样做,例如要绘制符合特定模型的伯努利试验的一些模拟结果,您可以尝试以下操作:
    n <- 100 # size of random sample

    # generate random temperature data (n draws, uniform b/w 27 and 33)
    temp <- runif(n, 27, 33)

    # Define a function to perform a Bernoulli trial for each value of temp,
    # with probability of success for each trial determined by the logistic
    # model with intercept = alpha and coef for temperature = beta.
    # The function also plots the outcomes of these Bernoulli trials against the
    # random temp data, and overlays the curve that corresponds to the model
    # used to simulate the response data.
    sim.response <- function(alpha, beta) {
    y <- sapply(temp, function(x) rbinom(1, 1, plogis(alpha + beta*x)))
    plot(y ~ temp, pch=20, xlab='Temperature', ylab='Response')
    curve(plogis(alpha + beta*x), min(temp), max(temp), add=TRUE, lwd=2)
    return(y)
    }

    例子:
    # Simulate response data for your model 'Set 1'
    y <- sim.response(-88.4505, 2.9677)

    # Simulate response data for your model 'Set 2'
    y <- sim.response(-88.585533, 2.972168)

    # Simulate response data for your model temperature.glm
    # Here, coef(temperature.glm)[1] and coef(temperature.glm)[2] refer to
    # the intercept and slope, respectively
    y <- sim.response(coef(temperature.glm)[1], coef(temperature.glm)[2])

    下图显示了上面第一个示例生成的图,即温度随机向量的每个值的单个伯努利试验的结果,以及描述模拟数据的模型的曲线。

    Simulated predictor and response data for model 'Set 1'
  • 关于r - 在 R 中绘制逻辑回归中的两条曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9258708/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com