2014-12-12 181 views

回答

2

看起來像這樣會有用的信息,但由於某些原因,它需要一些額外的工作。

基於源代碼和robust參數的描述,該中心使用的是從統計包或者MASS:::cov.trobcov.wt計算:

tmp <- dataEllipse(Duncan$income, Duncan$education, levels=0.1*1:9, 
        ellipse.label=0.1*1:9, lty=2, fill=TRUE, fill.alpha=0.1) 


MASS:::cov.trob(tmp[[1]])$center 

#  x  y 
# 42.08207 52.91766 

stats::cov.wt(tmp[[1]])$center 

#  x  y 
# 42.02314 52.81859 

您還需要使用任何weights如果你使用的在dataEllipse。所以,你可以寫一個簡單的函數來得到每個橢圓所有中心:

get_centers <- function(de, robust = FALSE) { 
    if (robust) 
    l <- lapply(seq_along(de), function(x) MASS:::cov.trob(tmp[[x]])$center) 
    else l <- lapply(seq_along(de), function(x) stats::cov.wt(tmp[[x]])$center) 
    do.call('rbind', l) 
} 

(cent <- get_centers(tmp)) 

#    x  y 
# [1,] 42.02314 52.81859 
# [2,] 42.09468 52.93887 
# [3,] 42.15538 53.04091 
# [4,] 42.21279 53.13742 
# [5,] 42.27070 53.23476 
# [6,] 42.33239 53.33846 
# [7,] 42.40228 53.45595 
# [8,] 42.48882 53.60144 
# [9,] 42.61681 53.81659 

dataEllipse(Duncan$income, Duncan$education, levels=0.1*1:9, 
      ellipse.label=0.1*1:9, lty=2, fill=TRUE, fill.alpha=0.1) 
points(cent[1, 1], cent[1, 2], pch = 4, cex = 2) 

enter image description here

它看起來稍微斷點的中心,但我不知道爲什麼。我不知道你的意思是通過提取主軸和副軸。

我認爲這是關閉的,因爲dataEllipse返回標籤的橢圓的結果,在本例中它起始於.1而不是中心橢圓,所以標記的中心點將是.1橢圓而不是中心橢圓。但這只是一個猜測。