R语言中predict()函数

曾经终败给现在 2022-09-07 06:24 1639阅读 1赞

目录

predict()的用法

函数形式

参数介绍

predict.glm()的用法

函数形式

参数介绍

输出介绍

实例

predict.lm()的用法

参数含义

实例


predict()的用法

函数形式

  1. predict (object, ...)

该函数是一个大类,其中还包含很多变体:

[1] predict.ar* predict.Arima* predict.arima0* predict.glm
[5] predict.HoltWinters* predict.lm predict.loess* predict.mlm*
[9] predict.nls* predict.poly* predict.ppr* predict.prcomp*
[13] predict.princomp* predict.smooth.spline* predict.smooth.spline.fit* predict.StructTS*

注意:我们可以直接利用这些变体进行预测,也可以都利用predict()函数,除了参数不一样外,输出结果是一样的。

参数介绍

  • object 一个模型对象
  • … 额外参数

predict.glm()的用法

函数形式

  1. ## S3 method for class 'glm'
  2. predict(object, newdata = NULL,
  3. type = c("link", "response", "terms"),
  4. se.fit = FALSE, dispersion = NULL, terms = NULL,
  5. na.action = na.pass, ...)

参数介绍

  • object: 是一个从glm继承的模型对象
  • newdata: 是一个数据框,如果缺失就用训练数据进行预测,也即拟合值
  • type: 表示预测种类。默认是归一化的线性预测;responses是归一化的响应变量。因此对于一个二分类模型,默认是log-odds (logit归一化的概率),然而type=”response”给出的是预测概率。“terms”返回一个矩阵提供在线性预测下模型公式中每一项的拟合值。
  • se.fit: 是一个bool值,表示标准误差是否需要。
  • dispersion: GLM中用于计算标准化误差的离差。如果缺失,将会返回模型对象中的summary.
  • terms: with type = "terms" by default all terms are returned. A character vector specifies which terms are to be returned.
  • na.action: 表示如何对待newdata中的缺失数据,默认是将缺失值预测为NA.

输出介绍

  • 如果se.fit=FALSE, 返回一个预测值的向量或者矩阵。如果type=’terms’,返回的是一个矩阵并且有个属性是“constant”.
  • 如果se.fit=TRUE, 返回一个list,其中的元素包含

    • fit: 预测值,就如se.fit=FALSE
    • se.fit: 估计的标准化误差
    • residual.scale: 一个常数给出了用于计算标准化误差的散度的平方根。

实例

  1. require(graphics)
  2. ## example from Venables and Ripley (2002, pp. 190-2.)
  3. ldose <- rep(0:5, 2)
  4. numdead <- c(1, 4, 9, 13, 18, 20, 0, 2, 6, 10, 12, 16)
  5. sex <- factor(rep(c("M", "F"), c(6, 6)))
  6. SF <- cbind(numdead, numalive = 20-numdead)
  7. budworm.lg <- glm(SF ~ sex*ldose, family = binomial)
  8. summary(budworm.lg)
  9. plot(c(1,32), c(0,1), type = "n", xlab = "dose",
  10. ylab = "prob", log = "x")
  11. text(2^ldose, numdead/20, as.character(sex))
  12. ld <- seq(0, 5, 0.1)
  13. lines(2^ld, predict(budworm.lg, data.frame(ldose = ld,sex = factor(rep("M", length(ld)), levels = levels(sex))),type = "response"))
  14. lines(2^ld, predict(budworm.lg, data.frame(ldose = ld, sex = factor(rep("F", length(ld)), levels = levels(sex))), type = "response"))
  15. lines(2^ld, predict.glm(budworm.lg, data.frame(ldose = ld,sex = factor(rep("M", length(ld)), levels = levels(sex))),type = "response"),col='red')

" class="reference-link">watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzE4MDU1MTY3_size_16_color_FFFFFF_t_70

注意将predict()换成predict.glm()结果一样

predict.lm()的用法

  1. ## S3 method for class 'lm'
  2. predict(object, newdata, se.fit = FALSE, scale = NULL, df = Inf,
  3. interval = c("none", "confidence", "prediction"),
  4. level = 0.95, type = c("response", "terms"),
  5. terms = NULL, na.action = na.pass,
  6. pred.var = res.var/weights, weights = 1, ...)

参数含义

  • object: 这里是lm的对象或者继承类
  • interval: 是置信区间的类型。
  • level: Tolerance/confidence level.
  • pred.var: 未来观测值的方差。
  • weights: 用于预测的方差权重,这可是一个数值向量或者单边模型公式。如果是后者,它可以解析为基于newdata的一个运算。

实例

  1. require(graphics)
  2. ## Predictions
  3. x <- rnorm(15)
  4. y <- x + rnorm(15)
  5. predict(lm(y ~ x))
  6. new <- data.frame(x = seq(-3, 3, 0.5))
  7. predict(lm(y ~ x), new, se.fit = TRUE)
  8. pred.w.plim <- predict(lm(y ~ x), new, interval = "prediction")
  9. pred.w.clim <- predict(lm(y ~ x), new, interval = "confidence")
  10. matplot(new$x, cbind(pred.w.clim, pred.w.plim[,-1]),
  11. lty = c(1,2,2,3,3), type = "l", ylab = "predicted y")
  12. ## Prediction intervals, special cases
  13. ## The first three of these throw warnings
  14. w <- 1 + x^2
  15. fit <- lm(y ~ x)
  16. wfit <- lm(y ~ x, weights = w)
  17. predict(fit, interval = "prediction")
  18. predict(wfit, interval = "prediction")
  19. predict(wfit, new, interval = "prediction")
  20. predict(wfit, new, interval = "prediction", weights = (new$x)^2)
  21. predict(wfit, new, interval = "prediction", weights = ~x^2)

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzE4MDU1MTY3_size_16_color_FFFFFF_t_70 1

predict()换成predict.lm()结果一样

发表评论

表情:
评论列表 (有 0 条评论,1639人围观)

还没有评论,来说两句吧...

相关阅读

    相关 r语言plot函数

    R语言中的plot()函数是一个用于创建各种类型的图形的基本绘图函数。它可以用来绘制散点图、线图、直方图、箱线图、饼图等多种图形。以下是plot()函数的基本语法和一些示例用法