考虑rp的np-package中包含的示例,
Vignettes for np package的第21页。
npcdens
返回条件密度对象,并能够绘制2d-pdf和2d-cdf,如图所示。我想知道我是否可以以某种方式从对象中提取1-D信息(pdf / cdf),如果我要指定两个参数中的一个,比如矢量或其他什么?我是R的新手,无法找到对象的格式。
谢谢您的帮助。
-Egon。
以下是所要求的代码:
require(np)
data("Italy")
attach(Italy)
bw <- npcdensbw(formula=gdp~ordered(year), tol=.1, ftol=.1)
fhat <- npcdens(bws=bw)
summary(fhat)
npplot(bws=bw)
npplot(bws=bw, cdf=TRUE)
detach(Italy)
答案 0 :(得分:2)
fhat
对象包含所有需要的信息以及更多信息。要查看其中的所有内容,请执行str( fhat )
查看结构。
我相信您感兴趣的值为xeval
,yeval
和condens
(PDF密度)。
有很多方法可以获得值,但我倾向于喜欢数据帧。我会在一个数据框中弹出三个向量:
denDf <- cbind( year=as.character( fhat$xeval[,1] ), fhat$yeval, fhat$condens )
## had to do a dance around the year variable because it's a factor
然后我会用subset()
选择我想要的值:
subset( denDf, year==1951 & gdp > 8 & gdp < 8.2)
由于gdp是浮点值,因此使用==
运算符进行选择非常困难。
答案 1 :(得分:1)
JD Long建议的方法仅提取现有训练集中数据点的密度。如果你想要其他点的密度(条件或条件变量),你需要使用predict()
功能。以下代码提取并绘制了以年== 1999为条件的1-D密度分布,这是未包含在原始数据集中的值。
首先使用与意大利数据集相同的组件构建数据框,gdp定期间隔,“1999”为有序因子。
yr1999<- rep("1999", 100)
gdpVals <-seq(1,35, length.out=100)
nD1999 <- data.frame(year = ordered(yr1999), gdp = gdpVals)
接下来使用预测函数来提取密度。
gdpDens1999 <-predict(fhat,newdata = nD1999)
以下代码绘制了密度。
plot(gdpVals, gdpDens1999, type='l', col='red', xlab='gdp', ylab = 'p(gdp|yr = 1999)')