ナンクル力学系

学んだ事を書き連ねていこう。

エラーバーと平均を元データと一緒にプロットするRスクリプト

with 2 comments

こんな感じの出力になるやつ:

tapply と factor を使うとかなり楽にかけた.Rすごい!

ソースコード
plot.raw.mean.errorbar <- function(x, y, new=FALSE, col=par("fg"), axes=TRUE, col.raw=FALSE, col.mean=FALSE, col.eb=FALSE, xlim=FALSE, ylim=FALSE, arrows.length=0.1 ){ # calc mean and error bar fc <- factor(x) ## <<-- ここ! ux <- as.numeric(levels(fc)) my <- tapply(y, fc, mean) ## <<-- ここ! sy <- tapply(y, fc, sd) ## <<-- ここ! ucl <- my + sy lcl <- my - sy # plot if ( col.raw == FALSE ) col.raw <- col if ( col.mean == FALSE ) col.mean <- col if ( col.eb == FALSE ) col.eb <- col if ( xlim == FALSE ) xlim <- range(x) if ( ylim == FALSE ) ylim <- range(y) par(new=new) plot( x, y, xlim=xlim, ylim=ylim, col=col.raw, axes=F, xlab="", ylab="" ) arrows( ux, ucl, ux, lcl, length=arrows.length, angle=90, code=3, lwd=2, col=col.eb ) par(new=T) plot( ux, my, xlim=xlim, ylim=ylim, col=col.mean, axes=axes, type = "l", xlab="", ylab="" ) } tanh.g <- function(x){ y <- tanh(x) return( y + (1-y^2) * rnorm(length(x)) ) } n <- 20 x <- rep(-5:5,n) y <- tanh.g(x) plot.raw.mean.errorbar(x,y) [/sourcecode]
Advertisements

Written by tkf

July 7, 2009 at 1:45 am

Posted in PC

Tagged with

2 Responses

Subscribe to comments with RSS.

  1. 似たようなのを平均じゃなくてmedianでやるboxplotっていうのもあったりします。各因子で要素数が少ないんだったら、medianとかのほうがいいかもですね(medianについても中心極限定理が成立するので、信頼区間が取れる)。
    http://www.okada.jp.org/RWiki/?%A5%B0%A5%E9%A5%D5%A5%A3%A5%C3%A5%AF%A5%B9%BB%B2%B9%CD%BC%C2%CE%E3%BD%B8%A1%A7%C8%A2%B7%BF%BF%DE

    あと、xのほうを因子みたいに離散値と考えないで、連続値と考えるんだったら、PRML3章の事後予測分布を使って信頼区間計算することもできますね(p155とか)。こっちのほうをやってくれることを期待!!(ぉ

    syou6162

    July 7, 2009 at 6:13 am

  2. 返事おそくなってしまったけど,ありがとうございます.
    median良さげですね.また勉強することが増えたー(w

    tkf

    July 9, 2009 at 8:02 am


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: