作者andrew43 (讨厌有好心推文後删文者)
看板R_Language
标题Re: [问题] plot 3D图如何标示最大值
时间Thu Sep 3 01:11:21 2015
不知道是不是答非所问,你跑看看。
# 建资料
dt.obs <- data.frame(
x = c(3,5,2,1,2,3,8),
y = c(1,6,4,9,4,2,3),
z = c(3,26,9,9,9,5,25)
)
# 回归式
mod <- glm(z ~ x + y, data = dt.obs, family=quasipoisson)
summary(mod)
# 放网格和求预测值
library(plot3D)
grid.lines <- 20
M <- mesh(
seq(1, 9, length.out = grid.lines),
seq(1, 9, length.out = grid.lines)
)
dt.pred <- data.frame(
x = as.vector(M$x),
y = as.vector(M$y)
)
dt.pred$z <- predict(mod, dt.pred, type = "response")
# dt.pred 就是网格各点的资料
# 要找特别的 (x,y,z) 可以从这里找找看
# 一号图
scatter3D(dt.obs$x, dt.obs$y, dt.obs$z, surf = list(
x = M$x, y = M$y,
z = matrix(dt.pred$z, nrow = grid.lines),
fit = predict(mod, type="response")))
dev.new()
# 二号图
x <- M$x
y <- M$y
z <- matrix(dt.pred$z, nrow = grid.lines)
surf3D(x,y,z)
※ 引述《aee36900 (持久战!!)》之铭言:
: [问题类型]:
:
: 程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
:
: [软体熟悉度]:
: 新手(没写过程式,R 是我的第一次)
: [问题叙述]:
: 练习dlnm模型
: 想要在3D图形上将RR最大值的数值及对应的天数找出来
: 不知道有无function可以直接使用计算出来
: 图形如下
: http://imgur.com/6IcvqCW
: [程式范例]:
:
: install.packages("dlnm")
: library(dlnm)
: cb3.pm <- crossbasis(chicagoNMMAPS$pm10, lag=1, argvar=list(fun="lin",cen=0),
: arglag=list(fun="strata"))
: varknots <- equalknots(chicagoNMMAPS$temp,fun="bs",df=5,degree=2)
: lagknots <- logknots(30, 3)
: cb3.temp <- crossbasis(chicagoNMMAPS$temp, lag=30, argvar=list(fun="bs",knots=varknots,cen=21), arglag=list(knots=lagknots))
: model3 <- glm(death ~ cb3.pm + cb3.temp + ns(time, 7*14) + dow,family=quasipoisson(), chicagoNMMAPS)
: pred3.temp <- crosspred(cb3.temp, model3, by=1)
: plot(pred3.temp, xlab="Temperature", zlab="RR", theta=200, phi=40, lphi=30,
: main="3D graph of temperature effect")
:
: [环境叙述]:
:
: R version 3.1.3 (2015-03-09)
: Platform: x86_64-redhat-linux-gnu (64-bit)
: Running under: CentOS release 6.5 (Final)
:
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 125.230.67.53
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1441213890.A.29C.html
※ 编辑: andrew43 (125.230.67.53), 09/03/2015 01:13:18
1F:→ celestialgod: 一号图上方要加 dt.pred$z = predict(mod, dt.pred) 09/03 01:47
2F:→ celestialgod: qq..看错 我自己没复制到XD 09/03 01:48