这个问题与:Selecting Percentile curve using gamlss::lms in R
我可以从以下数据和代码中得到百分位曲线:
age = sample(5:15, 500, replace=T)
yvar = rnorm(500, age, 20)
mydata = data.frame(age, yvar)
head(mydata)
age yvar
1 12 13.12974
2 14 -18.97290
3 10 42.11045
4 12 27.89088
5 11 48.03861
6 5 24.68591
h = lms(yvar, age , data=mydata, n.cyc=30)
centiles(h,xvar=mydata$age, cent=c(90), points=FALSE)
我现在如何获得曲线上每个 x 值 (5:15) 的 yvar,这将代表平滑后数据的第 90 个百分位数?
我试图阅读帮助页面并找到 fit(h) 和 fv(h) 来获取整个数据的拟合值。但是如何在第 90 个百分位曲线水平上获得每个年龄水平的值?谢谢你的帮助。
编辑:下图显示我需要什么:
我尝试了以下但它是正确的,因为值不正确:
mydata$fitted = fitted(h)
aggregate(fitted~age, mydata, function(x) quantile(x,.9))
age fitted
1 5 6.459680
2 6 6.280579
3 7 6.290599
4 8 6.556999
5 9 7.048602
6 10 7.817276
7 11 8.931219
8 12 10.388048
9 13 12.138104
10 14 14.106250
11 15 16.125688
这些值与直接来自数据的第 90 个分位数有很大不同:
> aggregate(yvar~age, mydata, function(x) quantile(x,.9))
age yvar
1 5 39.22938
2 6 35.69294
3 7 25.40390
4 8 26.20388
5 9 29.07670
6 10 32.43151
7 11 24.96861
8 12 37.98292
9 13 28.28686
10 14 43.33678
11 15 44.46269