0

我目前正在尝试为心血管研究项目生成列线图和 z 分数。

但是,我对gamlss包有疑问,尤其是centiles.pred()函数。

例如,如果我运行以下代码,我会陷入错误:

library(gamlss)
x <- c(6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 7, 8, 8, 8)
y <- c(372, 375, 340, 370, 386, 396, 398, 357, 360, 360, 362, 415, 365, 366, 368)
data <- data.frame(x, y)
m1 <- gamlss(y~pb(x),sigma.fo=~pb(x), data=data, family=BCT)
centiles(m1, xvar = data$x)
newx <- seq(6, 8, 0.5)
mat <- centiles.pred(m1, xname = "x", xvalues = newx)

当我运行最后一行时,我收到以下消息:

Error in data.frame(data, source = namelist) :
arguments imply differing number of rows: 5, 6

我该如何克服这个错误?

4

1 回答 1

1

问题是数据框的标签。我曾经在使用 label table时遇到过类似的错误。我将数据更改为data_并且它可以工作。:)

library(gamlss)
x <- c(6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 7, 8, 8, 8)
y <- c(372, 375, 340, 370, 386, 396, 398, 357, 360, 360, 362, 415, 365, 366, 368)
data_ <- data.frame(x, y)
m1 <- gamlss(y~pb(x),sigma.fo=~pb(x), data=data_, family=BCT)
centiles(m1, xvar = data_$x)
newx <- seq(6, 8, 0.5)
mat <- centiles.pred(m1, xname = "x", xvalues = newx)
mat
于 2020-04-16T10:57:09.903 回答