2つの楕円の交点を計算する方法が不思議でした。ベルシカラーとvirginca交点の容積このグラフに示すように: tutorialこれに基づいて、以下のMWEを用いてプロットされている次のように私は楕円のための共分散と中心を得るrの楕円の体積を計算する方法
data(iris)
log.ir <- log(iris[, 1:4])
ir.species <- iris[, 5]
ir.pca <- prcomp(log.ir, center = TRUE, scale. = TRUE)
library(ggbiplot)
g <- ggbiplot(ir.pca, obs.scale = 1, var.scale = 1,
groups = ir.species, ellipse = TRUE,
circle = TRUE)
g <- g + scale_color_discrete(name = '')
g <- g + theme(legend.direction = 'horizontal',
legend.position = 'top')
print(g)
:
setosa.cov <- cov(ir.pca$x[ir.species=="setosa",])
versicolor.cov <- cov(ir.pca$x[ir.species=="versicolor",])
virginica.cov <- cov(ir.pca$x[ir.species=="virginica",])
setosa.centre <- colMeans(ir.pca$x[ir.species=="setosa",])
versicolor.centre <- colMeans(ir.pca$x[ir.species=="versicolor",])
virginica.centre <- colMeans(ir.pca$x[ir.species=="virginica",])
しかし、その後、私は私のウィットの終わりにしています: - |
library(siar)
setosa <- ir.pca$x[ir.species=="setosa",]
versicolor <- ir.pca$x[ir.species=="versicolor",]
virginica <- ir.pca$x[ir.species=="virginica",]
overlap.fun <- function(data.1, data.2){
dimensions <- ncol(data.1)
for(i in 1:(dimensions-1)){
overlap.out <- overlap(data.1[,i], data.1[,i+1], data.2[,i], data.2[,i+1], steps = 5)
out$overlap[i] <- overlap.out$overlap
out$area1[i] <- overlap.out$area1
out$area2[i] <- overlap.out$area2
}
return(out)
}
overlap.fun(versicolor, virginica)
リターン:不思議なこと
$overlap
[1] 0.01587977 0.48477088 0.08375927
$area1
[1]1.020596 1.04614461 0.08758691
$area2
[1] 1.028594 1.1535106 0.1208483
私は
編集:SIAR ::重複を使用して、ここでの例以下@カール・witthoft、の兆候後 パーセントの計算値は、本当にggbiplotのPCAに楕円に対応していない:
tmp <- overlap(versicolor[,1], versicolor[,2], virginica[,1], virginica[,2], steps = 5)
virginica.percentage <- round(x=(tmp$overlap/tmp$area2*100), digits = 2)
versicolor.percentage <- round(x=(tmp$overlap/tmp$area1*100), digits = 2)
> virginica.percentage [1] 1.54
> versicolor.percentage[1] 1.56
であり、これは上記の図1に示されているよりはるかに少ない。 しかし、このhereで別のスレッドを開く方が良いでしょう。
基本的な方法は、距離を、交点を見つけ、「上」と「下」曲線の積分を計算し、取ることです。あなたは、各積分は、単一の値を超えていることを確認するために、これを分割する必要がありますd関数の範囲である。つまり、この種の交差面積計算を含むCRANに1つまたは2つのパッケージがあることを思い出しているようです。当然私はどのものを思い出すことができません:-( –