2013年1月29日火曜日

Rで行列の最大値を呼び出す

> x<-matrix(1:9,nrow=3,ncol=3)
> x
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> max(x) #行列全要素の最大値
[1] 9
> max(x[1,]) #行列1行目の最大値
[1] 7
> max(x[,1]) #行列1列目の最大値
[1] 3

行列がNAを含む場合は
max( , na.rm=TRUE)
とする

Rで線形回帰lm()の結果の中身

残差とか理論値とか

http://kasuya.ecology1.org/stats/res_lm01.html

Rでコメントアウト複数行

if(0){
コメント
}

Rでデータフレームに列を加える

> x <- data.frame(a=1:3, b=letters[1:3])
> x["c"] <- c(TRUE,TRUE,FALSE)
> x
  a b     c
1 1 a  TRUE
2 2 b  TRUE
3 3 c FALSE
 
http://www.okada.jp.org/RWiki/?%A5%C7%A1%BC%A5%BF%A5%D5%A5%EC%A1%BC%A5%E0Tips%C2%E7%C1%B4#bae7f71f 

Rで回帰残差にNAを含める方法

> D<-data.frame(x=c(NA,2,3,4,5,6),y=c(2.1,3.2,4.9,5,6,7),residual=NA)
> Z<-lm(y~x,data=D)
> D[names(Z$residuals),"residual"]<-Z$residuals
> D
   x   y residual
1 NA 2.1       NA
2  2 3.2    -0.28
3  3 4.9     0.55
4  4 5.0    -0.22
5  5 6.0    -0.09
6  6 7.0     0.04

http://stackoverflow.com/questions/6882709/how-do-i-deal-with-nas-in-residuals-in-a-regression-in-r

RでデータフレームからNAを含む行を落とす

Data <- na.omit(Data)

Rのデータフレーム

"統計の関数を利用してデータ解析するには,

Rで使用するデータは「データフレーム」の形式
でなければならない."


http://133.100.216.71/R_analysis/basic_data_frame00.html

2013年1月28日月曜日

Rでベクトル内のNA以外の要素を数える

sum( !is.na( x ) )

http://r.789695.n4.nabble.com/how-to-count-number-of-elements-in-a-vector-that-are-not-NA-td896430.html

Rで行列からベクトルを取り出す

> x <- matrix(runif(5*4),ncol=5,nrow=4) # ランダムな行列作成
> x
          [,1]       [,2]       [,3]      [,4]       [,5]
[1,] 0.2849401 0.87684443 0.02844246 0.5394180 0.36615681
[2,] 0.3301715 0.09579336 0.61150386 0.6823147 0.74778217
[3,] 0.8273795 0.22615717 0.59909658 0.7701186 0.04878373
[4,] 0.9898318 0.71143105 0.95935694 0.5836727 0.63342126
> y<-as.numeric(x[1:dim(x)[1]]) # 1列目をベクトルとして取り出す
> y
[1] 0.2849401 0.3301715 0.8273795 0.9898318
> y<-as.numeric(x[1:dim(x)[1],1]) # 1列目をベクトルとして取り出す
> y
[1] 0.2849401 0.3301715 0.8273795 0.9898318
> y<-as.numeric(x[1:dim(x)[1],3]) # 3列目をベクトルとして取り出す
> y
[1] 0.02844246 0.61150386 0.59909658 0.95935694
> y<-as.numeric(x[2,1:dim(x)[2]]) # 2行目をベクトルとして取り出す
> y
[1] 0.33017152 0.09579336 0.61150386 0.68231470 0.74778217



参考 dim()
> x <- matrix(runif(5*4),ncol=5,nrow=4)
> x
           [,1]      [,2]      [,3]      [,4]       [,5]
[1,] 0.48979355 0.7012950 0.0197624 0.5450226 0.75162774
[2,] 0.04856294 0.4535511 0.2631810 0.9319915 0.35800765
[3,] 0.53541554 0.9646692 0.5856587 0.6115715 0.33092957
[4,] 0.52836800 0.4141150 0.3830334 0.4947907 0.05568016
> dim(x)  # xの行と列の情報を調べる
[1] 4 5
> dim(x)[1] # xの行数を表示
[1] 4
> dim(x)[2] # xの列数を表示
[1] 5


http://www.is.titech.ac.jp/~mase/Rtips.html#item2

データフレームの場合
http://joker.hatenablog.com/entry/20110410/1302391668

Rでゼロベクトルを作る

numeric(n)

http://www.okada.jp.org/RWiki/?%A5%D9%A5%AF%A5%C8%A5%EBTips%C2%E7%C1%B4#x446c479

2013年1月27日日曜日

Rで回帰分析の結果から係数のみを取り出す

