7

相関行列を表示するために次のコードがあります。

panel.cor <- function(x, y, digits=2, prefix="", cex.cor)
{
    usr <- par("usr"); on.exit(par(usr))
    par(usr = c(0, 1, 0, 1))
    r <- abs(cor(x, y))
    txt <- format(c(r, 0.123456789), digits=digits)[1]
    txt <- paste(prefix, txt, sep="")
    if(missing(cex.cor)) cex <- 0.8/strwidth(txt)

    test <- cor.test(x,y)
    # borrowed from printCoefmat
    Signif <- symnum(test$p.value, corr = FALSE, na = FALSE,
                  cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1),
                  symbols = c("***", "**", "*", ".", " "))

    text(0.5, 0.5, txt, cex = cex * r)
    text(.8, .8, Signif, cex=cex, col=2)
}
pairs(USJudgeRatings[,c(2:3,6,1,7)],
  lower.panel=panel.smooth, upper.panel=panel.cor)

次のようにプロットを変更したい:

  1. 小さい青い点を

    pairs(USJudgeRatings[,c(2:3,6,1,7)],
          main="xxx",
          pch=18,
          col="blue",
          cex=0.8)
    
  2. 対角線上のエントリのヒストグラムを含めます(ここにリンクの説明を入力してください) 。

  3. 相関とp値を次のように表示します

    r=0.9;
    p=0.001;
    

星ではなく値を使用します。

ペアのデータの散布図に表示されるフィッティングラインがあります。フィッティングに使用する方法は何ですか?上記のコードとしてフィッティングが定義されている行はどれですか?そして、フィッティング方法を変更する方法は?

4

2 に答える 2

35

関数のヘルプ ページには、pairs()プロットするパネルを定義する方法の例が示されています。

あなたの特定のケースでは:

関数をテキスト行に表示するように変更panel.cor()しました - p 値と相関係数。

panel.cor <- function(x, y, digits=2, cex.cor)
{
  usr <- par("usr"); on.exit(par(usr))
  par(usr = c(0, 1, 0, 1))
  r <- abs(cor(x, y))
  txt <- format(c(r, 0.123456789), digits=digits)[1]
  test <- cor.test(x,y)
  Signif <- ifelse(round(test$p.value,3)<0.001,"p<0.001",paste("p=",round(test$p.value,3)))  
  text(0.5, 0.25, paste("r=",txt))
  text(.5, .75, Signif)
}

panel.smooth()関数定義cex=col=およびpch=引数の場合。

panel.smooth<-function (x, y, col = "blue", bg = NA, pch = 18, 
                        cex = 0.8, col.smooth = "red", span = 2/3, iter = 3, ...) 
{
  points(x, y, pch = pch, col = col, bg = bg, cex = cex)
  ok <- is.finite(x) & is.finite(y)
  if (any(ok)) 
    lines(stats::lowess(x[ok], y[ok], f = span, iter = iter), 
          col = col.smooth, ...)
}

ヒストグラムを追加するには、panel.hist()関数を定義する必要があります (のヘルプ ファイルから取得pairs())

panel.hist <- function(x, ...)
{
  usr <- par("usr"); on.exit(par(usr))
  par(usr = c(usr[1:2], 0, 1.5) )
  h <- hist(x, plot = FALSE)
  breaks <- h$breaks; nB <- length(breaks)
  y <- h$counts; y <- y/max(y)
  rect(breaks[-nB], 0, breaks[-1], y, col="cyan", ...)
}

最終プロット:

pairs(USJudgeRatings[,c(2:3,6,1,7)],
          lower.panel=panel.smooth, upper.panel=panel.cor,diag.panel=panel.hist)

ここに画像の説明を入力

于 2013-03-07T12:46:24.783 に答える