微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

绘制估算值

如何解决绘制估算值

我被要求使用 zoo 包中的 na.locf() 函数使用 LOCF 和 NOCB 方法估算数据集,我现在正在尝试绘制观察值和估算值。我正在使用的数据集如下:

structure(list(id = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27),sex = c("F","F",NA,"M","M"),d8 = c(21,23.5,21.5,16.5,24.5,25.5,27.5,22.5,22),d10 = c(20,20.5,28,21.5),d12 = c(21.5,29,26.5,27,31,23.5),d14 = c(23,19.5,28.5,31.5,29.5,30,25)),class = c("spec_tbl_df","tbl_df","tbl","data.frame"),row.names = c(NA,-27L),spec = structure(list(
    cols = list(id = structure(list(),class = c("collector_double","collector")),sex = structure(list(),class = c("collector_character",d8 = structure(list(),d10 = structure(list(),d12 = structure(list(),d14 = structure(list(),"collector"))),default = structure(list(),class = c("collector_guess",skip = 1L),class = "col_spec"))

我已通过将原始宽格式转换为长格式并执行剩余步骤来估算缺失值:

data_long <-  tidyr::gather(dati,age,measurements,d8:d14,factor_key = TRUE)

data_locf <- data_long

locf <- na.locf(data_locf$measurements,na.rm = T,fromLast = F)
nocb <- na.locf(data_locf$measurements,fromLast = T)

data_locf$measurements = ifelse(data_locf$age == 'd12',locf,nocb)

data_locf$sex = na.locf(data_locf$sex,fromLast = T)

data_complete = complete(data = data_locf,fill = c(data_locf$measurements,data_locf$sex))

有没有人知道一种将估算值与观察到的值以​​图形方式绘制在一起的方法?我在这里向您介绍了一些我被推荐使用的函数,但我已经开始对其进行适当的修改,但没有成功。

#1 plot    
par(mfrow=c(1,1))
    measurements <- data_complete$measurements
    locf <- function(x) {
      a <- x[1]
      for (i in 2:length(x)) {
        if (is.na(x[i])) x[i] <- a
        else a <- x[i]
      }
      return(x)
    }
    meas1 <- na.locf(measurements)
    colvec <- ifelse(is.na(measurements),mdc(2),mdc(1))
    plot(measurements,col=colvec,type="l",xlab= 'sex',ylab="measurements")
    points(measurements,pch=20,cex=1)

这不会返回正确分开的两性和表示:

 #2 plot 
par(mfrow=c(1,2))
breaks <- seq(-20,200,10)
nudge <- 1
lwd <- 1.5
x <- matrix(c(breaks-nudge,breaks+nudge),ncol=2)
obs <- airquality[,"Ozone"]
mis  <- imp$imp$Ozone[,1]
fobs <- c(hist(obs,breaks,plot=FALSE)$counts,0)
fmis <- c(hist(mis,0)
y <- matrix(c(fobs,fmis),ncol=2)

tp <- xyplot(imp,Ozone~Solar.R,na.groups=ici(imp),ylab="Ozone (ppb)",xlab="Solar Radiation (lang)",cex = 0.75,lex=lwd,pch=19,ylim = c(-20,180),xlim = c(0,350))
print(tp)

它为来自 mouse 包的空气质量数据集再现了一个很好的散点图。关键是我无法使用 na.locf 函数提取估算值。

我指定我应该将年龄/测量值绘制为响应变量与性别的关系,这就是为什么我需要将两种性别分开。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。