統計解析ソフトr

26
@y_system

Upload: yoshitomo-akimoto

Post on 07-Jul-2015

1.946 views

Category:

Education


1 download

DESCRIPTION

統計解析ソフトのRのインストール方法から簡単な演算や作図まで。

TRANSCRIPT

@y_system

� Rって?� インストール方法� 演算してみよう

注)初心者用です。

� オープンソースでフリーの統計解析向け言語、開発実行環境

� 最新バージョンは3.0.1 (2013年5月16日release)

� クロスプラットフォーム� 似たようなものといえばS言語など� さまざまは構造のデータを保持できる!� パッケージも豊富。 5000個以上

まずは http://www.r-project.org/

にアクセスし左サイドバーのCRAN をクリック

The Comprehensive R Archive Network

日本だと、� 兵庫教育大学� 筑波大学� 統計数理研究所の3つがあります。

� Macの方はpkgファイルを� Windowsの方は base のリンクをあとはいつも通りの作業になるので割愛。

� 過去のバージョンはhttp://cran.md.tsukuba.ac.jp/bin/macosx/old/http://cran.md.tsukuba.ac.jp/bin/windows/base/old/

一般的な言語と同様に演算記号などが使えます。 “;”はなくてもよい> 1+2[1] 3> sum(1:10)[1] 55> rep(1,10)[1] 1 1 1 1 1 1 1 1 1 1> seq(1,5,0.5)[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0> ubuntu<-c(1,2,3,4,5,6)> ubuntu[1] 1 2 3 4 5 6# コメントアウトは # です。# 代入には<-がご推奨。= も使えます。

# もちろん入れ子もOK

# オブジェクトの名前は予約語でなければ基本的にOK

## 演算子は駄目 .(ドット)か _(アンダーバー)を使いましょう## ちなみに日本語もOKたぶん面倒なので基本使わない## 名前の最初に数字やアンダーバーを使うのも駄目## ライブラリによっては対応してなかったり

> 2*ubuntu

[1] 2 4 6 8 10 12

> 秋元="akimoto"

> 秋元[1] "akimoto"

> debian=matrix(1:12,3,4)

> (debian=matrix(1:12,3,4))

[,1] [,2] [,3] [,4]

[1,] 1 4 7 10

[2,] 2 5 8 11

[3,] 3 6 9 12この場合縦方向から要素が代入されますがこの場合縦方向から要素が代入されますがこの場合縦方向から要素が代入されますがこの場合縦方向から要素が代入されますが引数に引数に引数に引数にbyrowbyrowbyrowbyrow=T=T=T=Tを入力すると横方向から代入されます。を入力すると横方向から代入されます。を入力すると横方向から代入されます。を入力すると横方向から代入されます。

> t(debian)

[,1] [,2] [,3]

[1,] 1 2 3

[2,] 4 5 6

[3,] 7 8 9

[4,] 10 11 12

> debian*debian

[,1] [,2] [,3] [,4]

[1,] 1 16 49 100

[2,] 4 25 64 121

[3,] 9 36 81 144

> debian%*%t(debian)

[,1] [,2] [,3]

[1,] 166 188 210

[2,] 188 214 240

[3,] 210 240 270

� オブジェクトには型がある。(logical・numeric・double・character・complex)場合によっては確認が必要なときも。� たとえばCSVデータを 読み込んだとき

に1つでもcharacterがあるとfactor変数として記憶されたりします。※要注意

� 通常で入っている関数でかなり使えますが、必要であれば5000ほどあるライブラリを使いましょう。� メニューからインストールでもよし、install.packages()関数を使うもよし

� 尖度とか歪度とかね� Twitter の解析用ライブラリもある!

# タイトル行が列の名前になるobj=read.csv(file.choose())

# タイトル行なんてないobj=read.csv(file.choose(),header=F)

# 読み込んだデータを表示してみようhead(obj)

tail(obj)

困ったときは ?関数名 でヘルプが表示されます。

今回はismevというライブラリを使います。> install.packages("ismev") # ライブラリのインストールパッケージを 'C:/Users/lenovo/Documents/R/win-library/2.15' 中にインストールします('lib' が指定されていないので) --- このセッションで使うために、CRANのミラーサイトを選んでください ---URL 'http://cran.rstudio.com/bin/windows/contrib/2.15/ismev_1.39.zip' を試していますContent type 'application/zip' length 192211 bytes (187 Kb)開かれた URL downloaded 187 Kb

パッケージ 'ismev' は無事に展開され、MD5 サムもチェックされました

ダウンロードされたパッケージは、以下にありますC:¥Users¥lenovo¥AppData¥Local¥Temp¥Rtmp2BJBEa¥downloaded_packages

> library(ismev) # ライブラリの呼び出し要求されたパッケージ mgcv をロード中ですThis is mgcv 1.7-18. For overview type 'help("mgcv-package")'.警告メッセージ:パッケージ ''ismev'' はバージョン 2.15.3 の R の下で造られました

これこれこれこれでライブラリの関数やデータを使用可能でライブラリの関数やデータを使用可能でライブラリの関数やデータを使用可能でライブラリの関数やデータを使用可能

基本的にはmyfunc<-function(data){

a=sum(data)

b=mean(data)

d=var(data)

e=length(data)

return(c(a,b,d,e))

}

データを受け取って、returnで処理結果を返す。

myfunc<-function(x){

a=x%%2

if(a==0){

return(TRUE)

}else if(a==1){

return(FALSE)

}else{

return("Not Integer")

}

}

> myfunc(1)[1] FALSE> myfunc(2)[1] TRUE> myfunc(2.1)[1] "Not Integer"

for(i in 1:10){

#関数}

while (x <= 5) { # while ( 条件式 )x <- x + 1 # 条件式が TRUE である限り

式が繰り返される}

lm関数を使って残差やAICなどを計算> a<-1:10> b<-c(3,5,6,7,9,10,45,665,5,4)> res<-lm(b~a)> summary(res)

Call:lm(formula = b ~ a)

Residuals:Min 1Q Median 3Q Max

-165.15 -72.69 -47.18 -3.31 537.30

Coefficients:Estimate Std. Error t value Pr(>|t|)

(Intercept) -38.07 143.20 -0.266 0.797a 20.72 23.08 0.898 0.395

Residual standard error: 209.6 on 8 degrees of freedomMultiple R-squared: 0.09154, Adjusted R-squared: -0.02202 F-statistic: 0.8061 on 1 and 8 DF, p-value: 0.3955

� 基本的にplot関数でだいたいのことはできます。

� 線を引いたり点を打ったり

引数plot(x,y,type="点や線",lty="線の種類",col="色",xlab="x軸の名前",ylab="y軸の名前", xlim=c(下限,上限),ylim=c(下限,上限))

> a<-1:10

> b<-c(3,5,6,7,9,10,45,665,5,4)

plot(a,b,type="b",lty=1,col=2,xlab="x軸の名前",ylab="y軸の名前")

2 4 6 8 10

0100

200

300

400

500

600

軸の名名x

軸の名名

y

b:点と線(途切れて)l:線p:点o:点と線(Over lay)sとかhとか

solid:実線dashed:破線dotted:点線

> plot(a,b)

> res<-lm(b~a)

> abline(res,col=2,lwd=3)

回帰直線を引ける

2 4 6 8 10

0100

200

300

400

500

600

a

b