Symfoware

Symfowareについての考察blog

R言語 散布図と線形単回帰

R言語で散布図の描画と線形単回帰の求め方を簡単に調べてみました。


まず、プロットするデータを適当にPythonで準備。


  1. # -*- coding:utf-8 -*-
  2. import random
  3. f = open('data.tsv', 'w')
  4. f.write('X Y\n')
  5. for i in xrange(100):
  6.     
  7.     x = random.randrange(5, 100)
  8.     y = random.uniform(x - 5, x + 5)
  9.     f.write('%d\t%f\n' % (x, y))
  10.     
  11. f.close()





出力したファイルを読み込んでplotすれば散布図になります。


  1. # 散布図の描画
  2. # データの読み込み
  3. tsv <- read.table('data.tsv', header=T)
  4. png("image.png", width = 500, height = 300, pointsize = 12, bg = "white")
  5. # plot関数でデータを配置
  6. plot(tsv$X, tsv$Y)
  7. graphics.off()



575_01.png



lmで線形単回帰を求めます。
ablineに結果を渡すだけで結果が描画できます。

ただ、得られた数式はsplintfとかで適当にフォーマットしてやる
必要がありました。


  1. # 散布図と線形単回帰の描画
  2. # データの読み込み
  3. tsv <- read.table('data.tsv', header=T)
  4. png("image.png", width = 500, height = 300, pointsize = 12, bg = "white")
  5. # plot関数でデータを配置
  6. plot(tsv$X, tsv$Y)
  7. mylm <- lm(X ~ Y, data=tsv)
  8. # 係数
  9. mylm$coefficients[[1]]
  10. # 傾き
  11. mylm$coefficients[[2]]
  12. # 直線はablineにそのまま渡せばOK
  13. abline(mylm)
  14. # 数式は適当にフォーマットしないとダメ
  15. mylm.exp = sprintf("Y = %0.2fX + %0.2f", mylm$coefficients[[2]], mylm$coefficients[[1]])
  16. print(mylm.exp)
  17. mtext(mylm.exp, adj=c(0,0), cex=3)
  18. graphics.off()



575_02.png



R言語 掲載記事のまとめ

【参考URL】

Rで線形単回帰分析

10. オブジェクトの表示
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/03/02(月) 23:16:55|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Pythonで郵便番号から緯度と経度を取得する(HeartRails Geo API使用) | ホーム | R言語 summary(最大、最小、平均、中央値)の結果を数値で取得する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1664-6e347120
この記事にトラックバックする(FC2ブログユーザー)