https://sites.google.com/site/webtextofr/seminar2

Rで大量の変数を自動的に生成する方法

> for (i in 1:5 ) {
+     eval( parse( text = paste( "x",i,"<-matrix(1:6,nrow=2,ncol=3,byrow=T)", sep="" ) ) )
+ }
>
> x1
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
> x5
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

http://d.hatena.ne.jp/koiti_yano/20070930/p2

Rで重回帰分析

http://d.hatena.ne.jp/matsuou1/20110418/1303144024

http://itbc-world.com/home/rfm/r%E3%81%AE%E7%B5%B1%E8%A8%88%E9%96%A2%E6%95%B0/%E9%87%8D%E5%9B%9E%E5%B8%B0%E5%88%86%E6%9E%90/

http://kikkawa.cyber-ninja.jp/r/regression.html

Rで行列をベクトルに変換

> x<-matrix(1:6,nrow=2,ncol=3,byrow=T)
> x
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
> dim(x)<-c(6,1)
> x
     [,1]
[1,]    1
[2,]    4
[3,]    2
[4,]    5
[5,]    3
[6,]    6

http://d.hatena.ne.jp/foo22222/20110503/1303206272

2013年1月26日土曜日

Rでmatファイルの読み書き

インストール
install.packages("R.matlab")

使う前に
require("R.matlab")

読み
x <- readMat('Name.mat')

書き
writeMat('Name.mat')

http://rikeracy.web.fc2.com/r/matread/matread.html

Rで簡単な関数の描画





# housekeeping
rm(list=ls(all=TRUE))   

# Weibull PDF
fw <- function (x) {
    ( k / lambda ) * ( x / lambda ) ^ ( k -1 ) * exp( - ( x / lambda ) ^ k )
}

k <- 1
lambda <- 1
plot ( fw , 0 , 3 , ylim = c( 0 , 1.5 ) , main = "Weibull PDF")

k <- 2
lambda <- 1
par ( new = T )
plot ( fw, 0 , 3 , ylim = c( 0 , 1.5 ) , col = "red" )

k <- 3
lambda <- 1
par ( new = T )
plot ( fw, 0 , 3 , ylim = c( 0 , 1.5 ) , col = "blue" )

k <- 1
lambda <- 2
par ( new = T )
plot ( fw , 0 , 3 , ylim = c( 0 , 1.5 ) , lty = 2 )

k <- 2
lambda <- 2
par ( new = T )
plot ( fw, 0 , 3 , ylim = c( 0 , 1.5 ) , col = "red" , lty = 2 )

k <- 3
lambda <- 2
par ( new = T )
plot ( fw, 0 , 3 , ylim = c( 0 , 1.5 ) , col = "blue" , lty = 2 )

labels <- c( "k=1, lambda=1", "k=2, lambda=1", "k=3, lambda=1", "k=1, lambda=2", "k=2, lambda=2" , "k=3, lambda=2")
cols <- c( "black", "red", "blue", "black", "red", "blue")
ltys <- c( 1, 1, 1, 2, 2, 2)

legend( 2 , 1.5 , legend = labels , col = cols, lty = ltys )

dev.copy2eps(file = "WeibullPDF.eps", width = 8)
dev.copy2pdf(file = "WeibullPDF.pdf", width = 8)

# Weibull CDF
Fw <- function (x) {
    1 - exp( - ( x / lambda ) ^ k )
}

dev.set (1)

k <- 1
lambda <- 1
plot ( Fw , 0 , 3 , ylim = c( 0 , 1 ) , main = "Weibull CDF")

k <- 2
lambda <- 1
par ( new = T )
plot ( Fw, 0 , 3 , ylim = c( 0 , 1 ) , col = "red" )

k <- 3
lambda <- 1
par ( new = T )
plot ( Fw, 0 , 3 , ylim = c( 0 , 1 ) , col = "blue" )

k <- 1
lambda <- 2
par ( new = T )
plot ( Fw , 0 , 3 , ylim = c( 0 , 1 ) , lty = 2 )

k <- 2
lambda <- 2
par ( new = T )
plot ( Fw, 0 , 3 , ylim = c( 0 , 1 ) , col = "red" , lty = 2 )

k <- 3
lambda <- 2
par ( new = T )
plot ( Fw, 0 , 3 , ylim = c( 0 , 1 ) , col = "blue" , lty = 2 )

legend( 2 , 0.3 , legend = labels , col = cols, lty = ltys )

dev.copy2eps(file = "WeibullCDF.eps", width = 8)
dev.copy2pdf(file = "WeibullCDF.pdf", width = 8)
参考
http://r.livedocs.net/graph/legend.html
http://en.wikipedia.org/wiki/Weibull_distribution