2

RとLatticeを使用して、他のプログラムで使用するために、年ごとにヒストグラムと密度プロットデータを抽出しようとしています。これまでのところ、ヒストグラムの部分が機能しています。

library(lattice)

x <- round(runif(1000, 1999.5, 2012.5))
y <- rlnorm(1000, meanlog = log(40000), sdlog = log(40000) - log(33000)) 
data <- data.frame(cbind(x,y))
data$y <- data$y + 2000*(data$x-2000)

GenerateBinComputations <- function(x, breaks, equal.widths=TRUE, type="percent", nint,...) { hist(x, breaks = breaks, plot = FALSE) }

a <- histogram(~data$y | data$x, type="percent", nint=101, endpoints=c(-500, 100500), equal.widths = TRUE)
results <- data.frame(seq(0, 100000, 1000))
colnames(results)[1] <- "Midpoint"
for (index in 1:13) {
    b <- trellis.panelArgs(a, index)
    b$breaks <- seq(-500, 100500, by=1000)
    c <- do.call(GenerateBinComputations, b)
    results <- cbind(results, c$density)
    colnames(results)[index+1] <- index + 1999
}

print(results)

さて、問題は、densityplotでこれをどのように行うかです。私はそれが似たようなものになると思いますが、ブレーク(それらはdensityplot trellisオブジェクトに含まれていません)と、binsの密度/パーセンタイルを生成するために使用するdensityplottrellisオブジェクト内の適切なオブジェクトを見つけることに問題があります。これが私がこれまでに持っているものです:

d <- densityplot(~data$y | data$x, type="percent", nint=101, endpoints=c(-500, 100500))

参照する必要のある密度プロットトレリスに別の場所がありますか?または、このような密度関数を直接使用する必要がありますか?

density.estimate      <- density(data$y, n = 512 * 8)
density.interpolation <- approxfun(x = density.estimate$x, y = density.estimate$y)
density.results       <- within(data, Density <- density.interpolation(y))

前もって感謝します!

4

0 に答える 0