初心者のための R および RjpWiki に関する質問コーナー


Q&A (初級者コース) 過去の目次 --- 今までの 15 個の書庫の参照

新規投稿はQ&A (初級者コース)/17へどうぞ。
「普通の状態でのコメント」はできないようにしました。
それでも,コメントできるよという方はご自由にどうぞ。


●● 目次 ●●

参照は,個々の項目をクリック(質問への回答・コメントの参照も,個々の項目をクリック)


カテゴリ変数を、指定した複数のダミー変数へ変換

半年寝太郎 (2018-04-12 (木) 11:32:52)

0〜4のカテゴリデータであるcaを、4つのダミー変数に変換しようとしています。
(例えば「30代既婚子供あり女性」を「40代以下,既婚未婚,子供有無,男性女性」に変換する感じ)
caのうち2は、一部22に変換されてしまっています。

【変換パターン】
1 → 1,0,0,1
2 or 22 → 1,1,1,1
3 → 1,1,0,0
4 → 1,0,0,0
0 → 0,0,0,0

以下のようにして、とりあえず希望のデータフレームを得ることはできました。

> ca <- c(3,22,1,22,3,0,4)
> data <- data.frame(ca)

> data$ca1 <- ifelse( data$ca == 0, 0 ,1)
> data$ca2 <- ifelse( (data$ca >= 2 & data$ca != 4) , 1, 0)
> data$ca3 <- ifelse( (data$ca == 2 | data$ca == 22), 1, 0)
> data$ca4 <- ifelse( (data$ca == 1 | data$ca == 2 | data$ca == 22) ,1, 0)
  ca ca1 ca2 ca3 ca4
1  3   1   1   0   0
2 22   1   1   1   1
3  1   1   0   0   1
4 22   1   1   1   1
5  3   1   1   0   0
6  0   0   0   0   0
7  4   1   0   0   0

しかし、このコードではcaがどう変換されたのか分かりにくく、また変換パターンの変更にも弱いため、
変換前と変換後の対応が分かる形でのコードを書きたいのです。

以下は失敗作ですが、「変換前と変換後の対応が分かる」のイメージです。

v_ca <- c(3,22,1,22,3,0,4)
ca <- array(0, dim = c(length(v_ca),5))
ca[,1] <- v_ca
ca[,2] <- ifelse( v_ca == 22 | v_ca == 2 , c(1,1,1,1),
	ifelse( v_ca == 3, c(1,1,0,0),
	ifelse( v_ca == 1, c(1,0,0,1),
	ifelse( v_ca == 4, c(1,0,0,0),
	c(0,0,0,0) ))))

【他に思いついたもの・試してみたもの】
・ 二次元配列にForで逐一数値を入れていく
 → 実行速度に問題がありそうですし、可能なら関数で(一括で)実現したいです。
・ "1,1,1,1"などを文字列で一旦列に格納し tidyr::separate で列分割した後に数値に変換
 → できれば数値で処理したいので後回しにしています。
・ 3次元配列
 → 書き方が悪いのか方法として適していないのかは分かりませんが、思うような結果は得られませんでした。

どうぞよろしくお願いします。

パッケージの内容を微変更したいが新関数の名前空間が解決されない

kagakuma (2018-04-09 (月) 11:58:42)

・質問
ダウンロードしてきたパッケージの関数をedit()で編集した際に元のパッケージの名前空間上で上書きしたい。
・背景
MuMInのdredge()をよく使うのですが、元のglmが20変数くらいあると10日くらいかかります。
せめていまどれくらい進んでいるかを表示させたくて、edit()を使ってcat()を追加してから保存しようとするのですが、名前空間namespace::MuMIn::dredgeに保存できません。

MuMIn::dredge <- edit(MuMIn::dredge)

あるいは

MuMIn::dredge <- edit(dredge)

と打つと

Error in MuMIn::dredge <- edit(MuMIn::dredge) : object 'MuMIn' not found

と返ってきます。
それではglobalでいいかと思ってnewdredge()として保存しようとすると、今度は内部でMuMInの何かの変数を参照しているようで結局名前空間MuMInへのアクセスが必要です。
・調べたこと、試したこと
MuMInのインストールおよびパッケージ利用チェックボックスは確認しています。
"R language edit function"では結構調べましたが、ピンポイントな記事は見当たらず「新しくパッケージをつくる」というのが最適な気もしています。
時間がなかったので、MuMInのパッケージを解体してソースコードを直接いじって新しい関数として利用することでアドホックには解決しました。ただ作業ディレクトリが変わったり一回ずつ関数のいる場所にアクセスしないといけないなどいろいろ不便があるので、可能ならパッケージそのものを変更したいと思った次第です。
・環境

R version 3.4.2 (2017-09-28)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

Rstudio Version 1.0.153

以上です。情報ををお待ちしております。

grepと%in%とgrep

R歴3ヶ月 (2018-04-07 (土) 14:21:12)

オーム社の「Rによる、やさしいテキストマイニング入門」を勉強をしています。ただ命令の解説が少な目で、ところどころでつまづいてしまい、先に進めないでいます。 https://sites.google.com/site/yasatekir/

例えばトランプ大統領の演説のポジティブな単語を調べる命令が紹介されていますが、単語を抽出するのに%in%を使って"TRUE"を検索すると単語の個数が分かるというものだと書かれていて、そこでgrepという命令の目的は分かるつもりですが、その前の%IN%は何をしているのでしょうか?

# 分析データからポジティブな単語を抽出
Trump.positive <- Trump.cleaned %in% positive$word
Trump.positive.2 <- grep("TRUE", Trump.cleaned %in% positive$word)
# 分析データにおけるポジティブな単語の数を計算
length(Trump.positive.2)

drm関数でのclusterエラー

つぐ太郎 (2018-04-05 (木) 11:24:06)

何度もつかってきた下記のdrm関数でclusterエラーが出ます。ネット検索ではRの再インストールで対処される記事がありましたが、改善されませんでした。

> chem <- c(0, 0.65, 3.5, 15.3)
> tumor <-c(0.0208, 0.0638, 0.7826, 0.9787)
> Obs <- data.frame(x=chem, y=tumor)
> mx <- drm(tumor ~ chem, data=Obs, fct=LL.2())
 drm(tumor ~ chem, data = Obs, fct = LL.2()) でエラー: 
  Cluster not specified. Use e.g. y ~ x + cluster(id)

よろしくご教示ください。

多重代入法で推定したモデルの適合度を測る方法

haras (2018-03-29 (木) 16:54:24)

miceパッケージを用いて、多重代入法によって欠測値を補定し、ロジスティック回帰分析を行いました。
poolコマンドでパラメータは推定できたのですが、このロジスティック回帰モデルが、元の欠測値を含むデータにどの程度適合しているか(擬似決定係数)を調べる方法をご教授いただけないでしょうか。

パラメータを指定したモデルの決定係数を求める方法

haras (2018-03-29 (木) 12:51:00)

以下のようなロジスティック回帰モデル
logit(p) = a+b1x1+b2x2
がある時に、a、b1、b2の値を指定したモデルが、特定のデータセットに対してどの程度説明力があるか、
疑似決定係数を見たいのですが、Rで行う方法はございませんでしょうか。
ご存知の方、ご教授いただけますと幸いです。

2次元マトリックスより指定した値以上の要素の行番号、列番号、値を抽出する

(2018-03-28 (水) 10:51:16)

2次元マトリックスより指定した値以上となっている要素の行番号、列番号、その値を抽出し、
データフレームに格納したいのですが、どのようなコードを書けばよいでしょうか?
なお実際の2次元マトリックスは400×800で数千個あるため、for文で一つずつループするのは処理時間を考えると非現実的です。
2次元マトリックスの例

matrix(1:12,3,4)

2次元マトリックスの例

     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12

値が9以上の場合、下記データフレームを生成したい

row,col,val
3,3,9
1,4,10
2,4,11
3,4,12

以上、よろしくお願いいたします。

パッケージのインストール

bears (2018-03-25 (日) 20:36:12)

既出の課題かと思いますが、解決策を見つけられなかったので教えてください。
Rのパッケージがinstall.packagesでできなかった際に、圧縮ファイルを読み込もうとしてもエラーでできません。

Installing package into ‘/Users/ーーーーーー/Library/R/3.2/library’
(as ‘lib’ is unspecified)
Error in install.packages : type == "both" cannot be used with 'repos = NULL'

となり、ダウンロードできません。
どうすれば良いか教えてください。

Rコマンダーをインストールしたい

デコポン (2018-03-25 (日) 06:33:18)

私は、ウィンドウズ32ビット版を使用しています。Rコマンダーをインストールしようとしても、できません。Rcmdrをインストールできたのですが、なぜかエラーメッセージで、「R3.50版で開発された」としか出てきません。もう、どうしたらいいのか、全く分かりません。どんなことでもいいですから、教えて下さい。

ロジスティック回帰分析でのオッズ比、95%信頼区間

nabeo (2018-03-09 (金) 23:10:43)

ロジスティック回帰分析で、説明変数を連続変数とした場合のオッズ比、95%信頼区間算出についての質問です。
通常の解析では、1単位変化あたりのオッズ比、95%CIが算出されると思います。例えば、PT-INRで出血を予測するといった場合には、通常PT-INRは1前後の非常に狭いレンジに存在する変数なので、1単位の変化では非常に大きいオッズ比が示されると思います。これを0.1単位あたりの変化に差し替えた場合の解析方法をご教示いただけますでしょうか?
手計算でどうするかについては紹介しているウェブページは見つけたのですが、R上での操作が分かりません。
何卒よろしくお願いいたします。

boxplotとbeeswarm併用時のy軸の設定

tanaka (2018-03-07 (水) 23:47:32)

箱ひげ図に散布図を重ねて描いています。以下のようなコードで作動するのですが
boxplot(データ, names=c("data1", "data2"), main = '題名', las = 1)
beeswarm(データ,pch = 16,main = '題名',add = TRUE)
ここでy軸のレンジを決めるため以下のようにylim=c(0.01 0.03)を入れます。
beeswarm(データ,pch = 16,main = '題名', ylim=c(0.01 0.03), add = TRUE)
すると、「エラー: 想定外の数値定数です in "beeswarm(データ,pch = 16,main = '題名', ylim=c(0.01 0.03"」というエラーが出ます。
どなたか解決策をご教示いただけないでしょうか

動画ファイル(mpg)を読み込む方法

(2018-03-07 (水) 09:30:14)

動画ファイル(mpg)より一定時間毎の画像を切り出し
RGBの分布の変化を表す図を
作りたいのですが適切なパッケージ、方法がありましたらご教授お願いいたします。

経時変化のプロット

akki (2018-03-02 (金) 15:50:56)

R初心者です。経時変化のプロットをRで書きたいです。本などで調べてもなかなか自分の思うような内容が見つからず,こちらの掲示板にたどり着きました。
以下はサンプルですが,例えば1行目はaさんが2015年4月に治療薬(number_prescription)が2剤処方されたということを示しています。
ここで2015年4月に治療薬が1剤の人は5人,2剤の人は4人,3剤の人は2人,4剤の人は1人,5剤の人は1人(合計13人)となります。
同じく2015年5月には1剤の人は7人,2剤の人は4人,3剤の人は2人,4剤の人は1人(合計14人),
2016年6月には1剤の人は9人,2剤の人は5人,3剤の人は2人,4剤の人は2人,5剤の人は1人(合計19人)となります。
治療薬数ごとの割合(つまり 1剤は2015年4月は5/13=38.46%,2015年5月は7/14=50%,2015年6月は9/19=47.37%,
2剤は2015年4月は4/13=30.77%,2015年5月は4/14=28.57%,2015年6月は5/19=26.31%)
のプロットを経時的(2015年4月,5月,6月・・・・本当はもっと長期間になります)に書きたいのですが,どのようにすればいいでしょうか?
そしてもし可能であれば,治療薬数ごとに95%信頼区間(エクセルであればCONFIDENCE.NORM(0.05,standard_dev,size)で算出するもの)も表示させたいのですが,こちらもRで可能でしょうか?
95%信頼区間は可能であればなので,まずは経時変化がプロットできればありがたいです。
もし不足情報がありましたらお知らせください。初心者ゆえご迷惑をおかけしますが,どうぞよろしくお願いいたします。

    month id number_prescription
1  201504  a                   2
2  201504  b                   1
3  201504  c                   1
4  201504  d                   3
5  201504  e                   5
6  201504  f                   1
7  201504  g                   2
8  201504  h                   1
9  201504  i                   2
10 201504  j                   2
11 201504  k                   3
12 201504  l                   4
13 201504  m                   1
14 201505  a                   1
15 201505  b                   3
16 201505  d                   2
17 201505  e                   1
18 201505  f                   1
19 201505  g                   1
20 201505  i                   1
21 201505  k                   4
22 201505  m                   3
23 201505  n                   2
24 201505  o                   1
25 201505  p                   1
26 201505  q                   2
27 201505  r                   2
28 201506  a                   2
29 201506  c                   1
30 201506  d                   4
31 201506  g                   3
32 201506  h                   1
33 201506  j                   1
34 201506  k                   1
35 201506  m                   2
36 201506  n                   3
37 201506  p                   1
38 201506  q                   5
39 201506  s                   2
40 201506  t                   1
41 201506  u                   1
42 201506  v                   2
43 201506  w                   2
44 201506  x                   1
45 201506  y                   1
46 201506  z                   4
  • データフレームの名前が d だとして,以下のようなプログラムを。信頼区間の表示?意図がわからない。具体的に,挙げられている数値から計算すると幾つになるやつ?ということで,よくわからないので,パス。 -- 河童の屁は,河童にあらず,屁である。 2018-03-02 (金) 22:28:45
    tbl = xtabs(~number_prescription+month, d)
    total = colSums(tbl)
    p = t(tbl)/total
    matplot(p, type="l", xlab="month", ylab="%", xaxt="n")
    axis(1, at=1:ncol(t), labels=colnames(t))
    legend("topleft", legend=c(1:nrow(t)), col=1:nrow(t), lty=1:nrow(t))

matplot999.png

sem

yoshida931 (2018-03-01 (木) 18:49:16)

Rで共分散構造分析・構造方程式モデル
「潜在変数を仮定するモデル」同じサンプルで、同じようにやったのですが、Estimate の値が異なりました(+-が逆転).何が間違っているかご指導ください.宜しくお願いいたします.
私がやったら以下のような解になりました.

> ans <- sem(model,cor(dat),10)
> summary(ans)

 Model Chisquare =  1.925355   Df =  5 Pr(>Chisq) = 0.8593742
 AIC =  21.92536
 BIC =  -9.58757

 Normalized Residuals
      Min.    1st Qu.     Median       Mean    3rd Qu.       Max. 
-0.3976000 -0.0000002  0.0155300  0.1221000  0.2435000  0.6971000 

 R-square for Endogenous Variables
    v1     v2     v3     v4     v5 
0.6297 0.0809 0.4573 0.0583 0.0506 

 Parameter Estimates
      Estimate   Std Error z value    Pr(>|z|)             
path1  0.7935558 0.4882341  1.6253592 0.10408604 v1 <--- F1
path2 -0.2843858 0.3849962 -0.7386717 0.46010637 v2 <--- F1
path3 -0.6762525 0.4525192 -1.4944171 0.13506663 v3 <--- F1
path4 -0.2414672 0.3860898 -0.6254172 0.53169727 v4 <--- F1
path5  0.2248359 0.3864879  0.5817413 0.56074096 v5 <--- F1
s1     0.3702693 0.6626860  0.5587401 0.57633909 v1 <--> v1
s2     0.9191248 0.4485423  2.0491376 0.04044867 v2 <--> v2
s3     0.5426826 0.5322169  1.0196644 0.30788765 v3 <--> v3
s4     0.9416935 0.4546109  2.0714275 0.03831887 v4 <--> v4
s5     0.9494489 0.4567576  2.0786712 0.03764758 v5 <--> v5
  • 追記:妙なところで改行してしまい、見づらくなってしまいました.申し訳ありません、投稿文書の書式を読み直します. -- yoshida931 2018-03-01 (木) 18:57:51
  • 符号だけが違って絶対値が同じなら,なんの問題もありません。コンピュータでの計算過程で起きるちょっとした違いで起きることです。考えて見てくください,図に書いたら,左右・上下が逆になっていうだけでしょう?安心して解釈を進めてください。 -- 河童の屁は,河童にあらず,屁である。 2018-03-01 (木) 23:38:52
  • 河童の屁は,河童にあらず,屁である様.いつも明朗快活に即答をいただき感謝しております.何かのトラブルかと思い不安になっておりました.それでは安心して学習を進めさせていただきます.ありがとうございました. -- yoshida931 2018-03-02 (金) 08:36:29

RODBC接続でSQL Serverのテーブル内の1つのカラムに入った大きなデータをすべて読み込めない

Sa (2018-02-10 (土) 23:34:22)

初めて質問します。不慣れですがよろしくお願いします。
SQL Server 2014にAというテーブルを作成し、1つのカラムに約5万個の数字(最大5桁の整数でマイナスあり)をカンマ区切りにして入れました。例えば、"1,2,3,4・・・,50000"のような1つの文字列データです。
このカラムの値を、R Studio(ver.1.1.383)でRODBCパッケージを使いSQL Serverに接続してselect文で読み込むと、15000個程度のところで切れてしまい、5万個すべてを読み込めません。RODBCの性能上の問題と考えていますが自信はありません。同じような経験をされた方がいらっしゃいましたら原因と対策をお教えいただけないでしょうか?何卒よろしくお願いします。

integer overflow

haru (2018-02-05 (月) 14:25:16)

大きな数値をRで扱っています。sumなどの関数で計算した場合, NAs produced by integer overflowというアラートが出て,計算結果がNAとなります。
?integerで確認したところNote that current implementations of R use 32-bit integers for integer vectors, so the range of representable integers is restricted to about +/-2*10^9: doubles can hold much larger integers exactly.となっており,+/-2*10^9を超えてしまったので計算ができないようです。この場合,Rでは計算することができないのでしょうか?
何か解決策があればご教示いただけると幸いです。よろしくお願いします。

作図デバイスを新しく開く関数をrmarkdown で使った時に、グラフが描画されない

くらじろう (2018-02-04 (日) 11:41:04)

Google で検索しても関連する話が見つからなかったので、ご存じなら教えてください。R3.4.3 32bit をWin8 で使っています。rmarkdownはver1.8です。
内部で作図デバイスを開く関数(windows関数) を使ってグラフを描く関数を用意し、それをrmarkdown で実行すると、変換後のHTML ファイルやword ファイルにグラフが描かれません。
グラフ描画の関数は、こういうもの。

tfunc <- function(){
windows(10, 10)
plot( sin(0:100), type="l" )
}

これをrmarkdown で使います。

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
source("tfunc.R")
```
```{r echo=TRUE, out.width=600}
tfunc()
```

作図デバイスを開く行をコメントアウトするとHTML にグラフが描かれますが、今のままだと何も描かれないHTML が出力されます。
グラフを描く一連の処理を関数化して、素のR で作業する時とrmarkdown で文書化する時とで使いまわしたいのですが、それができません。解決方法ご存じないでしょうか。

rJavaの読み込みエラー

dk (2018-01-04 (木) 10:32:56)

MacOS High Sierra/R version 3.4.2
この環境下で、rJavaの読み込みに失敗します。
エラーコードは下記のとおりです。

> library(rJava)
 エラー: package or namespace load failed for ‘rJava’:
  .onLoad は loadNamespace()('rJava' に対する)の中で失敗しました、詳細は: 
  call: dyn.load(file, DLLpath = DLLpath, ...) 
  error:  共有ライブラリ '/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so' を読み込めません: 
  dlopen(/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: @rpath/libjvm.dylib
  Referenced from: /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
  Reason: image not found

rJavaのインストールは問題なかったのですが、ロードが出来ません。
エラーコードは「imageがありません」ということですが、意味がわかりません。どなたかご教授いただけないでしょうか?

mac R csvファイルの読み込み、文字の表記おかしい

dk (2017-12-27 (水) 22:15:52)

あるフィールドに日本語と漢字と英語が混じっているデータ(csvファイル)を読み込むと、コンソール上で文字化けしたように表記されます。ちなみに読み込みの際にはread.csv()関数でencoding UTF-8/CP932指定やcolClasses = "character"オプション指定などを行ない、エラーは表示されていません。コンソール上の表記がおかしいのです。対処法など教えてください。

数量化III類のplotにおいてラベルが重ならないようにしたい

kei (2017-12-14 (木) 15:49:26)

始めて投稿させていただきます。
Win10にてR 3.4.0を使用しております。
下記のように数量化III類を行い、plotするとデータ数が多いためラベルが重なってしまいます。

source("http://aoki2.si.gunma-u.ac.jp/R/src/qt1.R", encoding="euc-jp")
source("http://aoki2.si.gunma-u.ac.jp/R/src/qt3.R", encoding="euc-jp")
cat.dat <- read.csv("data.csv",head=T,row.names=1)
cat.dat[, 1:10] <- lapply(cat.dat, factor)
result.qt3 <- qt3(cat.dat)
plot(result.qt3, which="sample.score")

そこでggplotを試したのですが、以下のようにエラーメッセージ表示されます。

ggplot(result.qt3, which="sample.score")+geom_point()
エラー: ggplot2 doesn't know how to deal with data of class qt3

何か良い方法はありますでしょうか。
ご教示いただけますと幸いです。

RstudioでのShift-JISのCSVファイル読み込みについて(文字化け?)

佐々木 (2017-12-13 (水) 07:02:27)

初投稿の佐々木と申します。お世話になります。
探し回りましたがどうしても分からないため、こちらで質問させて頂きます。

【状況】
(1)手元にShift_JISで書かれたcsvファイルがあります(文字コードはnkfで確認しました)
(2)以下の方法で、readrライブラリのread_csvを使って、encodingはCP932でファイル読み込みを行いました

library(readr)
train <- read_csv("train.csv", locale = locale(encoding = "cp932"))

(3)ところがコンソールで変数を開けてみると、セルの値が例えば<U+7CF8><U+9B5A><U+5DDD>のように化けてしまいます(厳密には文字化けとは言わないかもしれませんが・・・)。しかしヘッダーだけはちゃんと日本語になります。
【質問】
セルの値を日本語で表示できる方法を教えてください。
ご多用中恐れ入ります。何卒よろしくお願いいたします。
【参考】

> sessionInfo()
R version 3.4.1 (2017-06-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United 
States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] forcats_0.2.0   stringr_1.2.0   dplyr_0.7.4     purrr_0.2.4     readr_1.1.1     tidyr_0.7.2     tibble_1.3.4   
[8] ggplot2_2.2.1   tidyverse_1.2.1

tidyverseのinstall/loadについて

tyrantyas (2017-12-11 (月) 17:14:29)

環境

Mac OS High Sierra
R studio: 1.1.383
R: 3.4.2

上記の環境にてtidyverseをインストール(install.packages("tidyverse")しようとしたところ、以下のエラーメッセージが出てしまいます。

There are binary versions available but the source versions are later:
      binary source needs_compilation
psych 1.7.3.21  1.7.8             FALSE
broom    0.4.2  0.4.3             FALSE
URL 'https://cran.rstudio.com/src/contrib/broom_0.4.3.tar.gz' を試しています 
Content type 'application/x-gzip' length 1397648 bytes (1.3 MB)
==================================================
downloaded 1.3 MB

エラー: package or namespace load failed for ‘tidyverse’ in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]):
 ‘broom’ という名前のパッケージはありません 
実行が停止されました 

broom単体をインストール(install.packages("broom"))しようとしても上記と同じエラーが出てインストールができません。
上記の通りのため、library(tidyverse)としても当然loadができない状態です。
binaryとsourceのバージョンに差がある(sourceのバージョンのほうが上)のが問題のように読めるのですが、どのように対処すればいいのかおわかりになりますでしょうか。

unknown timezone 'default/Asia/Tokyo' error について

ruru (2017-11-12 (日) 09:58:40)

初投稿です.お世話になります.
Mac OS High Sierra をクリーンインストール後 Homebrew で R( 3.4.2 ) を install ,その後 terminal からR を立ち上げ

install.packages("RcmdrPlugin.EZR", dependencies=TRUE)

で plug in をinstall すると標題のエラーが出て正常に終了できません.
terminal 上の表記を見る限り

strptime(xx, f <- "%Y-%m-%d %H:%M:%OS", tz = tz) で警告がありました:
  unknown timezone 'default/Asia/Tokyo'

こちらの error が影響していそうなのですが web 上で解決策を見つけることができませんでした.別の PC(MacOS Sierra 同じ環境で、Homebrew, R は最新の Version です)ではこの様な現象は出ていません.tcltk2 aplpack Rcmdr この3つのパッケージが 上記の error によりinstall できていない表示になっております.ご存知の方がいらしたらお願いします.

Rmarkdown ファイルについて

pandapan (2017-10-26 (木) 13:36:13)

今まで通常通り、rmdファイルで保存できていたのに急に25ファイルや、26ファイルになっていしまいます。どのように変更したらrmdファイルで保存できますか。

group_byで作成されたデータ中のリストに適用した関数をグループごとでも適用したい.

appi (2017-10-22 (日) 12:31:04)

初投稿です.お世話になります.
mac OS Sierra 10.12.6にて、R 3.3.0を使用しております。
前置きが長くなりますが,最後までお読みいただけると幸いです.
tidyverseパッケージを用いて列"Ori_s_zone", 列"Dest_s_zone"によってグループ分けされたnested data frameが以下のようにあります.

od_pair <- test %>%
 group_by(Ori_s_zone, Dest_s_zone) %>%
 nest()

この時,od_pairの構造は以下のようになっており,一つの行には一つのOri_s_zone, Dest_s_zoneが対応しますが,その右側に元データの"test"上では12列分や8列分など複数列となっていたものが一つの行に格納されています.

# A tibble: 6 x 3
  Ori_s_zone Dest_s_zone               data
       <int>       <int>             <list>
1          1           2 <tibble [12 x 76]>
2          1           3  <tibble [8 x 76]>
3          1           4  <tibble [9 x 76]>
4          1           5  <tibble [5 x 76]>
5          1           6  <tibble [5 x 76]>
6          1           7  <tibble [7 x 76]>

ここで,"data"の中の"リスト"にある各列について計算を施したく,pairを変数として以下の関数を定義します.

fn1 <- function(pair) {
 od_pair$data[[pair]]$d <- exp(od_pair$data[[pair]]$c)
  }

つまり,"data"list内の"c列"と"d列"に対して計算を施しています(本当にしたい計算はもう少し複雑ですが,ここでは簡略化しております).

この計算を,さらに,"グループごと(異なる列a, 列bごと)"に施したいのですが,その計算がどのような方法を試しても出来ずに困っております.
いくつか試したものと,そのエラー内容をお示し致します.

(1) lapply(od_pair$data[[1:6]],fn1)
od_pair$data[[1:6]] でエラー: 
   再帰的な添字操作がレベル 3 で失敗しました 
(2) od_pair %>% dmap_at(c(関数を適用する列名全て)), fn1)
エラーは出ませんが,何故か関数が適用されず,計算前の値が出力されます
(3) od_pair %>% dplyr::summarise_each(funs(fn1),関数を適用する列名全て)
エラー: All select() inputs must resolve to integer column positions.

(2)について:https://heavywatal.github.io/rstats/purrr.html にて,「data.frameかgrouped_dfを受け取り、列ごとに.fを適用してdata.frameを返す」とあったため,dmapを用いるのかと思い,かつ,列名を指定する必要があるのかと思い,http://delta0726.web.fc2.com/packages/data/purrrlyr.html を参考にこのようなコードを書きましたが,上手くいきませんでした.

まとめますと,リスト内に適用した関数を更にグループ単位で適用するためのコードが良いものが見つからず困っております.せめてエラーの内容だけでもわかればいいのですが,それもよく自分の中で理解できずにいます.
コード,エラー内容の解釈等どのようなアドバイスでも良いので,ご回答いただけると幸いです.
よろしくお願い致します.

マルチレベル・ロジスティック回帰を行う方法

yellow12 (2017-10-17 (火) 09:33:29)

大変お世話になっております。Rでマルチレベル・ロジスティック回帰を行う方法をご教示いただきたく、投稿させていただきました。

仮の例として、様々な学校での生徒のデータを分析する際に、レベル1=生徒個人、レベル2=学校として、マルチレベルの2項ロジスティック回帰を行いたいと考えております。
このとき、レベル2の変数(例えば1クラス当たりの生徒数等)が生徒の満足感(1=満足、0=不満足)に与える影響を見ようとした場合、Rで分析を実行するにはどのような方法があるでしょうか。

lme4パッケージのlmer関数が使えそうなのですが(例えば以下のリンク等)、
https://www.slideshare.net/yutamura1/ss-42303827
レベル2の分散をランダム効果として組み込むまでで、その分散がどのようなレベル2変数に起因するのかまで分析する手法は見つかりませんでした。
Rでの分析方法をご存知の方がいらっしゃいましたら、ご教示いただけますと幸甚です。
何卒よろしくお願い申し上げます。

plotで描く曲線がガタガタする

サンマ (2017-10-13 (金) 15:39:59)

お世話になります。以前から気になっていたのですが、細かく振動する曲線をplotで描くと、曲線がガタガタして描かれます。Metafileで出力してもガタガタは解消されません。Metafileでこのような現象が起こるということは、出力精度の問題でしょうか。どうすればもう少し滑らかな曲線を描けるのでしょうか。ご教示いただけましたら、幸いです。

stepwiseの種類と方法

sau (2017-10-10 (火) 15:31:21)

Rと直接関係のない質問で恐縮です。
多変量Cox解析でbackward stepwise eliminationを行う際にinclusion criteriaが0.05, exclusion criteriaが0.20というのは、単変量解析でp<0.05となる因子のみを集めて多変量解析を行い、その中でp>0.20となるものがあれば除去し、再度残りで多変量解析を行い、すべてがp<0.05となるまで繰り返すという手法と考えて宜しいでしょうか?

同じカテゴリで番号をふる

りんご (2017-10-06 (金) 07:25:19)

初歩的な質問ですみません。
同じカテゴリのものに同じ番号をふりたいのですが,簡単にかける方法はあるでしょうか?
period <- c(2007,2010,2011,2011,2013,2014,2014,2014,2014,2015,2016,2016,2016)
2007に1,2008に2,2009に3,2010に4,2011に5,2012に6,2013に7,2014に8,2015に9,2016に10というふうにふりたいです。(この例では2008,2009,2012は存在しませんが,そのように値が存在しないものも含めて番号をふりたいです。)
period$number <- 0
period$number <- ifelse(period$number =="2007",1, period$number)
・・・などというコードを考えてみましたが,すべてを書き出すとかなり長くなるので(実際はこの例よりもずっと多くの期間を対象としたいので),簡潔にかける方法がありましたらご教示いただけないでしょうか?どうぞよろしくお願いいたします。

nnetでpredict実行時のtype指定

べのたみ (2017-09-28 (木) 00:13:11)

nnetを使ってみています。
目的変数をyes,noの二値にしたのでpredict実行時には通常type="class"を指定するのだと思うのですが、type="raw"を指定しても1列分の数値が結果として出てきます。
この値は何を表しているのでしょうか?yesになる確率?noになる確率?
よろしくお願いします。

Rでのシグマの書き方

yukiri (2017-09-27 (水) 15:30:39)

R初心者です

x <- c(7,6,11,11,12,8,5,18,7,8,3,5,5,10,3,10,7,8)
y <- c(5,3,6,7,3,6,2,3,2,5,2,1,4,7,2,6,4,6)

Rで下の計算をしたいのですが,どのように書けばよいでしょうか?
Σ[xi×Σyj]
一つ目のΣのiは1から18まで,二つ目のΣのjはi+1からi+3まで

コンジョイント分析用の直交表について

Meda (2017-09-21 (木) 16:28:36)

下記のスクリプトで実行すると、想定外の直交表が出力されてしまいます。
理由と改善方法が分かる方、教えていただけますでしょうか?

【やりたいこと】
3因子(各3水準:A〜C)、1因子(2水準:D)を使ってコンジョイントカードを作りたい。

【悩み】
生成されたカードを見ると、どのカードを見ても、A〜Cの因子には「2」という水準が見当たりません。(他のサイトで調べるとカードは9パターン出来るようなのですが、このスクリプトでは8パターン生成されている点も気になります)

-- スクリプト --
library(conjoint)
x <- expand.grid(
  A = c(1,2,3),
  B = c(1,2,3),
  C = c(1,2,3),
  D = c(1,2)
)

ccard <- caFactorialDesign(data=x, type="orthogonal")

-- 出力結果(コンジョイントカード) --
    A  B  C  D
#1  1  1  1  1
#2  3  1  1  1
#3  1  3  3  1
#4  3  3  3  1
#5  1  3  1  2
#6  3  3  1  2
#7  1  1  3  2
#8  3  1  3  2

ある変数について回答者を上位30%、中間、下位30%と3群に分けるにはどうすればよろしいでしょうか

kana (2017-09-10 (日) 16:57:19)

題名のとおりになります。無知で申し訳ありません。

caretでmxnetを使えるようにするにはどうすればよいでしょうか?

oobo (2017-09-10 (日) 05:33:27)

caretの使用説明書には、”mxnetパッケージはまだCRANにはありません。インストール手順については、http://mxnet.ioを参照してください。”とあるのですがどうすればいいのでしょうか?初心者です宜しくお願い致します。

有効数字の設定

aice (2017-07-23 (日) 19:19:07)

使用するオブジェクト・変数の数が多かったり、プログラムが複雑な場合、実行する前の初期設定や関数等で有効数字を一括に設定する方法はないでしょうか。

miceで補完した欠損値を統合した後のデータはわかるのでしょうか?

trauma (2017-08-24 (木) 11:51:24)

欠損値の補完をmultiple impution解析をmiceでしようとしているのですが、補完した欠損値のデータを統合したあとのデータはわかるのでしょうか?
それぞれのデータセットはわかるのですが、統合したあとのデータがわからないと、欠損値を補完したあとの解析ができないのですが。
以下のように行っているのですが、可能でしょうか?
どうかご教示お願い申しあげます。

library(mice)
# 欠損値を補完したデータセットの作成
imp_data<-mice(dat1, m = 5)
# 分析
fit <-with(imp_data, lm(reading ~ grammar + vocab))
# 分析結果の統合
summary(pool(fit))

rmsの欠損値の補完でデータを減らすとエラーがでます。

trauma (2017-08-22 (火) 23:35:41)

rmsでデータの欠損値の補完を行っています。元データでは結果がでるのですが、サブグループ解析でデータ数を減らすとエラーメッセージがでます。内容がまったくわからない状態です。どのように対応すれば解析できるでしょうか。
以下がエラーメッセージです。どうかご教示いただけたら幸いです。

#################################################################################################################
> # Conducting multiple imputation, without this, PS won't be created unless all variables have non-missing data
> # Imputing missing data 
> #################################################################################################################
> 
> areg = aregImpute(ef ~ age+gender+ transporter + sbp + hr + gcs + btf +tae+intubation +hystory, data=AIS, n.impute=5, x=TRUE)
Iteration 1 
 `[<-`(`*tmp*`, , (j + 1):(j + m), value = w) でエラー: 
   添え字が許される範囲外です 
 追加情報:  警告メッセージ: 
1:  rcspline.eval(z, knots = parms, nk = nk, inclx = TRUE) で: 
  could not obtain 3 interior knots with default algorithm.
 Used alternate algorithm to obtain 3 knots
2:  rcspline.eval(z, knots = parms, nk = nk, inclx = TRUE) で: 
  could not obtain 3 interior knots with default algorithm.
 Used alternate algorithm to obtain 4 knots
> fit.mi <- fit.mult.impute(ef ~ age+gender+ transporter + sbp + hr + gcs + btf +tae+intubation +hystory, lrm, areg, data=AIS)

library()ができません

初学者A (2017-07-28 (金) 14:28:10)

PCが非常に苦手な初学者です。
研究の関係でRで統計を行う必要があるのですがまったくすすめることができません。お力添え頂けますと幸いです。

library()で、パッケージの確認をしようとすると以下のような文章がでてきます。
また、実施ごとに表示されるファイル名が毎回異なるのも理由はわかりません、、、

> library()
 file(con, "w") でエラー:  コネクションを開くことができません 
 追加情報:  警告メッセージ: 
 file(con, "w") で: 
   ファイル 'C:\Users\夏海\AppData\Local\Temp\Rtmp06WNzx\RlibraryIQR357834512f1f' を開くことができません: No such file or directory 

> library()
 file(con, "w") でエラー:  コネクションを開くことができません 
 追加情報:  警告メッセージ: 
 file(con, "w") で: 
   ファイル 'C:\Users\夏海\AppData\Local\Temp\Rtmp06WNzx\RlibraryIQR357839e71fab' を開くことができません: No such file or directory 

> library(lib = .Library) 
 file(con, "w") でエラー:  コネクションを開くことができません 
 追加情報:  警告メッセージ: 
 file(con, "w") で: 
   ファイル 'C:\Users\夏海\AppData\Local\Temp\Rtmp06WNzx\RlibraryIQR35782a1548c7' を開くことができません: No such file or dire

ディレクトリは

> getwd()
[1] "C:/R"

libraryの指定ファイルは以下の通りでした。

> .libPaths()
[1] "C:/R/R-3.4.1/library"

Rではなく、エクスプロ―ラーから上記の"C:/R/R-3.4.1/library"を確認するとbase等のパッケージが確認できるので、インストール自体はできていて、libraryにちゃんと入っていると思うのでWorkしない理由が分からないです。。。
ただ、何回かRのインストールとアンインストールを繰り返してしまい不要なファイル等がどこかにできてしまっているかもしれません。。。(確認できる範囲では全て削除していますが、、)

どうか、ご教示いただければ幸いです。

使用環境は以下の通りです。

R version 3.4.1 (2017-06-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 15063)

Matrix products: default

locale:
[1] LC_COLLATE=Japanese_Japan.932  LC_CTYPE=Japanese_Japan.932    LC_MONETARY=Japanese_Japan.932 LC_NUMERIC=C                  
[5] LC_TIME=Japanese_Japan.932    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] compiler_3.4.1

Name属性付きのベクトルからNameと値の一覧を得たい

ヘッツァー (2017-07-28 (金) 05:10:31)

数値ベクトル(100,300,150,200,400)があり夫々の値に対してapple,orange,grape,mango,pineappleと言うnames属性が付いているとします。

この時、

apple 100
orange 300
grape 150
mango 200
pineapple 400

のように整列したデータフレームを作成するにはどのようにしたら良いでしょうか?

よろしくお願いいたします。

heatmapのサイズ調整について

kuro (2017-07-26 (水) 11:58:24)

heatmap関数を用いてヒートマップを作成しているのですが、列のサイズが大きいデータのため非常に縦長(1:3以上)のヒートマップを作成したいと思っています。
色々試してみましたが、余白ばかりが長くなったり、文字が潰れたりして上手く行きません。
heatmapでの設定方法か、もしくは他の関数があれば教えて下さい。
コマンドは以下を使用しています。

heatmap(
 as.matrix(data),  
 Rowv = TRUE, 
 Colv = NA, 
 distfun = dist,
 hclustfun = hclust,
 col = heat.colors(255),
 margin=c(4,4)

決定木の作図

bbb (2017-07-26 (水) 11:45:30)

caretパッケージで決定木(method=rpart)を行っています。
作図するために、rpart.plotを用いて行っていますが、上手くいきません。
①各ノードにサンプル数Nとその内訳(1の数と0の数)
②各ノードにそれぞれの(1の数/1と0の総数)、つまり1の割合
を図示したいのですが、どなたかお力を貸していただけないでしょうか。
イメージとしては
http://cdn-ak.f.st-hatena.com/images/fotolife/t/tomoshige_n/20140720/20140720163316.jpg
です。何卒よろしくお願いいたします。

有効数字の設定

aice (2017-07-23 (日) 20:13:38)

使用するオブジェクト・変数の数が多かったり、プログラムが複雑な場合、実行する前の初期設定や関数等で有効数字を一括に設定する方法はないでしょうか。

lower.tail

y931 (2017-07-21 (金) 19:02:32)

http://www.okadajp.org/RWiki/?R%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E7%A2%BA%E7%8E%87%E5%88%86%E5%B8%83

Rの確率分布システム
R はさまざまな確率分布に関する関数を持つ。

その他のオプションパラメータ
lower.tailの既定値は FALSE
とありますが

Rのhelpでは
lower.tail
logical; if TRUE (default), probabilities are P[X ≤ x] otherwise, P[X > x].

とあり、既定値はTRUEになっていますが・・・
どう考えたらよいでしょうか?
qnorm ( 0.975 )
=1.959964
から考えてもhelpが正しいですよね?

複数行のデータを縦1列に並び替える

しょう (2017-07-17 (月) 16:16:23)

お世話になります。
mac OS Sierra 10.12.5で、R 3.4.1を使用しております。

ある測定器から、5msecごとに出力される測定データを、Rを用いて折れ線グラフにしようとしております。
測定データは、csv形式で作成されるのですが、1行につき8個ずつ(8列)データが作成されていきます。

つまり、測定順に
1行目 1 2 3 4 5 6 7 8
2行目 9 10 11 12 13 14 15 16
3行目 17 18 ...

こういった具合です。

今まではExcelでmod関数などを用いて、縦1列に並び変えてからRに持ち込んで描画していたのですが、
測定時間が数時間になるとエクセルでの手動処理にも時間がかかるようになり、
縦一列に並び変えるところからRで処理できれば、と思っております。

書籍やネットでも検索をしてみましたが、ちょうど当たるものが見当たりません。
行を指定して要素を取り出してみました( data [2, ]など) が、列名が一緒にくっついてきてしまい、
行き詰まっております。

どなたかご存知の方らおらましたら、ご教示いただけますと幸いです。
何とぞ宜しくお願い申し上げます。

RStudioでクロス表の表示エラー

y931 (2017-07-13 (木) 20:44:44)

RStudio Version 1.0.136
R Version 3.3.3

RStudio で次のようなデータフレーム作成した場合

A <- c ( 12, 10, 13 )
B <- c ( 20, 12, 16 )
C <- c ( 20, 15, 19 )
y <- data.frame (A,B,C)

グラフのタブが表れて、エクセルのようなクロス表が表示されていました.
しかし最近、その表内の行(1 , 2 , 3)と列(A , B , C)のラベルが表示されず、
ラベルセルが空白になるエラーが発生しています.

どなたか対処方法をご存知の方はお知らせください.
使用しているOSは、windows10 home, 64bit です.

文字列の置換について

yasyas (2017-07-13 (木) 18:23:00)

文字列を対応する値に変換したいと思っています。

例えば以下のような対応表があったとして、
dat <- data.frame(tar = letters[1:10], rep=10:1)
つまり"a"なら10, "b"なら9…という感じの対応表です。

置換したい文字列ベクトルが以下のように与えられているとします。
z <- c("c", "a", "b")

これを8,10,9という風な数字ベクトルに変換したいのですが、
for文を使わずにうまく変換する方法はありますでしょうか。

z <- dat[["rep"]][which(dat[["tar"]]==z)]
というようにやってみたのですが、うまくいかず。

lmerTestのエラー

ahagiwar (2017-06-30 (金) 13:35:08)

混合効果モデルの解析を行っています。lmerTestで混合効果モデルを解析したのですが下記の様なエラーメッセージが出て固定効果のp値を計算してくれません。ウェブで調べたのですが良くわかりませんでした。どなたか教えていただければ幸いです。

> m2041 <- lmerTest::lmer(STRESS ~ 1 | ID, data=df2)
> summary(m2041)
summary from lme4 is returned
some computational error has occurred in lmerTest
Linear mixed model fit by REML ['lmerMod']
Formula: STRESS ~ 1 | ID
   Data: df2

REML criterion at convergence: 1672.2

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-2.3088 -0.5454 -0.0319  0.6239  3.4587 

Random effects:
 Groups   Name        Variance Std.Dev.
 ID       (Intercept) 43.57    6.601   
 Residual             76.60    8.752   
Number of obs: 225, groups:  ID, 45

Fixed effects:
            Estimate Std. Error t value
(Intercept)   41.524      1.144    36.3

Rの記号変換ってどうなってるんだ?

ななな (2017-06-22 (木) 23:11:43)

Rって 1-metylhistidine っていう文字があったときに,X1.metylhistidine って勝手に変更されるのですが,どのように対処したらいいんでしょうか?

prcomp (主成分分析のPCの数について)

名無し (2017-06-21 (水) 01:15:13)

Rで下記のようなデータを用いて主成分分析を行いました.

[ある2グループのマウスの274代謝物の標準化を行ったデータ]
----------------------------------------------------------------
metabolite   A1   A2   A3   B1   B2   B3
Glycolate     2    2    3    4    4    5
.
.
.
.
(274代謝物質)
----------------------------------------------------------------

result <- prcomp(data,scale = F)
print(summary(result))

Importance of components:
                          PC1    PC2    PC3    PC4    PC5     PC6     PC7
Standard deviation     1.6199 1.1883 1.0904 0.9896 0.9271 0.80668 0.74706
Proportion of Variance 0.2846 0.1531 0.1289 0.1062 0.0932 0.07056 0.06052
Cumulative Proportion  0.2846 0.4377 0.5666 0.6728 0.7660 0.83658 0.89710
 
                          PC8     PC9      PC10
Standard deviation     0.70142 0.67599 3.233e-08
Proportion of Variance 0.05335 0.04955 0.000e+00
Cumulative Proportion  0.95045 1.00000 1.000e+00

ここで自分が疑問に感じたのが,代謝物質が274物質あるにもかかわらず,PCの数が10個しか存在しないのは,PC10の段階で累積寄与率が限りなく1に近づいたためにPC11以降が表示されなくなったのでしょうか?
代謝物が274個もあるのに,PCが10個しか表示されないのは,代謝物の濃度が限りなく低くいものが多く存在し,それらはPC11以降の主成分にほとんど影響をしていないと解釈してもいいのでしょうか?

RExcelの使い方

ろん (2017-06-08 (木) 01:34:55)

お世話になります。
RExcelを動かしたくてRインストールしてRExcel64Inst3.5.1_HomeAndStudentを落としたのですが、statconnDCOMが見つかりません。
http://sunsite.univie.ac.at/rcom/
このページがスタートだと思うのですが、ここからどう辿ればいいのでしょうか。

2つの文字列の共通部分を抽出する

初心者 (2017-06-04 (日) 22:58:57)

文字列1と文字列2があったときに
共通する最大長の文字列長を探し出す関数はあったりしますでしょうか?

例えば
str1 <- "abcd"
str2 <- "xxbcyy"
の場合
共通する最大長の文字列"bc"を抽出したいです。

RODBCパッケージのエラーハンドリングについて

R初心者 (2017-05-23 (火) 13:15:27)

RODBCを使用して、SQL Server 2012からデータを取得をしているのですが、エラーが発生した場合のハンドリングがうまくできません。
参考ページ(リンク名)に記載されているコード(下記)で、INSERTでキー重複が発生するようなSQLを実行させた場合でもキャッチされませんでした。

library(RODBC)
try.sql <- function(con.str, sql){
    tryCatch({
        con <- odbcDriverConnect(con.str)
        sqlQuery(con, sql)
    },
             error=function(e){
                 print(sprintf("Query failed:connection string=%s sql=%s", con.str, sql))
                 print(e)
             },
             finally=odbcCloseAll()
             )
}

RODBCのリファレンスを見る限りですとsqlQueryの実行がエラーを挙げるような記載はなく、そもそも上記コードが動くのかが疑問です。
ご存知の方いらっしゃいましたらご教示頂きたく、よろしくお願い致します。
下記、sessioninfo()実行結果です

R version 3.3.3 (2017-03-06)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=Japanese_Japan.932  LC_CTYPE=Japanese_Japan.932    LC_MONETARY=Japanese_Japan.932
[4] LC_NUMERIC=C                   LC_TIME=Japanese_Japan.932    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] RevoUtils_10.0.3 tools_3.3.3     
RODBCバージョン:1.3.14

rollapply

R初心者 (2017-05-22 (月) 23:47:46)

rollapplyを使って、時系列データをローリングで重回帰して結果を出力したいのですが、うまく書けません。
ran.csvには説明変数rate、growth、volと従属変数wgbi、bcaggre、em、hy、usaggre"が時系列で入っています。
以下自分なりに書いてみたコードです。
よろしくお願い致します。

library(zoo)
library(ggplot2)
library(tseries)

z.logrtn<-read.csv("rtn.csv")

list<-c("wgbi", "bcaggre", "em", "hy", "usaggre")

for(i in 1:length(list)) {
  beta<- rollapply(z.logrtn,
                    width=30,
                    FUN = function(z.logrtn){
                      t = lm(formula=list[i]~rate+growth+vol, data = as.data.frame(z.logrtn));
                      return(t$coef)
                      },
                    by.column=FALSE, align="right")
  if(i==1){
    res<-beta
    }
  else{
    res<-merge(beta, res)
    }
  }

こんなエラーが出ます。model.frame.default(formula = list[i] ~ rate + growth + vol, でエラー: 変数 ('rate' に基づく) の長さが異なります

ひらがなをカタナカに置換する方法

(2017-04-30 (日) 10:01:26)

お世話になります。

文字列に格納されているひらがなをカタカナに一括で置換する方法はないでしょうか。

例えば "ABCあいウエオ" を "ABCアイウエオ" に置換したいです。
実際の文字列は長く、多くの種類があるので,できれば正規表現?で置換したいのです。

subset関数の列名の指定について

NK (2017-04-21 (金) 10:30:51)

お世話になります。以下のようなデータフレームがあり、subset関数で列名と条件を指定して抽出します。

id <- c( 1, 2, 3, 4, 5)
h <- c(158,162,177,173,166) # 身長
w <- c( 51, 55, 72, 57, 64) # 体重
DF <- data.frame(ID=id, H=h, W=w)
subset(DF, ID>3)
  ID   H  W
4  4 173 57
5  5 166 64

このとき、列名"ID"が変数xに格納されている場合では、異なる結果になってしまいます。

x <- "ID"
subset(DF, x>3)
  ID   H  W
1  1 158 51
2  2 162 55
3  3 177 72
4  4 173 57
5  5 166 64

どのようにすれば変数をデータフレームの列名として指定できるでしょうか。
宜しくお願いします。

パッケージリストの一覧が表示されない

konpeki (2017-04-17 (月) 14:04:06)

パッケージリストの一覧が表示されません。
というか「このサイトにアクセスできません」とでるのはなぜでしょうか?
場所が移ったのですか?

t検定の検定力分析(事後分析)の質問です

y931 (2017-04-12 (水) 23:31:05)

対応のない2群のt検定の検定力分析について質問させてください
power.t.test(n=60, d=0.7, sig.level=0.05, power=NULL)
pwr.t2n.test(n1=30,n2=30,d=0.7, sig.level=0.05)
上記2式で検定力を求めたら異なる結果になりました
またGpower3.1.9.2で算出するとpwr.t2n.testの結果と同じになりました

サンプル数が異なるときにはpwrを使用するように・・・
とネット上では記載されています

powerとpwrの違いが理解できません
またGpowerの結果とpwrの結果が同じになった理由も全く分かりません・・・

何を勉強すればいいのかもわからない状況です
どうかよろしくお願いいたします

Error: could not find function "XXX"

とんとん (2017-04-11 (火) 02:01:10)

こんばんわ。Rでパッケージをインストールした後にLibrary()で使えるようにしても題名にあるエラーメッセージが出てPackage内の関数が使えず困っています。他のパッケージ内の関数は使えるのですが、どうすればいいかどなたか教えていただけたら幸いです。

Brunner-Munzel検定に関する「事後の検定力分析」について

こんばんは (2017-04-04 (火) 19:29:23)

「Brunner-Munzel検定」について一点お伺いしたい事がございます。この検定を行った際、十分な検定力があったかを確かめる為に検定力分析を行いたいと考えているのですが、適切な方法をもしご存知の方がいらっしゃいましたらご教授していただきたいです。また、もしBM検定の為の方法がなければ、代わりの方法としてt検定など類似の検定に対する検定力分析を行うことになりますでしょうか。何卒よろしくお願いいたします。

折れ線グラフの重ね書きで、異なる線種を与える

さくやひこ (2017-03-27 (月) 12:21:54)

折れ線グラフを重ね書きする際、線種(line type)をそれぞれの折れ線に与える方法について、ご質問させていただきます。
3本の線を1本ずつ描いて、それぞれに異なる線種与え、重ね書きすると、異なる線種で描かれるのですが、対応がおかしくなります。実線を指定したはずの線にダッシュが付いたり、ダッシュを指定した線に実線が付いたりします。また、それをfor文で、繰り返しをさせて描くと、3本の線が同じ線種になってしまいます。データについてですが、3本の線は、同じ形式だが異なるcsvファイル"aa", "bb", "cc"に基づいています。
どのようにすれば、このような問題を解決できるか、御教示いただければ幸いです。
なお、環境は

R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 8.1 x64 (build 9200)

★ データaa ↓ 他の2つ(bbとcc)も変数は同じです。

   No.Tree      radi year
1        1  0.000000 -166
2        1  1.290000 -161
3        1  2.000000 -156
4        1  2.806667 -151
---中略---
33       1 20.103333   -6
34       1 20.403333   -1
35       1 20.523333    0

★ 3本の線を1つずつ描いて、それぞれに異なる線種与え、それらを重ね書きするスクリプト ↓

pp <- ggplot(NULL)  # 初期値を与える
line.type <- c("solid", "dashed", "twodash") # 線種を与える
#--1---
x <-read.csv(aa)
pp <- pp + geom_line(data=x, aes(year, radi, linetype=line.type[1])) + 
  geom_point(data=x, aes(year, radi))  
#--2---
x <- read.csv(bb)
pp <- pp + geom_line(data=x, aes(year, radi, linetype=line.type[2])) + 
  geom_point(data=x, aes(year, radi))  
#--3---
x <- read.csv(cc)
pp <-pp + geom_line(data=x, aes(year, radi, linetype=line.type[3])) +  geom_point(data=x, aes(year, radi))  
 plot(pp)

しかし、これをfor文で反復すると、線種の描き分けができません。

fl <- dir()   # flには 3つのファイル名"aa", "bb", "cc"が代入される
pp <- ggplot(NULL)  # 初期値を与える
line.type <- c("solid", "dashed", "twodash")  # 線種を与える
for(i in 1:length(fl)){
    x <- read.csv(fl[i])
    pp <- pp + geom_line(data=x, aes(year, radi, linetype=line.type[i])) +  geom_point(data=x, aes(year, radi))  
}
plot(pp)

rstanおよびggplot2の不調

こんばんは (2017-03-26 (日) 01:29:18)

目的はrstanの実行なのですが、いろいろやった結果、library(rstan)で、「1: パッケージ ‘rstan’ はバージョン 3.3.3 の R の下で造られました 2: パッケージ ‘ggplot2’ はバージョン 3.4.0 の R の下で造られました 3: get(Info[i, 1], envir = env) で: internal error -3 in R_decompress1 エラー: パッケージ ‘ggplot2’ をロードできませんでした 」がでます。しかも、install.packages("ggplot2")に「 パッケージ ‘ggplot2’ が利用できません (for R version 3.3.1) 」なってしまいます(これまでは問題なくggplot2は使ってましつた)。古いggplot2をDLてやっても、「パッケージ ‘ggplot2_2.1.0.tar.gz’ のインストールは、ゼロでない終了値をも」がでます。Rは3.3.1です。インストールのし直しはやってみました。解決策はありますか?

複数の変数名を関数の引数に指定する方法

R初心者 (2017-03-21 (火) 12:05:58)

データirisを使いまして、

>  head(iris, n=2)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa

irisの「1つの」変数名を引数とし、指定された変数の平均値を求める場合は、関数eval()と関数substitute()を組み合わせることで実現できます。

>  f1 <- function (VAR) {
+    eval(substitute(TMP <- aggregate(VAR ~ Species, data=iris, mean)))
+    print(TMP)
+  }
>  f1(Sepal.Length)
     Species Sepal.Length
1     setosa        5.006
2 versicolor        5.936
3  virginica        6.588

同様にして、irisの「複数の」変数名を例えばリスト化/ベクトル化して引数とし、例えば以下の様にすると、指定された変数ごとに平均値を求めようとするとエラーが出ます。
要は「複数の」変数名を上手くリスト化/ベクトル化出来ず困っています。何か良い知恵がございましたらご教示願います。

> f2 <- function (VAR) {
+   for (i in 1:length(VAR)) {
+     eval(substitute(TMP <- aggregate(VAR[[i]] ~ Species, data=iris, mean)))
+     print(TMP)
+   }
+ }
> f2(list(Sepal.Length, Petal.Length))
 f2(list(Sepal.Length, Petal.Length)) でエラー: 
   オブジェクト 'Sepal.Length' がありません 
> f2(c(Sepal.Length, Petal.Length))
 f2(c(Sepal.Length, Petal.Length)) でエラー: 
   オブジェクト 'Sepal.Length' がありません

RのSys.time()について

R大好き (2017-03-02 (木) 12:35:38)

> Sys.timezone()
[1] "JST"
> system("date")
2017年  3月  2日 木曜日 03:32:37 JST
> Sys.time()
[1] "2017-03-02 03:32:45 JST"

となるのですが
実際にはこの表示されてる時間はUTCです

$date
2017年  3月  2日 木曜日 12:33:43 JST

なるので9時間ずれてます
これはなんでこうなってしまうのでしょうか?
ちゃんとTZも設定してるのに?

> Sys.time()+60*60*9
[1] "2017-03-02 12:34:31 JST"

して9時間分ずらせば正しいローカルタイムにはなるのですが,こんな余計な+60*60*9 をつけずに上手くローカルタイムを表示させるにはどうすれば良いのでしょうか?
よろしくお願い致します

quantmodパッケージにおける点のプロット方法

kii (2017-02-26 (日) 16:45:53)

パッケージ{quantmod}で、グラフ内に点を表示させる方法を教えて下さい。
推測ですがaddPointsという引数を使うようなのですが、マニュアルをみてもよく分かりません。調べる方法を合わせてご教授下さるとありがたいです。

#https://cran.r-project.org/web/packages/quantmod/quantmod.pdf

例えば下記のグラフにおけるx=2016-01-04, y=200の地点に白色の点を描写したいと思っています。よろしくお願いいたします。

library("quantmod")
getSymbols("GS") #Goldman OHLC from yahoo 
chartSeries(GS)

関数内での実行環境を呼びだし元の環境に設定する方法を知りたい

R大好き (2017-02-20 (月) 00:52:33)

関数内での実行環境を呼びだし元の環境に設定する方法を知りたいのですがどうやれば良いのでしょうか?

quantmodっていうパッケージのaddLines関数を使って
チャート表示した後に関数内で複数下位addLinesやaddPointsを呼びだして
ラインや点をうちたいのですが
関数内でaddLinesやaddPointsを実行してもチャートに変化があらわれません

関数内部じゃなくて親環境で実行するとチャートに反映されるので
関数内の実行環境を親環境にしてやれば関数内でも上手く処理できると思うのですが
そのやり方がわかりません

昔どこかでその方法を見た気がするのですが
ネット検索してもその元記事を発見できませんでしたので
ここで質問させていただくことにしました
よろしくお願い致します

判別分析RとSPSSの違い

Isan (2017-02-15 (水) 15:24:55)

Rで判別分析 library(MASS)のlda関数を使った場合と、SPSSの結果が異なるのはなぜでしょうか。データはhttp://psy.isc.chubu.ac.jp/~oshiolab/teaching_folder/datakaiseki_folder/07_folder/da07_02.htmlからお借りしました。以下のように係数が異なっています。

> r.result<-lda(jidosha~., data=datscale, prior=c(0.5,0.5))

Coefficients of linear discriminants:
                LD1
gaikosei  1.6550380
kyomi     0.7117249
keizai   -0.4656510

SPSSの結果:http://psy.isc.chubu.ac.jp/~oshiolab/teaching_folder/datakaiseki_folder/07_folder/da07_02.html より

外交性 1.071
興味  0.636
経済力 -.476

RMeCabでのわかち書きについて

質問場所が不適切だったよ (2017-02-08 (水) 17:23:47)

R言語で以下のコードでわかち書きをした時に, 品詞を取り除いた形で取り出すにはどのようにしたら良いでしょうか?
また、抜き出す品詞も指定できると助かります。

res = RMeCabC("今日は晴れです。")

よろしくお願いいたします。

RcmdrPlugin.survivalが使えません。

青葉46号 (2017-02-07 (火) 17:13:17)

RcmdrPlugin.survival以外のプラグインは問題なく使えるのですが、このプラグインだけが使えず困っています。
PCのOSはWindows8.1で、Rの環境は下記のとおりです。
R version 3.3.2 (2016-10-31) -- "Sincere Pumpkin Patch"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: i386-w64-mingw32/i386 (32-bit)
Rcmdrのバージョン 2.3です。
RcmdrPlugin.survivalをロードすると下記のエラーが表示され、メニューが小さいままで大きく展開されずに止まります。理由がわからず困っています。

Error in structure(.External(.C_dotTclObjv, objv), class = "tclObj") : 
 [tcl] invalid command name "configure".

小さいメニューには[ファイル],[編集],[データ]の表示はされています。
解決法をどなたか教えてください。お願いします。

行列の成分の回転

(2017-02-07 (火) 01:52:27)

200×200の正方行列Aについて
各成分を90度回転させた行列Bを作りたいです。

すなわちAのi行j列の成分が
Bの201-j行i列となるような行列です。

シンプルにループを回す方法もあるかと思いますが
この処理を数十万回回す必要があるので処理の比較的早い方法があれば教えてください。

legend() で plotmath と expression をまぜて使いたい。

まり (2017-02-03 (金) 13:07:03)

プロット上で %->% の矢印と テキストを混ぜて使いたいです。何か方法はありますか。下の例で二番目の %->% を三番目の → にしたいです。

a1 <- expression(paste('This is omega. ', omega))
a2 <- expression(paste('This is an arrow. ', '%->%'))
a3 <- expression(3 %->% 33)
plot(0)
legend('bottomleft', c(a1,a2,a3))

よろしくお願いします。

mxnetの呼び出しに失敗します。

obo (2017-02-02 (木) 14:11:52)

mxnetを呼び出す時に以下のエラーが出ます。

> library(mxnet)
Error :  オブジェクト ‘combine_edges’ は 'namespace:DiagrammeR' によってエクスポートされていません 
エラー:  ‘mxnet’ に対するパッケージもしくは名前空間のロードが失敗しました。 

環境はWIN7,R×64,3.3.2です。御教授御願い致します。

一定時間以内に関数の処理が終了しない場合に、停止させたい

かい (2017-01-27 (金) 21:01:40)

関数の実行時、一定時間(例えば1分)以内に処理が終了しない場合、
処理を強制的に停止させ、エラーを返すようなスクリプトはどのようにすれば可能でしょうか?

例えば以下のように、間違えて変数xに大きすぎる値を入れてしまった場合、強制的にエラーを返して停止できるようなものです。よろしくお願いいたします。

 x <- 9999999
 Sys.sleep(x)
 print(x)

docMatrixの品詞の細分類について

(2017-01-27 (金) 11:38:43)

Rで文章集合に対してTF-IDFを算出する際に
res = docMatrix("txt", pos=c("名詞", "形容詞"), weight="tf*idf*norm")
と記述するのですが, 名詞, 形容詞でも非自立語や数などを取り除きたいときはどのようにすれば良いのでしょうか
よろしくお願いいたします。

新しいIDを割りふりたい

困っています。。。 (2017-01-22 (日) 13:34:42)

以下のような2種類のIDを持つデータを考えます。

id1   id2
  1    11 
  1    12 
  2    12 
  2    13 
  3    14 
  3    15 
  4    15

この2つのIDのもし一方でも同じであれば、同一のIDを割り振るようにいたいのですが、良い知恵がうかびません。具体的には下記のnewidに相当するものを作りたいのです。

id1   id2     newid
  1    11         1 
  1    12         1 
  2    12         2 
  2    13         2 
  3    14         3 
  3    15         3 
  4    15         3

ご教示いいただけると幸いです。よろしくお願いします。

パッケージlubridataについて

R勉強中 (2017-01-21 (土) 18:58:06)

パッケージlubridataがインストールできません。
「警告メッセージ: パッケージ ‘lubridata’ が利用できません (for R version 3.3.2) 」
Rのバージョンは3.3.2です。
パッケージlubridataのpdfによるとDepends methods, R (>= 3.0.0)とありますので、
バージョンの問題はないと思いますが、何が問題なのでしょうか。
ご教授いただけますと幸いです。
お手数をおかけしますがよろしくお願いたします。

条件分岐にこたえる方法

step (2017-01-18 (水) 15:45:34)

いつもお世話になっております。
step()関数を使用していたところ、データにNAが含まれていたらしく、「使用中の行数が変わりました: 欠損値を取除きますか?」と返ってきたのですが、この質問に対して「yes」と答えて関数を続行する操作方法がわかりません。。。
(単純にyes yとうつと、オブジェクトと認識されてしまいます)

初歩的で恐縮ですが、ご教示頂けると幸いです。よろしくお願い致します。

rpartによる分割結果のデータ数と元データのデータ数が合わない

ddd_mmm (2017-01-16 (月) 17:35:34)

いつもお世話になっています。初めてご質問させて頂きます。
rpartで分割されたデータ数と元データのデータ数が一致しません。

目的変数は質的変数(2値(good/bad))、説明変数は量・質どちらも含み決定木(rpart)を実施しました。
結果、ある量的変数(以下X)が>=1.1の条件で以下のように分割する結果が出たのですが、実際に元データを見ると、x>=1.1では左箱のN数(886)ではなく464レコードなので、原因が分からず困っています。
ご教示の程、何卒よろしくお願いします。
&ref(): File not found: "Rplot01" at page "Q&A (初級者コース)/16";
以下はスクリプト例です。

# データインプット
data <- read.csv("分析_v6.csv", header=TRUE)
head(data)
# 数字データのカンマ処理
for (i in 1:ncol(data)) {
  data[,i]<-gsub(",", "", data[, i])
}
# データ型確認
for (i in 1:ncol(data)) {
  print(c(names(data[i]), class(data[, i])))
}
# 決定木実施
dt1 <- rpart(goodbad ~ x, data=data, parms=list(split="gini"), method="class")

numericとfactorを含む回帰分析

takapom (2017-01-16 (月) 04:31:48)

初めて質問させていただきます。numericとfactorを含む回帰分析を実施しようとして100件のデータを読み込みました。以下のような当て嵌めを行い、call関数で呼び出そうとしたところ、一部しか認識していないようです。修正方法についてご教示頂けますと幸いです。

> fit.all <- glm(y ~ x + f, data = d, family = poisson)
> call: glm(formula = y ~ x + f, family = poisson, data = d)
Error in call:glm(formula = y ~ x + f, family = poisson, data = d) : 
  NA/NaN argument
In addition: Warning message:
In call:glm(formula = y ~ x + f, family = poisson, data = d) :
  numerical expression has 30 elements: only the first used

Spearmanの相関係数に関して

大北 (2017-01-12 (木) 16:13:11)

初めてご質問させて頂きます。
Rも統計も全くの初心者であり、非常にお恥ずかしいのですが、どなたかお力添えいただけますと幸いです。
下記例のような数字が記入された行列(40000×100)が2つあります。行列1の1行目の数値と行列2の1行目の数値…という具合に、対応する行間の相関係数(Spearman)を一括で求めたいのですが、良い方法はありますでしょうか。
独学で色々と試してはいるのですが、なかなか良い方法が見つからず困っております。
何卒よろしくお願い申し上げます。

  症例1 症例2 症例3 症例4 症例5
1     1     3     6     7    23
2     2     4    56     5     2
3     5     6    13     2     4
4    34    23     4    13    14

kmeansGap最適クラスター数

aaa (2017-01-05 (木) 08:33:07)

連続投稿申し訳ございません。

kmeansGapにおいて、最適クラスター数を導出する方法をあるサイトより参考にし、使用しているのですが、Gap統計量のグラフを読み取り、最適クラスター数を決定した場合とそのサイトの方法での結果に差異がございます。
具体的には下記プログラムです。

x <- ClusteringMarketPotential[2:5]
kg <- kmeansGap(x, nstart = 500)
plot(kg)

gap <- c()
for(i in 1:100) {
  kg <- kmeansGap(x)
  nc <- length(kg$cluster$size)
  gap <- c(gap, nc)
}
par(ps=10)
plot(table(gap), xlab="k:num.of clusters", ylab="freq.")

下段の記述において、 nc <- length(kg$cluster$size)により kmeansGap 法が決定した最適なクラスター数を取り出して、gap <- c(gap,nc) により最適とされたクラスター数をカウントするための、行列を作成していると理解しているのですが、そもそもnc <- length(kg$cluster$size)の部分が気になっております。
kmeansGap法はその計算過程において最適クラスター数を求めているのでしょうか?あくまでも、Gap統計量を見るための方法と理解していたので混乱しております。
教えて頂けると幸いです。

kmeans法

aaa (2017-01-05 (木) 08:14:04)

いつもご教授頂き大変ありがとうございます。現在下記の様にkmeans法を使っているのですが、

#k means with Market Potential Data
x <- ClusteringMarketPotential[2:5]
cl <- kmeans(x,3,nstart=500) 
cl$cluster

nstartの値をいくら変えても、
実行結果が変わりません。

初期値に依存のはずなのに何故だろうかと気になっております。

教えて頂けると幸いです。

purrr::map()の挙動について

kei (2016-12-31 (土) 05:56:35)

いつもお世話になっています。

以下のコードを実行する際に、rnorm()の第2引数である"mean"に1:3の
vectorがリスト番号に応じて引数として適用される理由が分かりません。
直観的には3つのリストにrnorm(x, mean = 0, sd = 1)の結果が出そうな気がします。
<実行コード>

set.seed(111)
1:3 %>% map(rnorm, n = 5)

<実行結果>

[[1]]
[1]  1.2352207  0.6692641  0.6883762 -1.3023457  0.8291240

[[2]]
[1] 2.1402782 0.5025733 0.9898116 1.0515244 1.5060378

[[3]]
[1] 2.826326 2.593401 4.845636 3.394054 3.797529

いろいろ調べてみると以下のような動作が関連しているように思いますが、
上記の事象の理解には至りませんでした。

# 無名関数を適用
set.seed(111)
1:3 %>% map(function(x) rnorm(5, mean = x))

# ラムダ式を適用
set.seed(111)
1:3 %>% map(~ rnorm(5, mean = .x))

よろしくお願いします。

kmeansGap

aaa (2016-12-27 (火) 14:34:11)

kmeansGap関数の結果をグラフにプロットすると
毎回結果が変わってしまうのですが、
なぜでしょうか?

ご教授頂けると幸いです。

GAP統計量

aaa (2016-12-27 (火) 14:31:59)

GAP統計量を使いたく、
clusGap関数を持つlibrary(cluster)を
インストールしたいのですが、
既にlibrary(cluster)があるのか上手くいきません。

現状のlibrary(cluster)にはclusGap関数のファイルが見つからず。

ご教授頂けると幸いです。

Dunnett検定のp値で任意の桁数を求める

User (2016-12-16 (金) 11:26:22)

http://minato.sip21c.org/medstat/how-to-multcomp.pdfを参考に、

res1 <- aov(群2 ~ 群1, data=bpdown)
summary(res1)
library(multcomp)
res2 <- glht(res1, linfct = mcp(medicine = "Dunnett"))
confint(res2, level=0.95)
summary(res2)

でDunnett検定を実行していますが、この方法では、自分の実力
では、p値を任意の桁数で計算させることができません。
他のやり方でもいいのですが、p値を任意の桁数で計算させる
ことはできますか?よろしくお願いします。

パイプ演算子%>%が使えない

ゆう (2016-12-09 (金) 11:21:59)

お世話になります。

パイプ演算子%>%が使えません。

Error: could not find function "%>%"
のメッセージが出ます。

magrittrパッケージはインストールしたのですが、
ほかに実施することがあるのでしょうか?

※ちなみにpipeRの%>>% も同様に使えませんでした。
(pipeRパッケージはインストールしました)

初歩的な質問で恐縮ですがよろしくお願いします。

多変量GARCHの閾値モデル化

PPAP (2016-11-30 (水) 23:28:40)

よろしくお願いします。

【質問】
 多変量GARCH(multivariate garch)を閾値(threshold)モデル化したもの、
つまり、M(multivariate)GARCHモデル、BEKKモデル、CCCモデル、DCCモデル等の
閾値モデル版を扱うことのできるパッケージもしくはコードを記載した
webページ等はありませんでしょうか?

(備考)
  多変量時系列モデルの代表的なモデルであるVARについては、
 これを閾値モデル化したTVAR(threshold-VAR)がパッケージ(tsDyn)に機能
 として存在しているようですが、自分がいかに調べても、多変量GARCHで
 これを閾値化したパッケージやコードが見つかりませんでした。
  
 どなたかご存知の方はおられませんでしょうか。
 どうぞよろしくお願い申し上げます。

twitterのプロフィールのデータ収集について

page (2016-11-16 (水) 17:36:23)

はじめて質問させてもらいます。
よろしくお願いします。

プロフィールのテキストデータの収集について教えてください。
「twitteR」を使えば、タイムラインのツイートなどは収集できると思うのですが、プロフィールのテキストデータは収集可能でしょうか。「twitteR-CRAN」を読んだのですが、見つかりませんでした。APIの連携は済んでおります。

安倍首相のTwitterアカウントであれば「衆議院議員安倍晋三(あべしんぞう)の公式twitterです。 Prime Minister of Japan. Leader of Liberal Democratic Party.」の部分です。

もし、「twitteR」で可能であれば、使用例をお示しいただけますと幸いです。
また、違うパッケージで可能であれば、教えてくれますと幸いです。

R3.3.2のcrtl+pが印刷になってしまいます

tori (2016-11-16 (水) 17:02:56)

すみません。

Windows10(64bit)にR-3.3.2-win.exeをインストールしました。デスクトップに
できたアイコンをダブルクリックして起動したのですが(R console)、
crtl+pで一つ前に実行したコマンドを出そうとすると印刷になってしまいます。
ctrl+nもだめでした。

ヘルプの項のコンソールを見るとctrl+pとctrl+nは履歴と書いてあるのですが、
ファイルの項の印刷はctrl+pとなっており、こちらの動作をしているようです。

履歴の移動は矢印キーでもできるとはいえ、できればctrl+pとnを使いたいので
すが、設定を変更する場所が見つかりませんでした。

そこで、ctrl+pとnで履歴を移動できるようにする方法orヒントをご存じの方、
お教えください。よろしくお願いします。

プロキシサーバーへの接続

PQP (2016-11-08 (火) 00:42:17)

お世話になります。

Win 7, 32bitでR 3.0.2を使用しています。
プロキシサーバーを経由する必要があるため、起動ディレクトリの.RprofileにSys.setenv(http_proxy="プロキシサーバアドレス:ポート")と記載しておき、パッケージの更新時にはアカウントを入力してインターネットに接続できていました。
しかし、R 3.3.1をインストールしてパッケージの更新をしたところ、アカウントの入力画面が表示されず以下のようなエラーメッセージが表示されました。

to download mirrors file ( URL
'https://cran.r-project.org/CRAN_mirrors.csv' を開けません ); using local
file 'C:/PROGRA~1/R/R-33~1.1/doc/CRAN_mirrors.csv'
警告:  リポジトリー https://cran.ism.ac.jp/src/contrib に対する索引にアクセスできません :
 URL 'https://cran.ism.ac.jp/src/contrib/PACKAGES' を開けません
警告:  リポジトリー http://www.stats.ox.ac.uk/pub/RWin/src/contrib に対する索引にアクセスできません :
 URL 'http://www.stats.ox.ac.uk/pub/RWin/src/contrib/PACKAGES' を開けません
警告メッセージ:
download.file(url, destfile = f, quiet = TRUE) で:
 cannot open URL 'https://cran.r-project.org/CRAN_mirrors.csv':
HTTP status was '407 Proxy Authentication Required'

Sys.getenv("http_proxy") で.Rprofile通りの設定になっていることは確認できたのですが、最近のRはプロキシサーバーの設定が変更になったのでしょうか。
どのようにすればインターネットに接続できるかご教示宜しくお願いします。

leafletでのコロプレス図とマーカーについて(3)

TAKA? (2016-10-27 (木) 07:43:50)

詳しく書いてみました。 よろしくお願いします。

library(leaflet)           
library(RColorBrewer)      
library(maptools)          
library(knitr)

#「JPN_adm1.shp」は「http://www.gadm.org/country」から
file <- "JPN_adm1.shp"

# データの準備
# 緯度経度なので+projにlonglatを指定
# SpatialPolygonDataframeとして読み込み
pj <- CRS("+proj=longlat +datum=WGS84")
Jpn <- maptools::readShapePoly(file,proj4string = pj,IDvar="NAME_1")

# データ部の下から10レコードを表示
Jpn@data %>% tail(.) %>% kable()

# ポリゴン部一つ目を表示
Jpn@polygons[1]

#「http://www.gadm.org/country」から取得したデータに人口密度(PD)を足したデータ
# 「JPN_adm1.shp」で「Hyナ紅o」となっているのであわせた
jpad <- read.table("JPN_adm1.csv", header=TRUE, sep=",", na.strings=c("", "NA"), 
   dec=".", fill=TRUE, quote="\"", strip.white=TRUE)

# 都道府県名「NAME_1」でmerge
Jpn <-  merge(Jpn,jpad,by="NAME_1")

#今回使用する以下のものに整理
# ・ NAME_1 = 都道府県名
# ・ PD     = 人口密度(人/km2)

#lng,latに代表点を格納
Jpn.d<- data.frame(PREF = Jpn$NAME_1,     #各小地域名称
                    PD = Jpn$PD)           #人口密度
Jpn@data <- Jpn.d
Jpn@data %>% tail(.) %>% kable(.,format="markdown")

# コロプレス図( 離散化:等分法)
# 人口密度を%で表示しているのは変ですがご容赦
pal_q <- leaflet::colorQuantile(
  palette = "Reds",
  domain = Jpn@data$PD, n=10)

m <- leaflet::leaflet(Jpn) 
m  %>%
  addProviderTiles(provider = "OpenStreetMap.BlackAndWhite") %>% 
  addPolygons(stroke = FALSE,
              fillOpacity = 0.9, 
              color = ~pal_q(Jpn.d$PD)) %>% 
  addLegend(position='bottomright', pal=pal_q, values=~PD,title="人口密度(%)",
            labels=~classlabel$label)

希望としては上記でできる地図と下記でできる地図を合体したい
コロプレス地図上で、地点表示をしたい

df <- data.frame(
    id = 1:5,
    lng = rnorm(5,mean=135,sd=0.5),
    lat = rnorm(5,mean=35,sd=0.5),
    pop = c("kosaki","chitoge","tsugumi","marika","yui"))
m <- leaflet(df) %>% addTiles()
m %>% 
    addMarkers(lng=~lng, lat=~lat, popup=~pop, label=paste(df$lng, df$lat, sep=","))

leafletでのコロプレス図とマーカーについて(2)

TAKA? (2016-10-24 (月) 00:35:52)

前回の質問があいまいだったので、補足します。shpファイルからreadShapePoly関数で読んだデータと、緯度・経度・地点名のデータが、当然ですが並列には扱えません。前者(○○)は地図にプロットする場合leaflet::leaflet(○○)、となっていますが、後者(△△)はleaflet(△△)です。Polygonファイルと単純な緯度経度ファイルの違いだと思うのですが、後者を前者の関数の一部のような形式で扱えないのかと思っています。この質問で言っていること全体が間違っているのかもしれませんが、よろしくお願いします。

leafletでのコロプレス図とマーカーについて

TAKA? (2016-10-23 (日) 15:52:03)

https://book.mynavi.jp/manatee/detail/id=59406」を参考に、leafletで全国の都道府県別の人口密度のコロプレス図を描きました。希望としては、その地図に、「https://kazutan.github.io/JapanR2015/leaflet_d.html」で解説されているように、複数地点のマーカー(サークル等)を追加し、labelやpopup機能なども使用したいです。しかし、方法がわかりません。よろしくお願いします。

var.testの95%信頼区間に関する質問です

yoshida931 (2016-10-21 (金) 19:18:57)

x <- c(12,18,15,14,16,17,15,16,14,13,12)
y <- c(9,10,12,8,11,10,8,9,12,13,11,10)
var.test(x, y)
95 percent confidence interval:
0.4216858 5.4487216

次の式との違いが理解できません

x <- c(12,18,15,14,16,17,15,16,14,13,12)
y <- c(9,10,12,8,11,10,8,9,12,13,11,10)
qf(0.05, length(x)-1, length(y)-1)
qf(0.975, length(x)-1, length(y)-1) 
95 percent confidence interval:
0.2728577 3.525672

どうか宜しくお願いいたします

sapply(x, RMeCabC)時の予期せぬエラー

hashi (2016-10-20 (木) 12:59:23)

お世話になります。
1000000件程度のレビューデータの形態素解析を行うためにRMeCabを用いています。
一息に行うには難しいと思いましたので10000件にづつに分割してsapplyを用いることで行っているのですが、sapplyの際に時折「予期せぬエラー」が発生してR.guiが停止してしまうことがあります。
(RStudioを用いている時にはR Session Aborted と表示されます)

Rを再起動して再び走らせるとうまく走るようですが、しばらくするとまた同様にRが停止してしまいます。

Rを止めることなく、解析を行うためにはどのような対策が考えらえれますでしょうか?ご教授いただければ幸いです。

コードは以下です。

> # x は10000件のレビューテキストが入っているベクトルです (サイズは2000KB程度)
> for(i in 1:100){
>   load(paste0("x", i, ".Rdata"))
>   a <- sapply(x, RMeCabC)
>   save(a, file=paste0("a", i, ".Rdata"))
> }
>
> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
 
locale:
[1] LC_COLLATE=Japanese_Japan.932  LC_CTYPE=Japanese_Japan.932 
    LC_MONETARY=Japanese_Japan.932 LC_NUMERIC=C                  
[5] LC_TIME=Japanese_Japan.932    
 
attached base packages:
[1] stats     graphics  grDevices utils     datasets
    methods   base     
 
other attached packages:
[1] RMeCab_0.99994
 
loaded via a namespace (and not attached):
[1] tools_3.3.1

なお、Rの再インストールやRMeCabの再インストール等は試してみましたが、改善はされませんでした。load, saveでは問題が生じていないことも確認しました。
どうぞよろしくお願いいたします。

2つの配列を1つの配列にまとめる方法

まさ (2016-10-06 (木) 11:07:30)

お世話になります。
配列に関してですが、2つの配列を行列の積を求めることで1つにまとめる方法をお教えいただけないでしょうか?

> a<-array(1:8,dim=c(2,2,2))
> a
, , 1

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

, , 2

     [,1] [,2]
[1,]    5    7
[2,]    6    8

> b<-array(1:8,dim=c(2,2,2))
> b
, , 1

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

, , 2

     [,1] [,2]
[1,]    5    7
[2,]    6    8

> c<-array(a%*%b,dim=c(2,2,2))
> c
, , 1

     [,1] [,2]
[1,]  204  204
[2,]  204  204

, , 2

     [,1] [,2]
[1,]  204  204
[2,]  204  204

となり、計算がうまくいきません。
どこが間違えているかご指摘よろしくお願いします!

回帰直線

初心者 (2016-10-05 (水) 12:13:17)

いつもお世話になっております。
次のとおり回帰分析を行ったのですが、回帰直線の形状がイメージと異なるような気がします。もう少し傾いた(右上がりの45度線のような)形状になると思われるのですが、いかがでしょうか。
R二乗値は0.63あるのですが、その割にはあまりにも回帰直線が当てはまっていない気がします。

a = c(-10.22308777, -17.73631427, -31.26787059, -30.0144283, 16.00892923,
      -0.069389969, -1.527697676, 40.23164602, 17.84427993, 51.90862367,
      32.43250902, -14.69527371, -21.51305243, 2.467123024, -1.591029265,
      -6.002531197, -5.528871379, -20.72354649)
b = c(3.89776009, -1.599860574, -4.454146619, -6.591765968, -0.790181177,
      2.356401065, 0.284653276, 8.520993351, 2.143995797, 4.920336488,
      2.454386261, -1.756563062, -2.934179195, -2.443421907, -0.75099722,
      0.213094238, -0.430802605, -3.039698906)
reg = lm(formula = a ~ b)
plot(a, b)
abline(reg)
summary(reg)

アーラン分布へのあてはめ(fitdistr)

TAKA (2016-10-05 (水) 12:07:38)

ある分布は待ち時間に関するもので、アーラン分布が予測され、ほかのプログラムでそのことが実証されています。検算の意味もあり、「R」でアーラン分布へのあてはめを実施しようと思い、調べました。
結果、fitdistrでガンマ分布へのあてはめが可能だとわかりましたが、shcapeを自然数に限定する方法がわかりません。また、fitdistrで計算させたあと、出てきたshapeの近傍の自然数に設定して、再計算をさせればいいと思ったのですが、その方法もわかりません。ご教授ください。

ベクトルから配列の作成について

まさ (2016-10-03 (月) 18:36:06)

お世話になります。
行列の各要素にそれぞれベクトルを挿入して配列を作るにはどうしたらよろしいのでしょうか?
例えば、

a<-c(1,2,3,4,5)
b<-c(6,7,8,9,10)
c<-c(11,12,13,14,15)
d<-c(16,17,18,19,20)

というベクトルを使って、

[1]
| 1 11 |
| 6 16 |

[2]
| 2 12 |
| 7 17 |

といった感じで作っていきたいのですが、、、、
R言語だけでなくプログラミングに対する知識も浅いので、丁寧にご説明いただけると光栄です。
なにとぞよろしくお願いします。

Rの脆弱性について

Hiro (2016-09-28 (水) 15:06:05)

お世話になります。

R3.1.0を使用して医療統計を行い、日本の雑誌に論文を投稿したところ、「統計解析ソフトRの解析能力について、ソフトとしての脆弱性、信頼性の問題について考察し、参考文献を追記してください。」とのコメントがございました。
これまで、海外への投稿論文でそのようなことを指摘されたことがありませんでしたし、あたりまえに使用していましたので、どのように回答してよいのか悩んでおります。

統計的なことでなくて申し訳ないのですが、脆弱性や信頼性に関してどのように回答するのが適切でしょうか?

polygon関数

Piro (2016-09-23 (金) 14:28:02)

いつもお世話になっております。
対数正規分布のグラフを作成しようとしているのですが、polygon関数で一部を塗りつぶそうとしても、うまく描画できません。
使用環境はR version 3.3.1 です。

data<-c(94.257,54.921,60.819,60.666,105.699,42.525,117.238,42.733,53.808,47.220,
50.901,41.801,44.790,38.811,60.793,39.692,38.387,45.992,69.380,40.316,41.333,
55.521,72.151,80.017,64.362,113.580,131.497,43.741,44.435,81.991,53.107,58.892,
45.898,45.947,73.002,83.237,64.322,57.769,69.487,54.550)
curve(dlnorm(x,meanlog=mean(log(data)),sdlog=sd(log(data))),0,150)
xvals=seq(0,39.391,length=40)
dvals=dnorm(xvals)
polygon(c(xvals,rev(xvals)),c(rep(0,40),rev(dvals)),col="grey") #重ならない

複数の関数にパイプ(%>%)するときの挙動

kei (2016-08-30 (火) 05:31:12)

いつもお世話になります。
magrittrパッケージを使って複数の関数にパイプしたいと思っていますが、結果がコンソールに表示される場合とされない場合があるように思われます。debug(`%>%`)などでデバッグを試みたのですが、%>%の中身は現在の私には難しすぎて理解しきれません。

# str()とsummary()の結果がコンソールに表示される⇒問題なし~
iris %>% {
  str(.)
  summary(.)  
} 
# str()の結果はコンソールに表示されるがsummary()の結果が表示されない⇒疑問点~
iris %>% {
  summary(.)  
  str(.)
} 
# print()でコンソール出力を明示すると表示される
iris %>% {
  print(summary(.))  
  print(str(.))
}  
# 関数は動いているようで、以下の場合は変数が読み込まれます。
iris %>% {
  x <<- summary(.)  
  y <<- str(.)
} 

この点について原因や考え方をご存知の方がいらっしゃいましたらアドバイスをお願いします。
よろしくお願いします。

rpartオブジェクトの編集について

yu (2016-08-23 (火) 20:44:26)

いつもお世話になります。
rpartのpredictで出力される確率を自分で編集したいと思っています。
rpartのドキュメントを見て、
$frame$dev
などを変更してみたのですが、predictの結果には寄与していないようです。
どなたか、predict結果に任意の確率を出力する方法をご存知の方はいませんでしょうか。

GLM関数を用いたガンマ分布のFittingについて

michael (2016-08-11 (木) 21:31:03)

初めて書き込ませていただいています。Rの全くの初心者です。
大学院の研究で使用しているデータの処理をRで行おうとして四苦八苦しています。ある時間軸に対して変化するデータをガンマ分布へのフィッティングを試みています。まず一般化線形モデル:glm関数を用いてガンマ分布へのFittingを試みましたがうまくいきませんでした。そこでnls関数を用いてガンマ分布の関数式へFittingを行うと良好なFittingを得られました。ただできればglm関数を用いたいと思っています。glm関数でうまくいかない原因と解決点をいただけましたらとても有難いです。よろしくお願いいたします。

使用環境は
R version 3.3.1 (2016-06-21)です。

nlsでの解析は以下の通りです。

# 観測値(時間)
sec <- c(0, 2, 4, 6, 8.1, 10.1, 13.2, 16.2, 19.3, 22.3, 60.3)
# 観測値(結果)
hu <- c(0.7, 0.3, 47.7, 149.3, 195.8, 243.5, 236.9, 141, 81.2, 59.2, 67.0)
# 観測値のプロット
plot(sec, hu)
# Fitting したいデータ選択
x <- sec[2:10]
y <- hu[2:10]
model = (y~x)
# 非線形回帰
result <- nls(y ~ (c*x^(a)*exp(-x/b)/gamma(a+1)), start = c(a=2, b=10, c=1),trace=TRUE)
# 結果のサマリー
summary(result)
coefficients(result)
# 係数の取り出し
coe <- result$m$getPars()
# 係数取り出しの確認(1,2,3 が abc に相当)
coe[1]
#近似曲線の作成
t <- seq(0, 60)
z <- coe[3]*t^(coe[1])*exp(-t/coe[2])/gamma(coe[1]+1)
lines(t, z)

一方でGLM関数を用いて

sec <- c(0, 2, 4, 6, 8.1, 10.1, 13.2, 16.2, 19.3, 22.3, 60.3)
hu <- c(0.7, 0.3, 47.7, 149.3, 195.8, 243.5, 236.9, 141, 81.2, 59.2, 67.0)
 
plot(sec, hu, ylim=c(0, 1000)) 
sec.pos<- sec[2:10]
hu.pos<- hu[2:10]

glm.hu <- glm(hu.pos~sec.pos, family = Gamma)
glm.hu$coefficients

x <- seq(0, 60) 
eta.pred <- glm.hu$coefficients["(Intercept)"]+glm.hu$coefficients["sec.pos"]*x
hu.pred <- 1/eta.pred

1/summary(glm.hu)$dispersion
library("MASS")
a <- gamma.shape(glm.hu)$alpha 
a

s.hu.pred <- 1/eta.pred/a
lines (x, hu.pred)

とした場合には綺麗なFittingを得ることができません。

KFASを使用した時系列分析について

べのたみ (2016-08-11 (木) 08:58:32)

http://elsur.jpn.org/ck/#intro
の説明と置いてくださっているソースコードを見ながら状態空間の勉強中です。
9章のパケージKFASを使用する部分で、exercise.Chapter9.4a のソースコードを使っても、
行列Hの値などが出力結果として示されているものと桁が異なる値が出てきます。
9.4bのソースコードを使った値は表示されているものとほぼ同じ値が出ます。
原因と解決策につながるヒントがいただけたら嬉しいです。

使用環境は以下の通りです
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

other attached packages:

[1] KFAS_1.2.3        dlm_1.1-4

par() の値を恒久的に変えるには・・・

すみこ (2016-08-07 (日) 05:45:14)

R を起動させるたびに
par(las=1)
をしているのですが、それを自動に行う方法はありますか?
あるいはデフォルトを恒久的に変えられますか?

クラスタ分類時の各項目にラベル付け

ゴヤンキー (2016-08-02 (火) 13:43:13)

初めての投稿です。
よろしくお願いいたします。

店舗名	3分	5分	7分
aaa	16,347	47,412	89,237
bbb	3,047	10,191	30,263
ccc	5,974	20,824	50,549
ddd	8,852	26,060	48,916

といったデータをクラスタ分類するときに、実行結果にaaa、bbb等の名前をつけることができず、番号が振られてしまいます。

何か方法はございますでしょうか?

csvファイルからデータ読み込みしております。

ベクトルの分割について

ロペ (2016-08-01 (月) 11:35:57)

お世話になります。

x <- 13
1:x

のようなベクトルがあった時に、長さ5で分割して

1 2 3 4 5
6 7 8 9 10
11 12 13

のようなリストを作りたいのですが、良い方法はありますでしょうか。xは状況によって変化します。

宜しくお願いします。

heatmapの縦横比率の調整について

ひい (2016-07-28 (木) 17:16:22)

heatmap()を用いてヒートマップ図を描いています。以下のようにすると行方向の要素数が縦方向の要素数より多いため、文字がつぶれてしまいます。

data <- as.matrix(read.table("http://stat.biopapyrus.net/data/arraydata.txt", header=TRUE))
heatmap(data)

引数cexRowで文字サイズを小さくするのではなく、heatmap図を縦方向に引き伸ばしたいのですが、どのようにすればよいでしょうか。

環境はWindows 7、R 3.3.1です。どなたかご助言を宜しくお願いします。

lattice qqmathの軸交換

t^2 (2016-07-23 (土) 10:18:05)

初めて投稿します。よろしくお願いします。
latticeライブラリーのqqmath()を使用しています。
以下のようにすると、横軸qnorm, 縦軸xになります。
横軸x, 縦軸qnormで描きたいのですが、方法はありますか?

例:

library(lattice)
df <- data.frame(label=rep("A",200),x=rnorm(200))
df <- rbind(df, data.frame(label=rep("B",200),x=rnorm(200)*2))
df <- rbind(df, data.frame(label=rep("C",200),x=rnorm(200)*3))
gr <- qqmath(~x|label,data=df)
print(gr)

環境は以下です。

R version 3.2.2 (2015-08-14)
Platform: i386-w64-mingw32/i386 (32-bit)
Running under: Windows 8 (build 9200)

other attached packages:
[1] lattice_0.20-33

よろしくお願いします。

persp関数 の軸目盛表示について

こやP (2016-07-08 (金) 15:23:01)

R初心者です。よろしくお願いします。

plot関数ではaxis関数と組み合わせて使用して軸の目盛を任意で変更することが出来るようです。

persp関数を使った作図で軸の目盛を自由に変更したいのですが方法はありますか?

R version 3.1.2 (2014-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)

よろしくお願いいたします。

エラー対処

R初心者 (2016-07-02 (土) 18:36:05)

R初心者です.どうぞ宜しくお願い致します.
下記のエラーを消せないのですが,どこを修正すると良いのでしょうか?

Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,  : ~
  arguments imply differing number of rows:

subset

Rに困った人 (2016-06-29 (水) 20:54:30)

R初心者です.どうぞよろしくお願いいたします.

subset(x,条件式)を使って,階層ごとにデータ整理をしたいと考えております.
条件式にて,「x$area=="A市"」のようにすれば良いとは思うのですが,A市,B市,・・・Z市のように市区町村の数がたくさんあるので,何度も同じ作業をするのは厳しい状況です.何か良い方法はないでしょうか?

文字列の日本語の除去

さぶ (2016-06-09 (木) 11:14:33)

以下のような日本語と半角英数字の混在した文字列から、日本語を除去して半角英数字のみの文字列を作成したいのですが、どのような処理をすれば宜しいでしょうか。
"12wあsxいdr5日本6tgbhnuん89iko"
gsubで日本語のみを空文字に置換すればよいと考えたのですが、日本語を表す正規表現がないため実行できませんでした。

環境はWindows 7の32bit、R 3.3.0です。

お手数ですが、ご助言宜しくお願いします。

パスワードつきのエクセルファイルの読み込み方

X (2016-06-08 (水) 17:08:46)

以下のようにパスワードでロックのかかったエクセルファイルを読み込みたいのですが、当然ながらエラーになってしまいます。

library(xlsx)
read.xlsx("file.xlsx", 1, header=T, encoding="UTF-8")
.jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  でエラー: 
org.apache.poi.EncryptedDocumentException: The supplied spreadsheet seems
to be an Encrypted .xlsx file. It must be decrypted before use by XSSF,
it cannot be used by HSSF

Rでパスワードを入力して読み込む方法があればご教示頂けますか。

宜しくお願いします。

一行ずつテキスト取り出して、各テキストファイルに書き出す方法

三回生 (2016-06-07 (火) 01:02:04)

大学三回生です。R初心者です。よろしくお願いします。

大学の授業で、データフレームを操作する課題がだされました。
内容は、21行(テキストデータ)1列のxxxx.csv(1行目は変数名)を読み込み、各行ごとにテキストファイルに書き出し、txtデータを20個分、保存するという課題です。
以下のように記述してみたものの、うまくいきません。

xxxx <-read.csv("xxxx.csv", header = TRUE)
n <- 1:20
for (i in 1:n) {      
  file.name <- sprintf("text_%02d.txt", i)
  dat[i] <- xxxx[i,]
  write.csv(dat[i], "file.name")    
}

どこが問題で、どのように修正するべきかを教えていただけますと幸いです。
よろしくお願いします。

ggplot2のtheme_classicで軸が非表示になる

SATO (2016-06-05 (日) 01:02:47)

R3.3.0でggplot2を使っています.図をシンプル(X軸とY軸のみ表示で,補助メモリも無し)にするためtheme_classic()を使うのですが,X,Y軸共に表示されません.以前に,ggthemesというパッケージをインストールしてからこのような症状が出始めたように感じています.また,R3.1.2やR3.0を使っていた時は問題なく使えていたのですが,どなたか解決方法をご存知の方は教えていただけないでしょうか.

ggplot2の戻り値,返り値の参照方法について教えてください

さかなねこ (2016-05-24 (火) 04:56:38)

ggplot2の戻り値,返り値の参照方法について教えてください
たとえば,baseのhist関数だと描画後に返り値を参照して別のことに使いまわすことができますが,ggplot2でも同じようなことができるのでしょうか。

> h2 <- hist(iris[,1], seq(0,10,1))
> names(h2)
[1] "breaks"   "counts"   "density"  "mids"     "xname"    "equidist"
> str(h2)
List of 6
 $ breaks  : num [1:11] 0 1 2 3 4 5 6 7 8 9 ...
 $ counts  : int [1:10] 0 0 0 0 32 57 49 12 0 0
 $ density : num [1:10] 0 0 0 0 0.213 ...
 $ mids    : num [1:10] 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
 $ xname   : chr "iris[, 1]"
 $ equidist: logi TRUE
 - attr(*, "class")= chr "histogram"

となり,度数を取り出して別途表にすることなどができますが,ggplotだと,

> g <- ggplot(  iris,   aes(x=Sepal.Length))
> g <- g + geom_bar(stat ="bin")
> plot(g)
stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.
> names(g)
[1] "data"        "layers"      "scales"      "mapping"     "theme"      
[6] "coordinates" "facet"       "plot_env"    "labels"     

となり,度数データがどこにあるのかわかりません。
ggplotで作ったグラフの数値データ(返り値,戻り値)はどこに格納されているのかご存知の方教えていただけないでしょうか。
下記サイトによれば,どこかにしまわれているように思えるのですがわかりませんでした
https://github.com/hadley/ggplot2-book/blob/master/layers.rmd#generated-variables

rpartの学習済みモデルのsaveとloadについて

yu (2016-05-18 (水) 23:01:45)

rpartで学習した結果のモデルを保存したいのですがその方法がわからず、記載されているページもなかったのでご教授頂きたく思います。
例えば下記のようにしても、エラーが出て保存することができません。

また可能でしたらモデルを読み込んで使用する方法もご教授いただけたらと思います。

ct <- rpart(answer ~ hit + num, method = "class" ,  control=rpart.control(minsplit=5, cp=0.003, loss=matrix(c(0,1,4,0), byrow=TRUE, nrow=2)))
rpart.plot(ct, type = 1, uniform = TRUE, extra = 1, under = 1, faclen = 0)
write(data.frame(ct), "c:\\rdata\\tree.txt")

MeCabの辞書、mecab-ipadic-NEologdを追加できません。

初心者 (2016-05-09 (月) 23:21:04)

以下の手順でmecab-ipadic-NEologdのインストールをおこないました。

1. git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
2. cd mecab-ipadic-neologd
3. ./bin/install-mecab-ipadic-neologd -n

3.の手順を実行したあとに以下のような記述が表示されましたので、
mecab-ipadic-NEologdのインストールが成功したものだと思っていました。
(浅学で申し訳ないのですが、okがたくさん出ておりましので成功だと考えました。)

[install-mecab-ipadic-NEologd] : Start..
[install-mecab-ipadic-NEologd] : Check the existance of libraries
[install-mecab-ipadic-NEologd] :     find => ok
   : 【途中省略】
[install-mecab-ipadic-NEologd] :     diff => ok
[install-mecab-ipadic-NEologd] :     tar => ok
[install-mecab-ipadic-NEologd] :     unxz is not found.

そして公式にあるように以下の文言を実行しましたが、エラーが表示されました。

echo "10日放送の 【途中省略】 一幕があった。" | mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd
param.cpp(69) [ifs] no such file or directory:
   /usr/local/lib/mecab/dic/mecab-ipadic-neologd/dicrc

どうすればこの問題を解決できますでしょうか。ご教授いただければ幸いです。

MeCabに辞書を追加できません。

初心者 (2016-05-08 (日) 19:00:31)

RMeCabでテキストマイニングを行っています。解析結果で文字が正しく解析されていないので、MeCabの辞書に単語を追加しようと思っていますが、全くうまく行きません。ご教授願います。

環境は以下の通りです。
Mac10.10.5
R studio 0.99.489
R version 3.2.2
mecab-0.996
mecab-ipadic-2.7.0-20070801

http://mecab.googlecode.com/svn/trunk/mecab/doc/dic.html
http://r-kurain.hatenablog.com/entry/20120725/1343226646
http://www.inabalab.net/yokoyama/statics/r%E3%81%A7%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%9E%E3%82%A4%E3%83%8B%E3%83%B3%E3%82%B02/
上記のサイトにあるように、以下のフォーマットに沿ってwords.csvという名前でcsv形式(UTF-8)を作成しました。

そして、ターミナルから以下のコマンドを実行したところ、()内のエラーが表示されてしまい、ここから先に一向に進めません。

$/usr/local/Cellar/mecab/0.98/libexec/mecab/mecab-dict-index -d /usr/local/Cellar/mecab/0.98/lib/mecab/dic/ipadic -u words.dic -f utf8 -t utf8 words.csv
(-bash: $/usr/local/Cellar/mecab/0.98/libexec/mecab/mecab-dict-index: No such file or directory)

or

$/usr/local/libexec/mecab/mecab-dict-index -d/usr/local/lib/mecab/dic/ipadic -u words.dic -f euc-jp -t euc-jp words.csv
(-bash: $/usr/local/libexec/mecab/mecab-dict-index: No such file or directory)

このようなエラーが表示された場合、どのようにすれば単語を追加できますでしょうか。
よろしくお願いします。

また、アンインストールしようとしても()内のエラーが表示され実行できませんでした。

cd ~/Downloads
cd mecab-ipadic-2.7.0-20070801
sudo make uninstall
(make: *** No rule to make target `uninstall'. Stop.)

cd ~/Downloads
cd mecab-0.996
sudo make uninstall
(make: *** No rule to make target `uninstall'. Stop.)

時系列csvデータの読み込み

しょうもない初心者 (2016-05-05 (木) 18:04:30)

書き込みが少々気が引けますが、本を買って読み始めたばかりの超初心者です。

これまでエクセル表の上だけで、何とかマクロを使ってデータ分析を行って来ましたが、Rの持つ時系列データの分析機能を試してみたく、質問をさせて頂きます。

データはデマンド計1年分の横軸時刻、縦軸日付で、下記の様な構造をしています。
文字列でアップすると見ず(づ)らいのですが、横が48列、縦が365行の17,520個のデータです。

日付\時刻 0:30 1:00 1:30 2:00 2:30 3:00 3:30   …  23:30 0:00 (→計48列)
2015/7/1   51.3 49.8 52.0 51.7 62.2 70.5 88.6   …  156.1 148.2
2015/7/2   64.3 60.0 57.4 58.8 64.5 70.5 84.3   …  204.2 211.9
  …
2016/6/29  42.3 44.4 50.2 63.4 87.5 99.0 105.6  …  253.0 244.1
2016/6/30  52.8 73.5 70.9 82.5 88.4 82.3 120.3  …  324.4 318.2
(↓計365行)

このデータをcsv形式で保存して、read.csvで読み込もうと色々と試したのですが、plot.ts等でプロットしようとしても受け付けられず、入力がうまくいっていない様です。
日付と時間との1:1データですので、下記の様な2列のデータに直せばうまくゆきそうな感じもしますが、もし上記のまま上手く読み込む方法がありそうでしたら、アドバイスをお願い致します。

Date-Time            Demand
2015/07/01-00:30:00   51.3
2015/07/01-01:00:00   49.8
  …
2016/06/30-23:30:00  324.4
2016/06/30-00:00:00  318.2

Rcpp(C++)で作成した3次元配列をRに連携する方法

(2016-04-04 (月) 12:56:10)

Rcppを使ってRとC++の連携(下記1-3)を行いたいと思っています。

1.RからC++へ2つの行列を渡す
2.2つの行列を元に特定処理を実行し、3次元配列を作成
3.2で作成した3次元配列をRに返す

3の方法が分からず、、、もしよければ助言いただけないでしょうか
具体的には下記コードで定義したfuncmatの戻り値の型として何を指定すれば
3次元配列を返すことができるのでしょうか?
====下記Rコード====

library( Rcpp )
library( RcppArmadillo )
 
test <-'
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]

using namespace Rcpp;

// [[Rcpp::export]]
Type funcmat(NumericMatrix A, NumericMatrix B) {

int XXXX[10][20][30];

//行列A、Bに関する処理をXXXXに代入

return (XXXX);
}

'
sourceCpp(code=test)

a <- matrix(1:100,10)
b <- matrix(2:101,10)

c <- funcmat(a,b)
  • 素直に最初から最後までを C++ で書くことをお勧めします。そのほうが早いし,C++ で全部書けることを前提とした Cpp だと思うわけですよ。C++ で書けないのに R を介すれば書けるんじゃないかというのは,幻想じゃないか?本末転倒。 -- 河童の屁は,河童にあらず,屁である。 2016-04-04 (月) 19:45:21

自作関数の各役割について教えて下さい

初学者 (2016-04-01 (金) 21:35:40)

column_name <- function(name, ...) {
paste0(name, "[", paste(..., sep = ","), "]") }

上記のfunction(name, ...)の...はどのような役割があるのでしょうか。
また、2行目のpaste0()内は何をどうしようとしているのでしょうか。

よろしくお願いします。

変化をプロット・グラフ化

Rに困ったさん (2016-03-21 (月) 00:27:54)

例としまして,下記のようなデータがあるとします.

ID year distance density pattern
1  2010    20000   1000   move1
1  2011    25000   2000   move1
2  2010    15000   2000   move2
2  2011    12000   1000   move2

縦軸がdistance,横軸がdensityのグラフを作成します.
IDが1の前年(2010)と本年(2011)をプロットし,2点を線で結びたいです.
IDが2も同様にします.
IDが1とIDが2のデータは同じグラフ上に示したいです.
さらに,patternがmove1とmove2で色分けできると嬉しいです.

R初心者です.Rでの表現方法をご存知の方がいましたら,ご教示して頂けると助かります.

ICCパッケージでエラー

もち (2016-03-15 (火) 10:04:14)

ICCパッケージを以前使用した時は問題無く計算できていたのですが、最近あらためて使用してみるとエラーが帰ってきました。
何か情報をお持ちの方がいらっしゃったらお教え下さい。

> library(ICC)
> data(ChickWeight)
> ICCbare(Chick, weight, data = ChickWeight)

 aggregate(y ~ x, data = tdata, FUN = length) でエラー: 
   使われていない引数 (data = tdata, FUN = length) 

ICC version 2.3.0
R version 3.2.4 (2016-03-10)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.11.3 (El Capitan)

CRLFとLFの改行コードが混じったファイルを改行して読みたい

たく (2016-03-14 (月) 13:53:15)

お世話になります。read.tableでファイルを読む際に、元のファイルが2つの改行コードが混じっているようなので、どちらの改行も改行として読みたいと思います。文字コード自体を変えてしまうとどちらかしか読んでくれないようですしUTF-8の日本語も中に交じっているのですが、どのような方法がありますでしょうか。

漸化式の計算

さくら (2016-03-12 (土) 17:46:42)

漸化式を計算して,
結果を順番に示す方法を教えてください.
例えば,
Vn+1=2*Vn+3*Vn    で初期値を 0.5 にします.
お願いします.

Mac で sem パッケージが使えない

sem (2016-03-10 (木) 11:13:06)

パッケージ sem を使おうとすると,以下のようなエラーメッセージが出ます

> library(sem)
Error :  .onLoad は loadNamespace()('tcltk' に対する)の中で失敗しました、詳細は: 
  call: dyn.load(file, DLLpath = DLLpath, ...) 
  error:  共有ライブラリ '/Library/Frameworks/R.framework/Versions/3.2/Resources/library/tcltk/libs/tcltk.so' を読み込めません: 
  dlopen(/Library/Frameworks/R.framework/Versions/3.2/Resources/library/tcltk/libs/tcltk.so, 10): Library not loaded: /usr/X11/lib/libXft.2.dylib
  Referenced from: /usr/local/lib/libtk8.6.dylib
  Reason: image not found  
 エラー:  ‘sem’ に対するパッケージもしくは名前空間のロードが失敗しました 

なお,tcltk.so は実在しています

-rwxrwxr-x  1 root  admin  46268  1 25 14:13 /Library/Frameworks/R.framework/Versions/3.2/Resources/library/tcltk/libs/tcltk.so*

> file('/Library/Frameworks/R.framework/Versions/3.2/Resources/library/tcltk/libs/tcltk.so')
                                                                         description 
"/Library/Frameworks/R.framework/Versions/3.2/Resources/library/tcltk/libs/tcltk.so" 
                                                                               class 
                                                                              "file" 
                                                                                mode 
                                                                                 "r" 
                                                                                text 
                                                                              "text" 
                                                                              opened 
                                                                            "closed" 
                                                                            can read 
                                                                               "yes" 
                                                                           can write 
                                                                               "yes" 

sem のバージョン情報は以下の通り(確認した範囲で最新)

Package:            sem
Version:            3.1-6
Date:               2015-06-09

Macintosh で,OS のバージョン情報は以下の通り(最新)

OS X El Capitan
バージョン 10.11.3

R の sessionInfo は以下の通り(最新)

R version 3.2.3 Patched (2016-01-23 r69993)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.11.3 (El Capitan) 

locale:
[1] ja_JP.UTF-8/ja_JP.UTF-8/ja_JP.UTF-8/C/ja_JP.UTF-8/ja_JP.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.3      lattice_0.20-33  matrixcalc_1.0-3 MASS_7.3-45      grid_3.2.3      
 [6] arm_1.8-6        nlme_3.1-124     stats4_3.2.3     coda_0.18-1      mi_1.0          
[11] minqa_1.2.4      nloptr_1.0.4     Matrix_1.2-3     boot_1.3-17      splines_3.2.3   
[16] lme4_1.1-11      tools_3.2.3      abind_1.4-3

交互作用を含む重回帰分析の作図について。

初学者 (2016-02-28 (日) 17:31:37)

統計言語Rについての質問です。

y_a = a + b1*x1 + b2*x2 + b3*x1*x2 + e
y_b = a + b1*x1 + b2*x2 + b3*x1*x2 + e

重回帰分析で交互作用を検討し、上記のモデルのx2を平均値で固定した時に、
x1を動かすとyの値がどう変化するかを、信頼区間も含めて2次元の図で表したいです。
観測されたデータは100行(変数名含めず)で上50行は[class = a]で下半分[class = b]です。

[class = a](または[class = b])だけに分けて、信頼区間含めた2次元の図は書くことができるのですが、信頼区間含め[class = a]と[class = b]を一枚で収めるためのプログラミングコードがわかりません。

ggplotでもRの標準グラフィックでもどちらでも構いませんので、ご教授願います。
申し訳ありませんが、OKwebでも同様の質問しております。http://okwave.jp/qa/q9135292.html
216513.jpg
この画像は別々に画像をRから出力して、私が合成したものです。
これをRだけで作るコードををご教授願います。

arimaxモデルを使用し、予測を行った際の予測モデルのサマリーについて

limlim (2016-02-11 (木) 01:46:58)

約2年前〜前日までの数値より説明変数に日本の祝日・月・曜日を加え、1ヶ月先の予測値を出すようにしましたが、予測値の算出式を知りたかったのですが、各説明変数の係数と標準誤差(s.e.)しか表示されないようです。算出式(定数項+1次前の数値×自己相関係数+ホワイトノイズ+1次前の移動平均の係数×ホワイトノイズ+・・・・)というような表示の仕方はありますでしょうか? よろしくお願いします。

xreg.train<- data.frame(
 is.holiday=jholidays.xts["::2015-11-30"],
 year=year(date.train),
 month=as.factor(month(date.train)),
 day=day(date.train),
 wd=weekdays(date.train)) %>%
 dummy.data.frame %>%
 select(-month1,-wd日曜日) %>%
 as.matrix
fit.arimax.cal<- auto.arima(call.train.ts,seasonal=T,
 trace=Txreg=xreg.train)#arimaxモデルのフィッティング

ARIMA(2,0,2) with non-zero mean : 11402.32
ARIMA(0,0,0) with non-zero mean : 11664.95
ARIMA(1,0,0) with non-zero mean : 11402.53
ARIMA(0,0,1) with non-zero mean : 11451.06
ARIMA(0,0,0) with zero mean     : 11665.87
ARIMA(1,0,2) with non-zero mean : 11401.18
ARIMA(1,0,1) with non-zero mean : 11403.75
ARIMA(1,0,3) with non-zero mean : 11401.67
ARIMA(2,0,3) with non-zero mean : 11404.22
ARIMA(1,0,2) with zero mean     : 11400.29
ARIMA(0,0,2) with zero mean     : 11417.95
ARIMA(2,0,2) with zero mean     : 11401.2
ARIMA(1,0,1) with zero mean     : 11403.12
ARIMA(1,0,3) with zero mean     : 11400.76
ARIMA(0,0,1) with zero mean     : 11450.95
ARIMA(2,0,3) with zero mean     : 11403.14
Best model: ARIMA(1,0,2) with zero mean     
summary(fit.arimax.cal) Series: call.train.ts ARIMA(1,0,2) with zero mean

Coefficients:

        ar1      ma1      ma2  is.holiday    year    month2    month3 以下略
     0.7803  -0.2321  -0.1964   -379.1346  1.5137  195.9081  272.9902  以下略
s.e. 0.0837 0.0973 0.0656 42.8611 0.0387 96.4907 99.5181 101.4300 以下略

      month11   month12      day   wd火曜日  wd金曜日  wd月曜日 以下略
     147.3163  414.5067  -1.1747  -104.1835   61.3693   22.6069 以下略
s.e. 93.0474 94.0236 1.5022 31.7203 31.6301 26.3375 32.3830 以下略

sigma^2 estimated as 59126: log likelihood=-5675.48 AIC=11398.96  以下略

Training set error measures: Training set ME -0.4521637 RMSE 243.158 以下略

以下が予測結果(抜粋)

Forecasts:
Forecast
3529.367
3404.598
3385.364
3563.843

以下が予測開始日の前日から4日前までのデータ(抜粋)

3416
3329
3001
3446

ファイルの保存による処理速度の低下について

はぶ (2016-02-05 (金) 11:42:30)

以下のようにfor文内で文字列のベクトルをwrite()で一行ずつ上書き出力をしています。

dat <- NULL
for(j in 1:10) {
	for(i in 1:(sample(3:8,1))) dat[i] <- paste(sample(letters, sample(3:5,1)),collapse="")
	write(dat,"dat.csv",append=T,sep=",",ncolumns=length(dat))
}

実際の文字列ベクトルdatは他のデータフレームから抽出しており最大で数千要素、
添え字jのfor文のループ回数は数十万回のため処理速度を向上させたいと考えています。

ループごとにメモリからハードディスクに書き込みを行うのではなく、あらかじめ10000行×10000列で初期化したmatrixに1万ループ分程度のdatを格納し、write.table()などでまとめて保存すれば高速化できると考えたのですが、この方法は妥当でしょうか。

また、その場合は出力されるdatmatに初期化時の0が残るためファイルサイズが増えてしまいます。write()で一行ずつ出力した場合のように文字ベクトル以外はファイル中に含みたくないのですが、何か良い方歩はありますでしょうか。

宜しくお願いします。

自作関数の引数の書き出し

まるでダメ男 (2016-01-29 (金) 19:08:55)

失礼します。投稿文書の書式のリンクが無効で読み込めなく書き方がわからなかったので見にくいかもしれません。
自作関数の引数を名前にした値を名前にして返り値で自動的に書き出したいと思ったのですが、関数内にwrite.csvを使っても書き出しされません。
例えば、

kakidasi<-function(a,b) {
     何らかの処理でxを得る
return(x)
write.csv(x, paste("~/Student_dat/",substitute(a), "_", substitute(b), ". csv", sep=""), fileEncoding="Shift-JIS")
}

で処理を行っても得られるのはXだけです。フォルダに書き出しは行われていません。
何か良いアドバイスをいただけますでしょうか。

エラー: 引数の長さが 0 です

まるでダメ男 (2016-01-15 (金) 18:59:21)

失礼いたします。ただいま自作の関数を作成しました。
以下の関数を動作してみたところ

if (amoji_retsu >= bmoji_retsu) { でエラー:  引数の長さが 0 です

とのメッセージが出ました。

mojiretsu_hyouka <- function(a, b, sansyo) {
	gyou_num1 <- as.integer(rownames(a)) # aの行数全て
	gyou_num2 <- as.integer(rownames(b)) # bの行数全て
	l <- expand.grid(gyou_num1, gyou_num2) # 全ての組み合わせパターン(gyou2)を起点に繰り返す
	upto <- nrow(l) # lの行数
	k <- 1
	Jaccardの類似度表 <- NA
	while (k <= upto) {
		moji_a <- as.character(a[l[k, 1], 1]) # aの文字列をlの組み合わせで順に実行していく
		moji_a_kaisuu <- as.integer(a[l[k, 1], 3])
		moji_b <- as.character(b[l[k, 2], 1]) # bも同様に
		moji_b_kaisuu <- as.integer(b[l[k, 1], 3])
		amoji_retsu <- which(colnames(sansyo) == moji_a) # moji_aがある列番号を取り出す
		bmoji_retsu <- which(colnames(sansyo) == moji_b) # moji_bがある列番号
		amoji_gyou <- which(sansyo$id == moji_a) # moji_aがある行番号を取り出す
		bmoji_gyou <- which(sansyo$id == moji_b) # moji_bがある行番号
		if (amoji_retsu >= bmoji_retsu) {
			Jaccardの値 <- sansyo[amoji_gyou, bmoji_retsu]
			h <- data.frame(paste(moji_a, moji_b, sep = "_"), moji_a,
                               moji_a_kaisuu, moji_b, moji_b_kaisuu, Jaccardの値)
			Jaccardの類似度表 <- cbind(Jaccardの類似度表, h)
		} else {
			Jaccardの値 <- sansyo[bmoji_gyou, amoji_retsu]
			h <- data.frame(paste(moji_a, moji_b, sep = "_"), moji_a, 
				moji_a_kaisuu, moji_b, moji_b_kaisuu, Jaccardの値)
			Jaccardの類似度表 <- cbind(Jaccardの類似度表, h)
		}
		k <- k + 1 # カウント
	}
	return(invisible(Jaccard係数の類似度表))
}

この関数の引数,a,b,sansyoは

> head(a)
      抽出語     品詞 出現回数
1         身    名詞C       42
2       問題 ナイ形容       41
3       なる    動詞B       39
4     つける    動詞B       38
5 リスニング     名詞       37
6     解ける     動詞       32
> mode(a)
[1] "list"~

これと同じ形の引数 b
それと3つ目の引数sansyoは

    id          基本       法則        概要       概念       特徴 原理 基礎
1 基本          NA         NA          NA         NA         NA   NA   NA
2 法則      0.024         NA          NA         NA         NA   NA   NA
3 概要     0.005   0.0000          NA         NA         NA   NA   NA
4 概念      0.040    0.030         0.0069   NA         NA   NA   NA

このような形の縦横5422のデータベースです。

> mode(sansyo)
[1] "list"~

また、そもそも引数はこのようなリスト型でも良いのでしょうか?
環境は以下のようになっています。

sessionInfo() 
R version 3.2.2 (2015-08-14)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.11.1 (El Capitan)

では、宜しくお願いします。

エラー: Unknown parameters: familyと表示されグラフが出力できません。

初学者 (2016-01-10 (日) 15:18:37)

library(MASS)
b <- biopsy
b$classn[b$class==“benign”] <- 0
b$classn[b$class==“malignant”] <- 1

ggplot(b, aes(x=V1, y=classn)) + geom_point() + geom_smooth(method = glm, family = binomial)

 エラー: Unknown parameters: family

上記のようにRグラフィッククックブックのコードに従って、グラフを出力しようとしたところ、エラーが表示されてしまいグラフをを出力できません。このエラーの解決方法をご教授願います。

連続変数データにおけるlocalprob の解釈について

わっと (2016-01-08 (金) 18:14:05)

ベイジアンネットワークのパッケージ deal において、localprob というコマンドを実行すると、作成したベイジアンネットワークモデルに対して、離散型のデータの場合は変数間の条件付確率が返されて、連続型のデータの場合は回帰係数が返されるらしいのですが、その回帰係数の解釈がよくわかりません。

分析に使ったデータは、2014年のプロ野球のデータ(一部はゲーム内における選手の能力値)で、変数は能力値であるミート、パワー、走力、肩力、守備力、捕球の6つと、選手の年俸、身長、体重、年齢、本塁打数、安打数、三振数、盗塁数、失策数が9つの合計15の連続変数を用いて分析をしました。

肩力についての回帰係数を見てみると、

$肩力
         [,1]     [,2]       [,3]
[1,] 63.25038 57.33878 0.07894247

しかし、作成したベイジアンネットワークモデルにおいての有向辺が引かれているのは、7列目の変数の守備力から、6列目の肩力に対してだけです。
すると、回帰係数は1つだけ表示されると思うのですが、なぜ3つ出力されているのでしょうか?

また、表示された回帰係数はどのように解釈すればよいのでしょうか?

変数変換の方法について

(2016-01-03 (日) 01:45:45)

前提:下記二種類のデータフレームA,Bがあるとします。

A.変数xを保持するデータフレーム

x
0.0
0.1
...
9.9

※0.0-9.9は例であり実際は色々なる値を取ります。

B.変数xの区間と変換方法(切片と傾き)を保持するデータフレーム

start end intercept coefficient
0.0 0.3 5.0 1.0
0.3 0.9 4.7 2.0
1.5 2.0 3.0 4.0
...

※上記の区間は重なり合うことはありませんが、歯抜けになることがあります。
※レコード数は固定ではなく可変です。

やりたいこと:
1.データフレームBに基づきデータフレームAの変数xに変換処理をする。
具体的には変数xがデータフレームBのstart-endに該当すれば

intercept+coefficient*x

に変換する。

2.データフレームBのstart-endに該当しない区間がデータフレームAの変数xに存在する場合、線形補完して変換する。
上記データフレームBの場合、区間0.9-1.5が存在しないので

start end intercept coefficient
0.3 0.9 4.7 2.0
1.5 2.0 3.0 4.0

の両端を結んだ直線で変換処理を行う。

RExcel のインストールが上手くいかない

初心者R (2015-12-30 (水) 20:38:31)

データ解析にRを利用したくRExcelの導入を試みました。
R-3.2.3とstatconnDCOMをインストール後、R上でrscproxyのパッケージをインストールし、
rcomをダウンロードすると
警告メッセージ:
package `rcom` is not available
と表示されます。

またrcomを無視してRExcellnst3.2.15をインストールして起動してみましたが、
No R server configuredと表示されて、起動できませんでした。

RAndFriendsは消えてしまったようで、RExcelのダウンロード手順も検索しても新しい物が見当たらず困っております。
(R, Excelは管理者権限で実行しています)

パッケージをインストールはできるが、パッケージの読み込みに追加されない

わっと (2015-12-25 (金) 21:05:53)

初投稿です。
Rパッケージを最新版に更新したら、どうやらパッケージが初期化されてしまったみたいで、もう一度インストールをしようとしました。

パッケージ ‘deal’ は無事に展開され、MD5 サムもチェックされました 
警告:   一時的なインストール ‘C:\Users\wataru\Documents\R\win-library\3.2\file12c02e8d32da\deal’ を ‘C:\Users\wataru\Documents\R\win-library\3.2\deal’ へ移動できませんでした 

ダウンロードされたパッケージは、以下にあります 
       C:\Users\wataru\AppData\Local\Temp\Rtmp4O0dGX\downloaded_packages 
警告メッセージ: 
download.file(url, destfile, method, mode = "wb", ...) で: 
  ダウンロードされた長さ 189305 != の報告された長さ 200 です 

このように、パッケージdealをダウンロードすることはできたのですが、パッケージの読み込みのところを見ても、dealが追加されていません。どうすればよいのでしょうか?
ちなみに、Rを初めてインストールしたのは去年の五月で、今回初めて更新しました。使用OSはwindows10です。

連番の変数の使用

(2015-12-22 (火) 01:37:05)

連番の変数をassign()を使用して、それぞれにcsvを読み込みました
read.csv以下:datayardはcsvのあるフォルダ名が代入
file.nameはcsvの名前の共通部分
sort_listに各csvの異なる数字が格納されています。

for(j in 1:nrow(sort_list)) {
  assign(paste("data", j, sep=""), read.csv(paste(datayard, file.name, sort_list[j, ], ".csv", sep=""), header=T))}

これによってdata1,data2という変数に異なるcsvを読み込みました。
ここからが困っているところなのですが、
各data1,data2の同じ列のデータだけ取り出して一つの変数に代入したいのですが、dataの数が少ないときは

> data <- cbind(data1[, 1], data2[, 1])

という風にやれば望む形になるのですが、すべての列についてやりたいのと、data1~100を超えるので、ループで変数も連番でまとめたいのですが
イメージでは

for(i in 1:100) {
  data <- cbind(data, datai[, 1])
}

という風にやりたいのですが、どうやったらいいのでしょうか?

グラフの描画法

名無しさん (2015-12-20 (日) 19:14:49)

rで最小0、最大100の範囲で整数の一様乱数を1万個発生させ、その群をaとしました。table(a)でどの値が何個出てきたのかを調べるまではできたのですが、それをグラフにするやり方が分かりません。グラフについて詳しく言うと、横軸が整数値(0〜100)、縦軸が発現回数で線は曲線にしたいです。どのようなコマンドを入力すればよいのでしょうか。

データ数の異なる二元配置の分散分析の結果について

tao (2015-12-15 (火) 18:16:40)

初等的な質問で申し訳ございません。 以下のようなデータで

> test
   A B     C
1  1 1  8118
2  1 1  1785
3  1 1  2122
4  1 2  9448
5  1 2  8237
6  1 2 17868
7  1 2 33593
8  1 2     0
9  2 1 14015
10 2 1   632
11 2 2   947
12 2 2   330
13 2 2  5444
14 2 2  4140
15 3 1  2419
16 3 2   396
17 3 2  7809
18 4 1  2657
19 4 2   362
20 4 2     0
21 5 1   412
22 5 1  6637
23 5 2  2269
24 5 2  3873
25 5 2  2376
26 5 2 10303

test<-read.csv(file="test7.csv",header=TRUE)
summary ( aov (C~A*B, data=test) )
summary ( aov (C~B*A, data=test ) )

というコマンドを実行すると

> summary ( aov (C~A*B, data=test) )
            Df    Sum Sq   Mean Sq F value Pr(>F)
A            1 1.392e+08 139199274   2.676  0.116
B            1 2.728e+07  27281060   0.524  0.477
A:B          1 4.053e+07  40530623   0.779  0.387
Residuals   22 1.144e+09  52017772               
> summary ( aov (C~B*A, data=test ) )
            Df    Sum Sq   Mean Sq F value Pr(>F)
B            1 2.369e+07  23693485   0.455  0.507
A            1 1.428e+08 142786849   2.745  0.112
B:A          1 4.053e+07  40530623   0.779  0.387
Residuals   22 1.144e+09  52017772               

という結果がでてきて、交互作用については、一致するのですが、主効果の結果が違ってしまいます。
データセットの並べ方を変えてBの項目を先に並べても同じ結果となってしまいます。
これは何がいけないのでしょうか。
何か、ご存じの方がいらっしゃいましたら、お教え頂ければ幸いです。

コピペでpar()を入れるとエラー

R初心者 (2015-12-08 (火) 21:08:40)

Mac OSX上でRを動かしています。
棒グラフを書く際に、余白の調節をしようとpar(mar=)をコマンドに加えたいと考えています。
しかし、実際にやってみると

par(mar = c(10,3,2,2))                     

エラー:  想定外の入力です  in "par(mar = c(10,3,2,2))


このようなエラーが出るため余白の調節がされないままにグラフが出力されてしまいます。
一方で、データの取り込みからグラフの出力までをコピペで一気にせず、
グラフの取り込み→par(mar=)→barplot()とすると上手くいきます。
この理由が何なのか、また一度のコピペで綺麗に出力する方法があるのか知りたいです。
周りにRを使っている人がおらず、自分で調べてもよくわかりませんでした。
やはり、Mac上で動かしていることが原因なのでしょうか。

何かご存知の方がいらっしゃいましたら、知識を分けていただけると幸いです。
よろしくお願い致します。

回帰分析(型 (NULL) は変数 'x1' に対しては不正です )

初心者 (2015-11-28 (土) 11:31:03)

model.frame.default(formula = y ~ x1 + x2  でエラー: 
   型 (NULL) は変数 'x1' に対しては不正です 

重回帰分析を実行すると、上記のエラーメッセージが表記されます。
エクセルでデータセット(csv形式、21行4列)を作成しました。
1行目は変数名です。また、1列目〜4列目までは

id:Factor
y:int
x1:int
x2:int

という型式です。

> data<-read.csv("sample.csv",header=TRUE)
>lm(y~x1+x2, data=data)

model.frame.default(formula = y ~ x1 + x2  でエラー: 
   型 (NULL) は変数 'x1' に対しては不正です 

このようなエラーが発生してしまう原因をお教えいただければ幸いです。
よろしくお願いします。

重回帰分析における as.factor() の出力結果についての質問

まつ (2015-11-26 (木) 16:46:40)

申し訳ありません R 使いたての初心者です

単純な重回帰分析で実験ケースごとのカテゴリー変数を投入したいと考えています。

result<-lm(dependent~ hoge + as.factor(sortcase))
summry(result)

と記述しました。これを実行してみると

                       Estimate Std. Error t value Pr(>|t|)    
(Intercept)            0.1213389  0.0039691  30.571  < 2e-16 ***
hoge                   0.0300854  0.0080421   3.741 0.000184 ***
as.factor(sortcase)2   0.2413299  0.0074716  32.300  < 2e-16 ***
as.factor(sortcase)3  -0.0124357  0.0080555  -1.544   0.122657    
as.factor(sortcase)4  -0.1181738  0.0089075 -13.267  < 2e-16 ***

と結果が返されます。
as.factor(sortcase)1 が推定されないのはなぜですか?
Intercept と同じだからでしょうか

教えて貰えれば幸いです

複数の01データの分布を一覧するには?

たけ (2015-11-25 (水) 09:39:01)


お世話になります。01データ、あるいは数カテゴリのみのカテゴリカルデータ同士の分布と関係性を容易に一覧する方法をご存じでしたらお教えいただければ幸いです?
連続変数であれば相関係数行列cor(x)やplot(x)とすれば分布と関係性を大まかに一覧できますが、01データの場合、距離行列dist(x)と共起ネットワーク図plot(network(x))くらいしかないでしょうか?

行列の見出しと行数で数字を抽出

Rに困った (2015-11-18 (水) 17:01:20)

a=matrix(c(4,3,3,4,2,2,4,1,1),3,3)

とし,

  |4 3 3|
a=|4 2 2|
  |4 1 1|

のように行列を作成後,

colnames(a)=("A","B","C")

とし,

   A B C
  |4 3 3|
a=|4 2 2|
  |4 1 1|

とします.
ここから,C列(3,2,1)の[要素]情報を使って
aの配列にアクセス:
a[1,]の3列目,
a[2,]の2列目,
a[3,]の3列目
すなわち,c(3,2,4)を取り出したいのですが,
どなたかよい方法をご教授いただけないでしょうか?

heatmap図のlegendの描写位置について

かがみ (2015-11-16 (月) 16:52:13)

お世話になります。

data(iris)
heatmap(as.matrix(iris[,1:4]))
legend("topleft", colnames(iris)[1:4])

legendの枠を左上の余白に作成して図に被らないようにしたいのですが、どのようにすればよいでしょうか。おそらくheatmap図の左上の領域は余白になっているために、legendを描けないようなのです。

環境はWindows7、R3.1.2です。

お手数ですが、どなたかご回答宜しくお願いします。

RHmm

さくら (2015-11-14 (土) 15:23:35)

RHmm という隠れマルコフ解析用パッケージをダウンロードしたいのですが
見つかりません。
どこにあるか教えてもらえないでしょうか。

nomogram

TTT (2015-11-04 (水) 22:05:07)

非常に初歩的で申し訳ありません。
とある疾患について、Nomogramを作成したいのですが(論文でよくRがひっかっかてきます。)、EZ-Rでどのように操作すれば良いのかわかりません。(あくまで操作の問題です・・・)

何か参考に出来る書籍等ご存知の方はいらっしゃいませんでしょうか?

行列の操作(0/1の反転、値の置換)

通りすがり (2015-10-30 (金) 15:51:34)

行列の操作について質問です。

(質問1)
0または1を要素として持つM×N行列に対し
全ての要素を反転する(0を1、1を0に変換する)方法はありますでしょうか?

(質問2)
実数値を要素として持つM×N行列に対し
指定した列の値を指定した値(例えば0に置き換え)に
全て置換する方法はありますでしょうか?

複数の列に対するソート

(2015-10-21 (水) 14:48:54)

お世話になります。

以下のようなデータフレームxに対して、まずcat列で昇順にソートし、次にname列で降順にソートしたいのですが、どのようにすればよいでしょうか。cat列には"A","B"の2値しかなく、Name列には一意の文字列が格納されています。

cat <- c("A","B","B","A","A")
name <- c("aaa","ddd","bbb","ccc","eee")
weight <- c(51,55,72,57,64)
x <- data.frame(CAT=cat, Name=name, WEIGHT=weight)


お手数ですが、ご回答宜しくお願いします。

印刷の方向

cloud (2015-10-16 (金) 14:00:41)

いつもお世話になっています。
A4の用紙方向を下の様な感じで切り分けて印刷したいと考えています。
このコマンドではプリンタのデバイスの縦横設定を手動で事前に切り替えないと、うまく動作しません。
印刷方向をうまく切り換える方法をご存じないでしょうか。

if (yokogaki == FALSE) {
	win.print(width=8, height=11, restoreConsole = FALSE, printer = "プリンタ名" )	# 縦書印刷
	par(mar = c(16, 7, 4, 4))
} else {
	win.print(width=11, height=8, restoreConsole = FALSE, printer = "プリンタ名" )	# 横書印刷
	par(mar = c(5, 4, 5, 12))
}

シングルクォートとダブルクォートの違い

markovchainmontecarlo (2015-10-14 (水) 23:07:26)

いつもお世話になっております。
ふと思ったのですが、Rにおいてシングルクォート(’)とダブルクォート(”)の違いはありますでしょうか。

以下のコードと結果から違いはないと思われますが、確かな文献などが見つかりません。
ご存知の方がいらっしゃいましたら、教えた頂けたら幸いです。

> hoge <- 3
> print(hoge)
[1] 3
> print("hoge")
[1] "hoge"
> print('hoge')
[1] "hoge"

よろしくお願いいたします。

データフレーム名を変数として処理したい

中阪 隆 (2015-10-14 (水) 18:13:40)

データフレームを、固定の名前ではなく、変数名で取り扱うには、どうしたら良いでしょうか?
現在は、対象のデータフレームを操作するSQl文字列を生成して、sqldfで実行していますが、これ以外の方法も探していますが、見つけられていません。

よろしくお願いします。

無題

あき (2015-10-12 (月) 16:05:10)

最近になって、Rのパッケージをインストールして、何度か使用した後に、Rを終了すると、次回Rを起動させると、パッケージがインストールされていない状態に戻ってしまいます。前までは、Rを終了させてもパッケージは保存状態にありました。なぜこのようなことが起こるのでしょうか。

データ加工(NA、99999の置換)

(2015-09-29 (火) 12:42:24)

あるデータフレーム(1つの目的変数と200の説明変数)があり
・目的変数は0/1のみ
・説明変数は全て数値型でNAや外れ値の意味をもつ99999が含まれている
各説明変数について、NA、99999を該当するレコードの目的変数の平均値に置き換えたいのですが
どのようにやるとスマートでしょうか?

t値がとても大きい時のp値

windsor (2015-09-26 (土) 22:06:10)

t検定でt値がとても大きい場合、p値をpt関数で計算すると、p=0となってしまいますが、これをp=1.0E-200というような値で(その数値が統計学的に意味のある値かどうかは別として)表示することはできませんでしょうか?例えば、t値が52、自由度が4700で、以下のようなコマンドを用いた場合です。

pt(52,4700,lower.tail=FALSE)*2

どうぞよろしくお願いいたします。

xに勝手に数値が格納されています。どうすれば削除できますか。

初学者 (2015-09-26 (土) 20:26:23)

Rについての質問です。xに数字を格納した覚えがないのに、xに数値が格納されている状態になります。Rを再起動、再インストールしてもxに数値が代入されたままになってしまいました。このような状態を直すためにはどのようにすればよいでしょうか。以下のように命令をうつと、エラーメッセージが表示されます。attach関数を使って、filenameのxをfilename$xの前半部分を省きたいのですが、以下のエラーメッセージがでます。

dat <- read.csv("filename.csv",header=TRUE)
attach(dat)
以下のオブジェクトは .GlobalEnv? によってマスクされています: 
x 

よろしくお願いします。

並列計算のページについて

markovchainmontecarlo (2015-09-25 (金) 20:31:43)

Wikiに「並列計算について」の記載が乏しいと思いましたので、ページを新たに立ち上げようかと思っていますが、このような行為をしてもいいのでしょうか。
Rで並列計算のページは存じておりますが、もう少し簡単に扱える「snowfall」パッケージの紹介などをしようと思っています。
皆様のご意見を伺いたく思います。

CRANの数について

markovchainmontecarlo (2015-09-18 (金) 13:52:11)

CRANの数について質問があるので、ご存知の方がいらっしゃいましたら回答いただけると幸いです。

R3.0.2では非常に多くのCRANミラーサイトがあり、[JAPAN]では[TOKYO]と[YAMAGATA]がありました。
しかしR3.2.2では20程度しかなく、[JAPAN]はありませんでした。

今後ミラーサイトは(登録が済んでいないなどの理由から)順次追加されるとの認識でいいのでしょうか。

よろしくお願いいたします。

formulaの説明変数の指定について

CRA (2015-09-14 (月) 11:02:07)


回帰分析において 目的変数~説明変数 の形式でlm()を実行したいのですが、dataの列名に"-"が含まれているとエラーになるようです。

#正常に実行できる
x <- trees
lm(Volume ~ Girth, data = x)

#列名を変更
colnames(x)[1] <- "A-3"
lm(Volume ~ A-3, data = x)

このような列名を含むdataではどのように説明変数を指定すればよいのでしょうか。

宜しくお願いします。

heatmapのラベル名の色について

ヒート (2015-09-11 (金) 09:27:49)

お世話になります。

heatmap()で水平方向のラベルを特定の条件で色分けしたいと考えています。

x <- as.matrix(mtcars)
heatmap(t(x))

この場合、"Mazda"を含むラベルを赤、"Merc"を含むラベルを青にするにはどのようにすればよいでしょうか。
おそらくheatmap()の戻り値を使えばよいのだとは思うのですが、やり方がわかりませんでした。

環境はWin 7, R 3.0.2です。

どなたかご教示宜しくお願いします。

spatstatパッケージのKest、pcf関数の結果の違いについて

B4 (2015-09-05 (土) 07:45:52)

点パターンの凝集性を評価する際に、rがどのくらいの値でランダムな分布になるかを数値化したいと考えております。spatstatパッケージのKest関数、Lest関数を用いて、観察対象の点パターンを計算した結果と、完全にランダムな分布(CSR)から得られるプロファイルが交わる際のrの値が、pcf関数でCSRと比較した際に得られるrの値と倍くらい違うのですが、どういうことでしょうか?よろしくお願いいたします。

多重比較おける効果量・検出力について

R2 (2015-09-01 (火) 10:29:46)

お世話になります。

従来は多重比較によってp-valueを求めて有意である、有意でないという考察で終えていたのですが、"compute.es"や"pwr"ライブラリーを用いて効果量や検出力の解析をしたいと考えました。

しかし、ヘルプファイルを見てみましたがいずれのライブラリーもTukeyやDunnetのような多重比較によって得られた統計値を使用することを想定していないようでした。

多重比較における効果量・検出力を算出する方法について知見をお持ちであればご教示頂けませんでしょうか。Rでそのようなライブラリーがないというのであれば、参考書や論文の情報でも構いません。

宜しくお願いします。

ggplotで時系列を並べる

つなかん (2015-09-01 (火) 08:51:32)

お世話になります。ggplotってこんな図が苦手な気がします。facetとか使うと描けそうですけど、どうも見栄えがよくない。あえてggplot使うならどう描きますか?

timeval = seq(as.POSIXct("2014-07-17 10:00:00"), by="30 sec", length=10)
y1  = rnorm(10)
y2 = rnorm(10)^10
y3 = rnorm(10)
y4 = rnorm(10)

par(mfrow=c(3,1))
par(mar=c(0,4,0,4))
par(oma=c(4,0,4,0))
plot(y1~timeval, type="l",ylab="y1(mm)", axes=F)
axis(2); box()
plot(y2~timeval, type="l", ylab="y2(g)", axes=F)
axis(2); box()
plot(y3~timeval, type="l", ylab="y3")
lines(y4~timeval, type="l", col="red")
legend("bottomright", legend = c("y3", "y4"), col=c("black", "red"), lty=1)
mtext("Timeval", side=1, line=3, cex=0.8)

forecastパッケージのstl関数のエラーについて

kirioh (2015-08-28 (金) 22:32:50)

はじめまして、お世話になります。

forecastパッケージを使った時系列データの分離(トレンド・季節変動・誤差成分)に失敗し続けています。
具体的にはA列に日付、B列に数値の入った以下のようなCSV形式の時系列データを用いて、

Date SP

2015/1/1 14360

2015/1/2 19908

2015/1/3 16210

2015/1/4 15465

2015/1/5 12514

2015/1/6 12182
※以下2015/7/31まで
以下のコードを試みたのですが、

data = read.csv('test.csv',head=T, row.names=1)
ts <- ts(data, start = c(2015,1), end = c(2015,7), frequency=365)
stl <- stl(ts, s.window="per")
stl(ts, s.window = "per") でエラー:  一変量系列だけが許されます

というエラーが発生する状況です。またdecomposeを使っても

時系列の期間が無いか、2未満です

というエラーが発生します。 国内外のサイトで調べてdataをnumericで渡したり$indexを通したりと色々試したのですが、全く解決せず、恐れ入りますがこの条件から考えられる原因及び解決法をご教示くださいますでしょうか?
tsのclassは"ts"となっており、auto.arimaやacfは出力されはします。
ただtsをプロットすると2015.000からはじまったり、acfはlag軸の目盛りが0.00からはじまったり、不完全な状態です。
バージョンは3.1.2、OSはwindows 7になります。 何卒宜しくお願い致します。

十数万件データ同士のマージ

(2015-08-25 (火) 22:10:05)

お世話になっております。
2つのデータフレーム(共に十数万件で項目数100前後)のマージをmergeで試してみましたが、数分経っても結果は返ってきませんでした。
高速にマージしてくれるお薦めのライブラリがあれば教えてください。

関数の引数にデータフレームの列名を指定する方法

su? (2015-08-23 (日) 13:00:26)

お世話になります。

列a,b,c,,,,を持つデータフレームdfの要素を引数とする関数を作製したいと思います。
hikisu1にa列、hikisu2にb列、hikisu3にc列を指定する場合

func<-function(hikisu1, hikisu2, hikisu3){ }

という関数を作製して、使用時に

func(df$a, df$b, df$c)

としているのですが、これを、

func(a, b, c, data=df)

というように、dfの要素を指定できるような関数に作り替えたい思います。
方法について、ご教示頂けますと幸いです。

(理由はdfの他の要素も修飾することを可能とするためです。)

データフレームの各項目についてclass()を適用する方法

te (2015-08-20 (木) 21:59:32)

apply(df[1,1:dim(df)[2]],2,class) だと想定どおりの結果となりません。
numeric型のものがあるにも関わらず、すべてcharacter型と返ってきます。
どのように修正すればよいでしょうか。

ヒートマップのカラーチャートについて

mappa (2015-06-30 (火) 15:29:08)

お世話になります。"Heatplus"ライブラリーの"regHeatmap"を用いて行列のデータをヒートマップにします。

以下のように実行するとファイル右側に表示されるカラーチャートの範囲が-2〜1になりますが、この範囲を行列中の数値の範囲である1〜100に対応させたいと考えました。
filefile_1.pdf

source("http://bioconductor.org/biocLite.R")
biocLite("Heatplus")
library(Heatplus)

set.seed(123)
data <- array(ceiling(runif(100,min=1,max=100)), dim=c(10,10))
colnames(data) <- rownames(data) <- 1:10
pdf(file="file_1.pdf")
plot(regHeatmap(data, col=heat.colors))
dev.off()

そこで、以下のようにbreaksでカラーチャートの範囲を指定したのですが、ヒートマップの色が白と赤のみになってしまいました。
filefile_2.pdf

set.seed(123)
data <- array(ceiling(runif(100,min=1,max=100)), dim=c(10,10))
colnames(data) <- rownames(data) <- 1:10
pdf(file="file_2.pdf")
plot(regHeatmap(data, col=heat.colors, breaks=seq(1,100,10)))
dev.off()

ヒートマップ化する行列の値とカラーチャートの色を一致させるにはどうすればよいでしょうか。"Heatplus"ライブラリーに限定せず、どんなライブラリーを使用しても構いません。環境はWindows 7の32bit、R 3.0.2です。

お手数ですが、ご回答宜しくお願いします。

関数内でのデータフレームの成分の参照

kddoi (2015-06-29 (月) 20:34:11)

お世話になっております。関数内でのデータフレームの成分を参照したいのですが、with関数が思った通りの動作をしません。
attachとdetachを使えば上手く動くのですが、同一名の変数が存在する可能性などを考慮してできればwithを使いたいのですが、どのようにすればよろしいでしょうか?tmp1が想定していた書き方で、回避策がtmp2となっております。

df <- data.frame(a=c(1,2,3), b=c(3,2,1))

tmp1 <- function(eq, dat) {
  return(with(dat, eq))
}

tmp2 <- function(eq, dat) {
  attach(dat)
  d <- a+b
  detach(dat)
  return(d)
}

tmp1(a+b, df)
tmp2(a+b, df)

以上、よろしくお願いいたします。

T検定を行うためのデータ加工について知りたい。

ちまっく (2015-06-08 (月) 03:50:53)

Rによる統計について。

当方、Rの初心者です。
Rによる「 T-検定 」を行いたい所存です。長文で失礼します。

元データが約5万あり、T-検定を行うため、データの加工を簡単に行える方法をお聞きしたいです。

元データは以下のような形です。

セッションID,アイテムID,大分類,小分類,ブランド,閲覧日時,購入の有無
6033,162429,日用品,歯ブラシ,647,43:06.0,0
6033,249019,雑貨,枕カバー,240,43:17.0,1
1003,169032,日用品,洗剤,340,21:34.0,0
1003,42543,日用品,歯ブラシ,205,25:55.0,0
1003,190788,日用品,洗剤,86,28:57.0,0
7062,154026,日用品,歯磨き粉,47,43:56.0,0
7062,30637,日用品,歯磨き粉,151,44:21.0,0
8011,168023,雑貨,プランター,150,44:52.0,0
8011,198903,雑貨,鉢,240,45:28.0,1
8011,157220,日用品,シャンプー,9,47:22.0,0



データを下データのように加工するための簡単な方法をお教えください。
セッションID毎に
大分類
・購入の場合、購入するまでに大分類上で何品閲覧したか
・非購入の場合、大分類上で何品閲覧したか
小分類
・購入の場合、購入するまでに小分類上で何品閲覧したか
・非購入の場合、小分類上で何品閲覧したか
滞在時間
・購入の場合、購入するまで何時間、分、秒、滞在したか(閲覧一番目で購入した際は、0:00で良いです。)
・非購入の場合、何時間、分、秒、滞在したか

このようなデータの形にしたい↓
大分類閲覧数(購入),大分類閲覧数(非購入)
2,1
1,1
小分類閲覧数(購入),小分類閲覧数(非購入)
2,2
2,1
滞在時間(購入),滞在時間(非購入)
0:11,7:23
0:00,0:25

以上です。
よろしくお願いします。

リストの中身に一括して関数を適用する。(eval(parse(text="")の中身の変数名を番号順に繰り返したい。)

たけ (2015-06-03 (水) 20:56:34)

以下のように、データよって長さが変化するinputについて、
計算結果をリストに格納し、リストの各値に基づく集計をしたいと思います。
最後のsum以下の部分をinputの数に合わせて増減させる良い方法がありましたらご教授いただければ幸いです。

input <- c(10,20,30)#与えるデータの数はいつも3つではない。
list <- list(0)
for(i in 1:length(input)){ list[[i]] <- input[i]/10} #任意の計算
sum(list[[1]],list[[2]],list[[3]])#ここをinputの長さに応じて変化させたい。

なお、この例であればリストを展開してしまう方法もあると思いますが、実際の計算はリストの中にあるフォーマットは複雑で、sumではなく専用の関数なので、上記のようにリスト1からを並べて記述する必要があります。eval(parse(text="ここを工夫する"))などとしないといけないのではないかという所まで理解できています。
どうぞよろしくお願いします。

半角文字から全角文字への変換

分分 (2015-05-27 (水) 17:39:05)

お世話になります。

以下のように英数字やスペース、記号からなる半角文字列を全角文字列に変換したいのですが、よい方法があればご教示ください。環境はWindows 7のR 3.0.2です。

a <- c("asdf","12 /_")


宜しくお願いします。

印刷について

cloud (2015-05-24 (日) 12:48:35)

お世話になります。

windows7及び8でR i386 3.2.0を使用しています。
clanはRODBCのみ使用しています。
デバイスはwin.print()を使用しています。

複数枚のグラフをループさせて1度に作成しています。
1枚ごとにdev.offしている為、plot関数を通る度にwindowsのプリンタダイアログが表示されて印刷ボタンをクリックしなければならない為、効率が良くありません。

これを回避して、印刷ボタンを1回クリックのみでグラフを連続印刷する方法をご存知ないでしょうか。
解説書や、webを調べたのですが、印刷については詳しい資料が見つからなくて困っています。解決策をご教示頂ければ幸いです。

gnupack12.03におけるESSの導入方法

gnu (2015-05-19 (火) 11:43:15)

お世話になります。

Windows7でgnupack_devel-12.03のemacsを使用しています。
ESSを使用したいと思い、
1 .emacs.d/site-lispにessフォルダを作成
2 同フォルダ内のess/lisp/ess-site.elの329行を
 Rのインストール先に合わせて次のように変更
(setq-default inferior-R-program-name "C:/r/bin/i386/Rterm.exe")
3 init.elに次の行を追加
(require 'ess-site)

その上でemacsを再起動すると、次のようなメッセージが出て、ESSが機能しません。

Warning (emacs): None of 'w32-short-file-name, 'win32-short- file-name,
or 'mswindows-short-file-name are defined!
You will have to manually set   ess-program-files (in ess-custom.el) to
the correct "8.3"-style directory name.
Warning (initialization): An error occurred while loading `/home/.emacs.d/init.el':

Symbol's function definition is void: w32-short-file-name
...

ess-custom.elを調べてみたのですが、修正方法がわからず困っています。
解決策を御教示いただければ幸いです。

zooライブラリーを、古いバージョンに戻す方法

tt (2015-05-14 (木) 13:14:39)

こんにちは。
zooのパッケージを最新のzoo_1.7-12に更新後、既存のプログラムで問題が起こるようになりました。とりあえず、旧バージョンに戻したいのですが、どうすべきがご教授頂けないでしょうか?
使用しているのは、Windows版R i386 3.1.3です。
よろしくお願いします。

3次元有向線分とラベルの表示

たにし (2015-05-09 (土) 13:26:58)

3次元空間上の有向線分を始点/終点の座標を指定して表示し、あわせて当該有向線分に対するラベルを表示するにはどうしたらよいでしょうか。有向ですので単なる線ではなく矢印等の形になっていないと困ります。

glmmMLの結果のcallの画面出力をテキスト化してエクセルに書き込むには

ぷうや (2015-05-08 (金) 17:18:36)

glmmMLの実行結果のcallを、エクセルファイルに出力したいのです。やり方を教えてください。

> myResult <- glmmML(y ~ x1 + x2 + x3, family = "poisson", data = myData, cluster = myID)

> myResult$call
glmmML(formula = y ~ x1 + x2 + x3, family = "poisson", data = myData, cluster = myID)


この、"glmmML(formula = y1 ~ x1 + x2 + x3, family = "poisson", data = myData, cluster = myID)"をそのままテキスト化して、エクセルのシートの一つのセルにwrite.xlsx()を使って自動で書き込むコードを書きたいのです。クリップボードなどを経由する方法ではなく、指定したファイル名、シート名のエクセルシートに書き込む方法が知りたいです。ちなみに使用OSはMac OS 10.9.5です。よろしくお願いします。

カナ文字を列名に持つ行列を Sweave 処理するときにエラー

河童の屁は,河童にあらず,屁である。 (2015-04-22 (水) 13:45:58)

たまには私も質問したい。
以下のような内容の test.Rnw (エンコーディングは EUC-JP)

<<>>=
result <- matrix(1:4, 2)
colnames(result) <- c("a", "ア")
result
@

を,以下のようなファイルで Sweave 処理すると

#!/usr/bin/Rscript --vanilla
Sweave("test.Rnw", encoding="euc-jp")

できあがる test.tex の大きさが途方もなく大きくなる。

-rw-r--r--  1 foo  503  1000187  4 22 13:33 test.tex

どんな風になっているか hexdump で見てみると

0000080 7d 0a 20 20 20 20 20 61 20 20 20 a5 a2 20 20 20
0000090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
*
00f42c0 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 5b 31

となっており,* の部分に 20 がびっしりと詰まっている。
カタカナの列名を付けようとするとこのようなことが起こるようだ。

<<>>=
result <- matrix(1:4, 2)
colnames(result) <- c("a", "b")
result
@

だと,

-rw-r--r--  1 foo  503  183  4 22 13:40 test.tex

で,何の問題もない。
何がいけないのか,回避策はあるのか。

数字から文字を取って平均値を求めたいのですが

さくら (2015-04-22 (水) 13:40:23)

66avg のような数字が並んでいます。(csvのファイルになっています)
まず,数字からavgをとります
次に,上から3つずつ平均値を求めます.
方法を教えてください。
困っています。

pdf()について

Pikyu (2015-04-21 (火) 20:26:33)

お世話になります。pdf()で横幅の広い画像を保存したいのですが、widthが200を超えると保存されたファイルが真っ白になってしまいます。

pdf(file="abc1.pdf", width=200, height=7)
plot(1:10)
dev.off()

pdf(file="abc2.pdf", width=201, height=7)
plot(1:10)
dev.off()

この現象を回避するにはどうすべきでしょうか。環境はWindows 7 64bit, R3.1.2です。

よろしくお願いします。

カプランマイヤー曲線にn.at.riskを入れたいのですが

sawako (2015-04-21 (火) 08:43:20)

初めまして。
初歩的な質問で恐縮です、ヒントでもいいので教えていただければ幸いです。
よろしくお願いいたします。


survplotを用いてカプランマイヤー曲線にn.at.riskの表をいれようとrmsパッケージをダウンロードしました(「パッケージ ‘rms’ は無事に展開され、MD5 サムもチェックされました」の表記確認)。

「 関数 "survplot" を見つけることができませんでした」のエラーメッセージが出てしまいます。

ネット上でいろいろ調べて「library(rsm)」「library(survplot)」などのコマンド入力しているような記述もあったのですが、どちらも「’ ’という名前のパッケージはありません」と出てきてしまいます。

またlibrary(survival)は実行済みです。

お知恵を貸していただきたく思います。よろしくお願いいたします。

マージとsumを同時にやる方法

うま (2015-04-14 (火) 17:58:19)

連日失礼します。
▼サンプル

識別ID,視聴時間,性別
A,1,men
A,2,men
A,3,men
B,4,men
B,5,men
B,6,men
B,7,men
C,8,women
C,9,women
D,10,women

▼求める結果

A,6,men
B,22,men
C,17,women
D,10,women

さらにここから散布図を作りたいと思っています。
(男性女性別にどこに集中しているのかの傾向を見たいと思っています。
今、下記サイトを見ながらトライしているのですが、一日かけても導き出せず。
http://sssslide.com/www.slideshare.net/abicky/r-10128090
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/43.html

どうぞよろしくお願いします!

重複カウントと平均について

うま (2015-04-13 (月) 19:43:22)

お世話になります。

Rで以下の式を計算しようとしているのですが、ちょうどよい方法が見つかりません。
マージ関数やsumif関数などを利用したのですが、上手くいかなく思案しています。

識別ID,視聴時間,性別
A,1,men
A,2,men
A,3,men
B,4,men
B,5,men
B,6,men
B,7,men
C,8,women
C,9,women
D,10,women

求める結果

men
 sum=28, ave=14
women
 sum=27, ave=13.5

識別IDは同一だと同じ人であることを指しています。
上記のサンプルでいうと視聴者は4人ということになります。

マージやsumifなどでは上手くいかないものなのでしょうか?
ヒントだけでもお願い致します。

パッケージのロード情報をワークスペースに保存出来るでしょうか?

ぺぃにゃん (2015-04-11 (土) 14:54:36)

お世話になります。

RGuiのコンソール画面で幾つかパッケージを呼び出して作業を行い、途中で作業を終え一旦終了する際にワークスペースの保存を選択すると次回起動時にオブジェクトの情報が再現されそこから作業を再開する事が出来ます。

この時それまで使用していたパッケージもロード済みの状態で作業が再開出来ると面倒がなくて良いのですが何かいい方法はございますでしょうか?

保存する際にオプションがある、もしくはパッケージの情報は別で保存しておいて別のコマンドで一気に呼び出してロードするなどございましたらご示唆よろしくお願いします。

関数内での変数の指定について

かず (2015-04-11 (土) 13:53:34)

お世話になります.
自作関数内で,nlmeパッケージのgls関数を呼び出したいのですが,

library(nlme)
myfunc <- function(data, y, group, time, id, cov) {
  outcome <- deparse(substitute(y))
  group <- deparse(substitute(group))
  time <- deparse(substitute(time))
  cov <- deparse(substitute(cov))
  form <- paste(outcome,'~ as.factor(', group,')+as.factor(',time,')+as.factor(',
                group,'):as.factor(',time,')',cov)
  id <- deparse(substitute(id))
  res <- gls(as.formula(form),
            data=data, corr=corSymm(form=~1|id), 
            weights=varIdent(form=~1|time))
  return(res)
}

myfunc(BodyWeight,weight,Diet,Time,Rat, )

上記の実行で,

gls(weight~Time+Diet,
    data=BodyWeight, corr=corAR1(form=~1|Rat), 
    weights=varIdent(form=~1|Time))

の結果を得ることを意図しているのですが,myfunc関数の引数であるidとtimeをmyfunc関数内でgls関数に渡す方法がわかりません.
deparse関数で文字列になってしまっているからなのかとも思いますが,そのままidと書いても駄目のようです.
ご教示のほどよろしくお願いいたします.

℃の表示

けい (2015-04-06 (月) 15:39:48)

いつも参考にさせていただいております。
今回の質問は、温度表示の「℃」についてです。
日本語変換の「℃」では文字化けすることもありうるので、英語表現にしていますが、

lab = expression (paste("Temperature", "(", ~degreeC, ")" ))
text(0.5, 0.5, lab)

で表示させると、上付きの○部分がCと同じ大きさになってしまい、バランスが悪いです。「℃」のような表現ができればいいのですが。
○部分を小さくすることは可能でしょうか。
よろしくお願いいたします。

2軸のグラフ作成

TGI (2015-04-06 (月) 08:25:40)


stripchart()の右側のy軸に異なる目盛を作り、abline()で線を追加したいのですが、以下のように実行すると右側のy軸の範囲が左側のy軸の範囲に設定されてしまいます。

y <- -10:9
x <- factor(rep(1:2, 10))
stripchart(y~x, vertical=TRUE)
abline(h=3, col="red", lwd=2, lty="solid", ylim=c(0,10), xaxt="n", yaxt="n")
axis(side=4, at=seq(0, 10, by=2))

そこで、以下のようにabline()の前にstripchart()でプロットを仮作成するとうまくいくのですが、もっとスマートな方法はないでしょうか。

y <- -10:9
x <- factor(rep(1:2, 10))
stripchart(y~x, vertical=TRUE)
par(new=TRUE)
stripchart(0, xaxt="n", yaxt="n", ylim=c(0, 10), col="white")
abline(h=3, col="red", lwd=2, lty="solid", ylim=c(0, 10), xaxt="n", yaxt="n")
axis(side=4, at=seq(0, 10, by=2))

宜しくお願いします。

dataframeの一行削除について

help (2015-04-05 (日) 10:17:32)

初歩的な質問で申し訳ありません.

例えば,irisであれば,iris[,-1]とすれば,一列目が削除されたデータフレームができます.
これは行につても使えると,どこかで書いたあった記憶があるので,iris[-1,]としても1行目が消えません.そこで,例えば,miris=as.matrix(iris)とやってからmirisに同じことをやると一行目が消えます.dataframeには[-1,]の手法が使えないのでしょうか.

beeswarm()について

8 (2015-04-03 (金) 09:16:24)

お世話になります。beeswarm()を使用しているのですが、以下のようにサンプル数に応じて出力する画像ファイルを大きくすると、グラフ枠から最初と最後のサンプルまでの横軸方向のスペースが大きくなってしまいます。

library(beeswarm)

pdf(file="iris.pdf",width=5,height=7)
beeswarm(Sepal.Length~Species, iris)
dev.off()

iris2 <- rbind(iris,iris,iris,iris,iris)
iris2[5] <- rep(c(letters,LETTERS),100)[1:nrow(iris2)]
pdf(file="iris2.pdf",width=35,height=7)
beeswarm(Sepal.Length~Species, iris2)
dev.off()

サンプル.png
このスペースを小さくするにはどうしたらよいでしょうか。環境はR 3.1.2のwindows 7です。
宜しくお願いします。

カイ二乗値がとても大きい時のpchisq()

NNDDMMCC (2015-03-31 (火) 19:35:51)

お世話になります。
カイ二乗値がとても大きい時に「1-pchisq」を計算すると,0と表示されてしまいますが,それを1.0e-20といったように,表示する方法はありますでしょうか?具体的には,

> 1-pchisq(70,1)
[1] 1.110223e-16 #1.0e-16まではしっかりと表示されますが
> 1-pchisq(71,1)
[1] 0 #それより小さくなるとすべて0になってしまうようです。

といったことを解消したいのですが,どうぞよろしくお願いいたします。

ネット上のデータを大量にRに取り込む方法

たかし (2015-03-29 (日) 13:44:17)

以下のURLは今月の3月4日に行われた競輪のレースの出走表です。
http://keirin-station.com/keirindb/race/member/36/20150304/1/
この出走表から個々の選手の競争得点の標本分散を計算します。
次に以下のURLはその結果です。
http://keirin-station.com/keirindb/race/result/36/20150304/1/
ここから3連単の配当金をとってきます。
見たい関係は競争得点の標本分散と3連単の配当金なのですが、この2つの数の組を同様に違うレースから約300レースとってきたいのですが、これらはこのホームページの出走表にいちいちアクセスしてとってくるしか方法がないのでしょうか?何か効率的なやり方はありますか?

lapply()の返り値について

XXX (2015-03-27 (金) 18:10:29)

お世話になります。lapply()に自作の関数を渡して処理をする際に、返り値が画面に表示されないようにしたいのですが、invisible()が機能しないようです。

mysum <- function(x) {
	invisible(a <- sum(x))
}

x <- 1:5
mysum(x) # 返り値は表示されない

x <- c(list(1:5), list(2:6))
lapply(x, mysum) # 返り値が表示されてしまう

どのようにすればよいでしょうか。
宜しくお願いします。

日本語が急に文字化けするようになりました

月野 (2015-03-25 (水) 14:45:04)

初めて投稿させていただきます。win7 64bitで、R3.1.2を使用していたところ、先日突然、コンソールのメッセージが全て英語になり、日本語を入力しても文字化けするようになってしまいました。これまで対応として試みたのは

・Rconsole 内の のlanguage = ja_JP.UTF-8 に上書き
・Sys.setenv での変更

> Sys.setenv(LANG = "fr")
> x
Erreur : objet 'x' introuvable
> Sys.setenv(LANG = "ja_JP.UTF-8")
> x
Error: object 'x' not found
> Sys.setenv(LANG = "en")
> x
Error: object 'x' not found

になります。R3.1.3をインストールしても同じ症状が継続して出ています。対処方法を御教示いただけますでしょうか。よろしくお願いします。

重回帰(lm)でのpredictの使い方について

NwFc (2015-03-22 (日) 20:48:16)

初めて投稿させて頂きます.ルールが余りわからず失礼があればお許しください. ← プログラム等をどうやって入力するか,ソースを見るべし

Rで重回帰をしようとして,予測のところで躓いています.初歩的な理解不足と思いますが,どなたか,私が何を勘違いしているかを御教え頂けると嬉しいです.
やりたいことはデータを与えてlmで重回帰式求め,新しいデータでyを予測するというものです.単回帰の場合はうまくいくのですが,説明変数xを二つにすると,predictで素直に計算してくれず,元データの行数と合わないなとど,警告がでます.xの一組のペア(50,50)でyを予測してほしいだけなのですが.
 predictは重回帰では使えず,係数を求めて自分でベクトル演算するしかないのでしょうか? どなたか助けてください.

> x1 <- c(30, 20, 60, 80, 40, 50, 60, 30, 70, 60)
> x2 <- c(30, 50, 60, 80, 40, 30, 60, 30, 40, 60)
> x <- cbind(x1, x2)
> a <- as.matrix(c(2, 5))
> y <- x %*% a
> 
> z <- lm(y ~ x)
> new <- data.frame(x1 = 50, x2 = 50)
> predict(z, new)
  1   2   3   4   5   6   7   8   9  10 
210 290 420 560 280 250 420 210 340 420 
Warning message:
'newdata' had 1 row but variables found have 10 rows

リストの要素の削除について

Lee (2015-03-17 (火) 20:05:19)

たびたびすみません。再び質問させて頂きます。 # 「すいません」などという日本語はありません
複数の文字列を要素にもつリストxから、文字列ベクトルyの要素を削除して、リストzを作りたいと考えています。

(x <- list(c("Aaa","Abb","Acc"), c("Baa","Bcc","Bds","Bas"), c("dsfa","fgsd","gtsd","frgh")))
y <- c("Acc", "fgsd")
(z <- list(c("Aaa","Abb"), c("Baa","Bcc","Bds","Bas"), c("dsfa","gtsd","frgh")))

どのような処理をすれば可能でしょうか。使えそうな関数でもよいので教えて頂けませんか。
宜しくお願いします。

リストの要素の結合について

Lee (2015-03-16 (月) 15:47:44)

お世話になります。

以下のような2×3の行列を要素にもつリストがあり、rbindで6×3の行列にします。

list_dat <- list(matrix(1:6, nrow=2, ncol=3),matrix(7:12, nrow=2, ncol=3),matrix(13:18, nrow=2, ncol=3))
rbind(list_dat[[1]],list_dat[[2]],list_dat[[3]])


本当のデータはもっとたくさんの要素を持つので、この処理をlapply()やsapply()で実行しようとしたのですが結合した行列が作れません。どのようにすればよいでしょうか。

よろしくお願いします。

検定ベクトル処理のためのチェイン構文+doの仕様方法について

コバヤシカズオ (2015-03-12 (木) 16:33:43)

お世話になります。グループ毎にoneway.testを実行したく,下記例を
インターネットで見つけました。
 data %>% group_by(AAA,BBB) %>% do(hensu=lm(Y~X,data=.))
真似をして,下記で実行したところエラーとなりました。
 data %>% group_by(CCC) %>% do(oneway=oneway.test(YY~XX,deta=.))

Error in oneway.test(YY~XX, data= .SD) : not enough groups

CCCの中に複数のカテゴリー(文字)は確認しました。
基本的な使用方法の間違いでしょうか。ご指導戴けると幸いです。R3.1.2 Windows8

データフレームからベクトルへの変換

FK (2015-03-12 (木) 09:49:07)

お世話になります。以下のようなデータフレームxの要素をひとつのベクトルに変換したいのですが、何かよい方法はないでしょうか。要素の順番はどうでも構いません。as.vector()ではできませんでした。

宜しくお願いします。

sex <- c("F","F","M","M","M")
height <- c(158,162,177,173,166)
weight <- c(51,55,72,57,64)
( x <- data.frame(SEX=sex, HEIGHT=height, WEIGHT=weight) )

decompose関数について

okh (2015-03-10 (火) 11:28:18)

統計数理研究所のDecompとRのdecompose関数は同じ計算法なんでしょうか?最近出版された「楽しいR」という本の59ページを読んでいて気になったのですが。どなたか知ってますでしょうか。

「Wiki内のGoogle検索について」など2件

Montecarlo (2015-03-08 (日) 22:56:02)

いつもお世話になっております。

質問が2件ありますので、お答えいただけたら幸いです。

・Wiki内検索について
本Wiki内の検索を一番下のGoogle検索窓からWiki内を検索しましたが
いくつか「有効なWikiNameではありません」と表示されて、検索がうまくいっていないようです。
この解決策をご存知の方がいらっしゃいましたら、教えていただけたらと思います。

・画像の添付について
トップページには以下のように書かれていました。
> 各ページへのファイル添付については、ページ上部の「ファイル添付」より、画像ファイルのみユーザー認証なしで可能としてあります。その他のファイルの添付はユーザー認証することで可能です。
しかしながら、添付しようとすると「管理者パスワードが一致しません。」と出てしまい、添付ができませんでした。
添付の具体的な方法を教えていただけたらと思います。

よろしくお願いいたします。

meta packageでのp値の桁数

NNDDMMCC (2015-03-04 (水) 14:15:42)

お世話になります。
R version 3.1.1 (2014-07-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
OS:windouws 7
でメタ解析をmeta packageを用いて行っております。
そのなかで,metabinを用いて以下のようなプログラムを実行しました。

X <- matrix(c(1282, 1890, 1368, 2426, 1749, 2606, 1462, 2536), 2, 4, byrow=TRUE)
res <- metabin(X[,1], X[,2], X[,3], X[,4], sm="OR", comb.fixed=TRUE)
res$pval.fixed

としてfixed effect modelのp値を表示しようとしたのですですが,数字が小さすぎて"0"と表示されてしまいます。
とても小さい値(おそらく1.0E-16以下だと思います)を表示するにはどうすればよろしいでしょうか。
どうぞよろしくお願いいたします。

自分で定義した関数中でstepが使えない

HA (2015-02-28 (土) 21:57:05)

お世話になります。
Rを始めて3ヶ月、プログラミングはRが初めて、という者です。
環境は 
R version 3.1.2 (2014-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
OS:Windows 7 professional
です。
アンケートの分析で、ロジット(将来的にはプロビットも)分析を行い、step関数のステップワイズ法で変数選択をしようとしています。
目的変数にあたる項目が複数あり、将来的に似たような分析をすることなどから、一連の操作を一つの関数にまとめておきたいと考えました。
そして以下のような関数を作りました(エラーに関係しない部分は省いております)

y = runif(100) > 0.3  #テストデータ
x1 = runif(100)
x2 = runif(100)
x3 = runif(100)
x4 = runif(100)
t.d = data.frame(y,x1,x2,x3,x4)
obj = y~.
null = y~ 1

t.func = function(obj, null, family = binomial,  #関数本体
                 data, direction = "both"){
 on.exit(sink())
 sink("test.txt")
 rg1 = glm(obj,family ,data)
 rg2 = glm(null,family ,data)
 step(rg1, scope = list(upper = rg1, lower = rg2), 
      direction = direction)
}
t.func(obj, null,data = t.d)

これを実行すると、

「Error in UseMethod("family") : 
  no applicable method for 'family' applied to an object of class "NULL"」

というエラーメッセージが出て、停止してしまいます。
1行ずつreturnで結果を返していったところ、stepの部分でエラーが出ているようなのですが、familyはstepの引数に含まれていないので、どうすればいいのか見当がつきません。
directionを"backward"にすれば動くのですが、できればステップワイズ法(direction = "both")でも結果を得たいと考えています。
本サイトでは、glmで検索した結果と「Rの関数定義の基本」については目を通しましたが、解決に繋がると理解できるものはありませんでした。
(「Rの関数定義の基本」の「引数として関数オブジェクトを与える場合」は関連するかと思ったのですが、理解できませんでした)
どうかご助言よろしくお願いいたします。

引数の確認について

Montecarlo (2015-02-22 (日) 23:37:30)

いつもお世話になっております。
今回引数の確認について質問をさせていただきます。

関数の中で関数を定義し、その関数が調べることが可能かの疑問があります。
具体的には以下の事象です。

以下のプログラムを走らせると

Dist.norm <- function(arg.m, arg.sd){
	return(
		list(
			random = function(n) rnorm(n, arg.m, arg.sd)
			, mean = arg.m
			, density = function(x) dnorm(x, arg.m, arg.sd)
		)
	)
}

TestFunction <- Dist.norm(2, 3)
TestFunction
set.seed(0);TestFunction$random(3);set.seed(0);rnorm(3, 2, 3)
TestFunction$density(0.3); dnorm(0.3, 2, 3)

このように返ってきます。

> Dist.norm <- function(arg.m, arg.sd){
+ return(
+ list(
+ random = function(n) rnorm(n, arg.m, arg.sd)
+ , mean = arg.m
+ , density = function(x) dnorm(x, arg.m, arg.sd)
+ )
+ )
+ }
> 
> TestFunction <- Dist.norm(2, 3)
> TestFunction
$random
function (n) 
rnorm(n, arg.m, arg.sd)
<environment: 0x00000000295e3d18>

$mean
[1] 2

$density
function (x) 
dnorm(x, arg.m, arg.sd)
<environment: 0x00000000295e3d18>

> set.seed(0);TestFunction$random(3);set.seed(0);rnorm(3, 2, 3)
[1] 5.788863 1.021300 5.989398
[1] 5.788863 1.021300 5.989398
> TestFunction$density(0.3); dnorm(0.3, 2, 3)
[1] 0.1132558
[1] 0.1132558

こちらが意図とした通り、乱数と平均および密度が求まっています。
しかしながら、以下の状態では「arg.m」「arg.sd」へ何が入っているかわからない状態です。

> TestFunction$random
function(n) rnorm(n, arg.m, arg.sd)
<environment: 0x00000000295e3d18>

この「arg.m」「arg.sd」を取得する方法はありますでしょうか。
具体的には、上記の例で「arg.m = 2」「arg.sd = 3」を取得したいです。

皆さんのお知恵を拝借できればと思います。
どうぞよろしくお願いいたします。

テーブル変形について

konoushi (2015-02-22 (日) 17:13:59)

平素よりお世話になっております。
下記のようなテーブルを以下のように変形したいのです。
どのようにすればよいでしょうか。

id  StartYear EndYear Variable
01  2000       2002         a
02   1995      1997         b

id   Year     Variable
01   2000       a
01   2001       a
01   2002       a
02   1995       b
02   1996       b
03   1997       b   # 変なところに投稿しないように 投稿法も学習すること

要素を一回で抽出する事は可能でしょうか?

risperidone (2015-02-20 (金) 10:20:50)

お世話になります。例えば下記のようなデータがあったとします。
1:ANA 2:JAL 3:ANA, JAL 4:JAL,ANA, DEL
それぞれの構成要素をカウントすると、ANA 3, JAL 3, DEL 1となります。このように構成要素の数をRでカウントする手法があればご教授下さい。宜しくお願いします。

SPSSから読み込んだデータの数値をNAに置き換えできません

Thomas (2015-02-20 (金) 00:28:36)

はじめまして。Windows7SP1上でR 3.1.2 64bitを使っています。SPSS21から以下のようにデータを読み込み特定値(-99)をNAに置き換えたいのですが,「 (list) オブジェクトは 'double' に変換できません」というエラーが出てしまい置き換えができません。どうしたらよいのでしょうか?
データ例(test.sav)

V1 V2
1 -99
2 22
3 23
4 24

(なおここで-99はSPSS上ではユーザ欠損値にはなっておりません)

install.packages("memisc")
library(memisc)
data <- as.data.set(spss.system.file("test.sav"))
dat[dat == -99] <- NA

以下にエラー `[<-.data.frame`(`*tmp*`, i, j, value = NA) : 
  (list) オブジェクトは 'double' に変換できません。

dat$v2[dat$v2 == -99] <- NA と変数を明示的に指定するとエラーなく通るのですが,実際には沢山の変数があるので,できればいっきにまとめて置き換えたいのです。またいったんSPSSからcsvファイルに落としてread.csvで読むと dat[dat ==- 99] <- NA でも問題なく通るのですが,なぜかSPSSから直接読むとエラーになってしまい,なぜそのようなことが発生するのか理解できなくなっております。
どうかよろしくお願い申し上げます。

各数値の間にカンマを自動挿入してエクセルのデータをRにコピペしたい

risperidone (2015-02-18 (水) 17:53:36)

表題通りですが、エクセルデータ(csv)の数値をエクセル上でコピーして、

x=c(3619, 7797, 5039, 1617, 8876, 2156, 1659, 504, 387, 2282, 2891, 1636, 518, 1066, 1061)

といった風に、数値の間にカンマを自動で入れるためのテクニックがあればご教授下さい。
今までは手動でカンマの挿入をやっていました。

単独でなく複数のデータを一括で読み込みたいのですが...

shino (2015-02-12 (木) 19:31:14)

はじめまして。
私は今、以下のデータ(DAU,DPU,行動データ)をそれぞれ一括で読み込もうと試行錯誤しています。
sample-data/section8/daily/dau/game-01/2013-05-01~2013-10-31
sample-data/section8/daily/dpu/game-01/2013-05-01~2013-10-31
sample-data/section8/daily/action/game-01/2013-10-31

下記のコードをRで実行した際
「関数 "ldply" を見つけることができませんでした 。」とエラーが出てき、ここからどうすればよいのかわかりません。
ご教授のほどよろしくお願い申し上げます。

> library(“plyr”)
> library(“foreach”)
> readTsvDates <- function(base.dir, app.name, date.from, date.to) {
+ date.from <- as.Date(date.from)
+ date.to <- as.Date(date.to)
+ dates <- seq.Date(date.from, date.to, by = "day")
+ x <- ldply(foreach(day = dates, combine = rbind) %do% {
+ read.csv(sprintf("%s/%s/%s/data.tsv", base.dir, app.name, day),
+ header = T,
+ sep = "\t", stringsAsFactors = F)
+ })
+ x
+ }
> 
> # DAUを読みこむ関数
> readDau <- function(app.name, date.from, date.to = date.from) {
+ data <- readTsvDates("sample-data/section8/daily/dau", app.name,
+ date.from, date.to)
+ data
+ }
> # DPUを読みこむ関数
> readDpu <- function(app.name, date.from, date.to = date.from) {
+ data <- readTsvDates("sample-data/section8/daily/dpu", app.name,
+ date.from, date.to)
+ data
+ }
> # 行動データを読みこむ関数
> readActionDaily <- function(app.name, date.from, date.to = date.from) {
+ data <- readTsvDates("sample-data/section8/daily/action", app.name,
+ date.from, date.to)
+ data
+ }
> 
> # データの読みこみ
> 
> # DAU
> dau <- readDau("game-01", "2013-05-01", "2013-10-31")
 以下にエラー readTsvDates("sample-data/section8/daily/dau", app.name, date.from,  : 
   関数 "ldply" を見つけることができませんでした 
> head(dau)
    log_date app_name user_id
1 2013-08-01  game-01   33754
2 2013-08-01  game-01   28598
3 2013-08-01  game-01   30306
4 2013-08-01  game-01     117
5 2013-08-01  game-01    6605
6 2013-08-01  game-01     346
> # DPU
> dpu <- readDpu("game-01", "2013-05-01", "2013-10-31")
 以下にエラー readTsvDates("sample-data/section8/daily/dpu", app.name, date.from,  : 
   関数 "ldply" を見つけることができませんでした 
> head(dpu)
    log_date app_name user_id payment
1 2013-06-01  game-01     351    1333
2 2013-06-01  game-01   12796      81
3 2013-06-01  game-01     364     571
4 2013-06-01  game-01   13212     648
5 2013-06-01  game-01   13212    1142
6 2013-06-01  game-01   13212     571
> # Action
> user.action <- readActionDaily("game-01", "2013-10-31", "2013-10-31")
 以下にエラー readTsvDates("sample-data/section8/daily/action", app.name, date.from,  : 
   関数 "ldply" を見つけることができませんでした 
> head(user.action)
 以下にエラー head(user.action) :  オブジェクト 'user.action' がありません 

重回帰分析を行った後にVIFが求められない

risperidone (2015-02-10 (火) 00:34:05)

初めてこちらに質問させて頂きます。宜しくお願いします。
R(3.1.2)をMac OS X 10.10.2で使っています。
重回帰分析までは出来たように思えます。
説明変数はregimen=投薬数、maleは性別、治療アウトカムは治癒したか否かです。
データは全て疾患A・B・Cのいずれかに該当します。

> result1 = lm(regimen ~ male + 疾患A-1 + 疾患B + 疾患C + 初発年齢 + 
               投与開始年齢 + 最終受診時年齢 + 治療アウトカム, data=dat)
> summary(result1)
Call:
lm(regimen ~ male + 疾患A-1 + 疾患B + 疾患C + 初発年齢 +
   投与開始年齢 + 最終受診時年齢 + 治療アウトカム, data=dat)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.0473 -1.3977 -0.3918  0.8142 11.5159 

Coefficients:
               Estimate Std. Error t value Pr(>|t|)    
male            0.19436    0.22706   0.856 0.392499    
疾患A           0.95790    0.48769   1.964 0.050192 .  
疾患B           2.58759    0.43024   6.014 4.03e-09 ***
疾患C           1.93298    0.37667   5.132 4.45e-07 ***
初発年齢        0.04138    0.02220   1.864 0.063002 .  
治療開始年齢   -0.08136    0.02203  -3.692 0.000252 ***
最終受診年齢    0.03569    0.01069   3.340 0.000916 ***
治療アウトカム  1.49465    0.22467   6.653 9.31e-11 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.239 on 407 degrees of freedom
Multiple R-squared:  0.7106,	Adjusted R-squared:  0.7049 
F-statistic: 124.9 on 8 and 407 DF,  p-value: < 2.2e-16

ここでVIFパッケージをインストールしました。

 URL 'http://cran.ism.ac.jp/bin/macosx/mavericks/contrib/3.1/VIF_1.0.tgz' を試しています 
Content type 'application/x-gzip' length 2356946 bytes (2.2 Mb)
 開かれた URL 
==================================================
downloaded 2.2 Mb

 ダウンロードされたパッケージは、以下にあります 
 	/var/folders/4k/37q819dx1dn03k0zl3n0yhth0000gp/T//Rtmp9lSQKf/downloaded_packages 
> library(VIF)
> vif(result1)
 以下にエラー as.vector(y) - mean(y) :  二項演算子の引数が数値ではありません 
 追加情報:  警告メッセージ: 
In mean.default(y) : argument is not numeric or logical: returning NA

エラーメッセージ後の対応が分からず苦慮しております。ご教授頂けたら幸いです。宜しくお願いします。
ファイル添付からデータをアップロードさせて頂きました。

beeswarmを使った散布図のプロット

Bee (2015-02-09 (月) 20:24:44)

初めまして。beeswarmを使用して散布図を作成しています。PC上ではカラーで綺麗なのですが、論文投稿のため2群間のプロットを○と●で表示したいのですが、どの様にしてよいのか分かりません。

data1 <- read.delim("clipboard")
beeswarm(temp~ day, data = data1,
pch = 16, pwcol = 1 + as.numeric(kubun),
xlab = "", ylab = "Follow-up time (months)",
labels = c("day1", "day3", "day5", "day8", "day10", "day12",
"day15","day18", "day21"))
legend("topright", legend = c("F", "G"),
title = "Censored", pch = 16, col = 1:2)

の、pwcol = 1 + as.numeric(kubun) が、解決するポイントとは思いますが、どの様にすれば良いのか解らず困っております。

何とぞ、お教えの程お願いいたします。

R ×64 3.1.2 を使用しています。 

あらためて、多重クロス集計について

島田泰夫 (2015-02-07 (土) 08:29:45)

ふたたび質問させて下さい。

やはり解決しないので・・・

wd <- sample(1:16,100, replace=TRUE)
ws <- sample(0:10,100, replace=TRUE)
inds <- sample(0:100,100, replace=TRUE)
d <- data.frame(wd=wd, ws=ws, inds=inds)

ここから、wdとwsのクロス集計表を作成し、そこからこのクロス集計に対応したindsの合計値(表)を得たいのです。

tapply(d$inds, d$wd, d$ws, sum)

は、文法上できないですし
そこで・・

re <- ftable(d$inds, d$wd, d$ws)

から得られたオブジェクトを操作しようとして

gyo <- sort(unique(d$inds))
gyo2 <- length(gyo)
gyo3 <-  0
re.mat <- matrix(nr=16, nc=11,0)
for ( i in 1: gyo2){
 for ( j in 1:16 ){
   gyo3 <- gyo3 +1
  for ( k in 1:11){
   re.mat[j, k] <- re.mat[j, k] + re[gyo3,k]*gyo[i]
}}}

としてようやく目的の値(表)を得ることができましたが、汚いです。
もう少し効率的、綺麗な方法はありませんでしょうか?

balloonplotの行名を並び替えたい

島田 泰夫 (2015-02-05 (木) 10:58:21)

初歩的な質問で恐縮です。
library(gplots)のballoonplotについて、教えて下さい。

wd1 <- sample(c(1:16),100, replace=TRUE)
wd2 <- sample(c(1:16),100, replace=TRUE)
inds  <- sample(c(0:25),100,replace=TRUE)

ここから

balloonplot(wd1,wd2,inds)

とすると、列名は1〜16にきちんと並びますが、行名がバラバラになります。
行名を1〜16に並べる方法はありますでしょうか・・・?

文字列の置換について

Fk (2015-02-04 (水) 09:44:05)

お世話になります。 win 7, R 3.0.2を使用しています。

a <- c("1_2_3_4_5", "2_3_4_1_5")
dat <- data.frame(C1=c(3,2,4,1,5), C2=c(4,5,3,2,1))


ここで、aの数字をdatのC1列からC2列への行方向に置換して、a[1]は"2_5_4_3_1"、a[2]は"5_4_3_2_1"になるようにしたいです。実際にはaはもっとたくさんの要素をもち、datも数十行はあります。

strsplitでaを分割してgsubするという処理をfor文で繰り返そうかと思ったのですが、繰り返しの過程で置換したものを再置換してしまいそうでわからなくなりました。

宜しくお願いします。

時系列軸を反転させたい

けい (2015-02-03 (火) 16:31:35)

はじめまして。
時系列を使った相関図を書きたいのですが、上下反転がうまく行きません。
X軸に個数、Y軸に時間という設定で、時間は上から下に進んでいくという流れで設定したいのですけど、

attach(df)
x <- strptime(TIME, "%H:%M:%S", tz = "")
plot(Count, x, pch = 16, col = "#FF5050", cex =1, xlab = "", ylab = "", yaxt = "n")
r <- as.POSIXct(round(range(x), "mins"))
axis.POSIXct(2, at = seq(r[1], r[2], by = "mins"), format = "%H:%M")
detach(df1)

では、当然r[1]が下に来てしまうので、逆になってしまいます。
seq内のr[1]とr[2]をしたり、byをマイナスにしたり・・(当然エラーになりますが)なかなかうまく行きません。
プロット自体はplotにylim=c(r[2], r[1])を入れれば反転しますが、軸が表示されなくなってしまいました。

いい方法があれば、どうかよろしくお願いいたします。

「≤」をtextとして図に描きたい

高田 (2015-02-02 (月) 19:43:14)

はじめまして。
数学記号の「≤」をtextとして図に描きこめないものかと苦労しております。
今のところ試してみたのは、expression関数や、mtextでfontを指定してみる方法ですが、うまくいきません。
どなたかいい方法をご存じの方おられないでしょうか。
どうかよろしくお願い申し上げます。

MySQLからデータフレームに取り込み後のラベルの変更について

マンジャ (2015-01-28 (水) 21:30:08)

はじめまして、RでパッケージRMySQLを使いテーブルのデータをRのデータフレームとして取り込みました。

※コネクション確立後にSQLを発行してデータフレームに取り込んだ所、

data.table <- dbGetQuery(dbconnector, "select * from 〜 ")

※データ(MySQLテーブル:販売履歴)
商品名 販売日時 販売単価 販売個数
りんご ○○○○ ☓☓☓☓ △△△△
みかん ○○○○ ☓☓☓☓ △△△△
なし  ○○○○ ☓☓☓☓ △△△△

※データフレーム
  商品名 販売日時 販売単価 販売個数
1 りんご ○○○○ ☓☓☓☓ △△△△
2 みかん ○○○○ ☓☓☓☓ △△△△
3 なし  ○○○○ ☓☓☓☓ △△△△

データフレーム上では1,2,3が自動採番されてしまいます。
この時商品名をラベルとして変更するにはどのようにすれば良いのでしょうか?

レコード数は数万件あり一括でラベルとして変更したく思います。

宜しくご示唆お願いします。

Loessにおける平滑化幅について

SAN (2015-01-25 (日) 13:50:03)

はじめまして,Loessにおける平滑化幅についてなのですが,Loessにおける平滑化パラメータはspanの引数で決められているみたいなのですが,疑問点があります.

例えば,100個のデータがあった場合,平滑幅を10にしてLoessをかけるといった場合spanパラメータをどのように設定するべきなのでしょうか?
どなたかご教授お願いします.

ターム・文書行列の行数について

初心者 (2015-01-23 (金) 00:04:22)

欧米語のテキストマイニングを行うパッケージのひとつにtmパッケージというのがありますが、これを使って、複数の文書ファイルのターム・文書行列を作成しますと、常に行数が36行になってしまいます。

また、潜在的意味インデキシング用のパッケージ(lsa)を利用し、特異値分解しましても、同じように36行のターム・文書行列が得られます。

英文のパッケージガイドを見ましてもなにも記載されていないのですが、何か制約があるのでしょうか?また、36行に限らず、すべてのデータを分析対象にする場合、どのようにすれば良いでしょうか?

ご教示いただけますと助かります。

xlsxについて

KK (2015-01-22 (木) 08:16:18)

お世話になります。

エクセルを読み込もうとしてxlsxをインストールしたのですが、読み込もうとすると以下のようなエラーが出ます。

>  library(xlsx)
要求されたパッケージ rJava をロード中です 
Error :  .onLoad は loadNamespace()('rJava' に対する)の中で失敗しました、詳細は: 
 call: fun(libname, pkgname) 
 error: JAVA_HOME cannot be determined from the Registry 
エラー:  パッケージ ‘rJava’ をロードできませんでした 

別途rJavaをインストールしても同じエラーが出ました。
環境はWIn 7 64-bit, R 3.1.2 64-bit, xlsx_0.5.7です。

どなたか宜しくお願いします。

あるグループを除去後グループごとに単回帰を行う方法について

佐藤 (2015-01-21 (水) 08:55:58)

はじめまして。
Windows 7でR version 3.1.0 を使用しています。
添付のようなデータでid=cを(サンプル数が少ないため)除去したうえで単回帰をして、idごとに回帰係数を取り出したいのですが、エラーメッセージがでてしまいます。除去したはずのid=cがobservation数が0で残っているのが原因ではないかと考えています
エラーを出さずに、idごとに解析を行うためにはどのようにすればいいのでしょうか?例ではグループは2つなので個別にしてもいいのですが、実際に使いたいデータではグループ数が非常に多いので個別に分けずに解析したいと考えています。

用いたデータ

id	y	x
a	1	1
a	3	2
a	3	3
a	3	4
a	3	5
a	3	6
a	3	7
a	3	8
a	3	9
a	3	10
b	1	1
b	1	2
b	2	3
b	3	4
b	4	5
b	5	6
b	4	7
b	5	8
b	6	9
b	4	10
b	1	11
b	2	12
b	3	13
b	4	14
b	5	15
b	6	16
c	3	1
c	3	2
c	3	3
c	3	4

プログラム

d <- read.csv("dummy.csv", 
  colClasses=c("factor", "numeric", "numeric"), 
  col.names=c("id", "y", "x")) #データ読み込み
d2 <- do.call("rbind", by (d, d$id, function(x)
  subset(x, length(id)>=10))) # サンプル数が10以上のidのみ抽出
d3 <- lapply(split(d2, d2$id), function(x) {
  coef(lm(y~x, data=x))}) # わなごとに線形回帰
d4 <- do.call(rbind, d3) # リストをたてに並べる
d5 <- unique(d2$id) # 5日分揃っているわなid名を並べる
d6 <- cbind(d4, d5) # わなごとに線形回帰の傾きを並べる

エラーメッセージ

> d3<- lapply(split(d2, d2$id), function(x) {
+ coef(lm(y~x, data=x))}) # わなごとに線形回帰
 以下にエラー lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
  0 (non-NA) cases
> dd <- split(d2,d2$id)
> dd
$a
     id y  x
a.1   a 1  1
a.2   a 3  2
a.3   a 3  3
a.4   a 3  4
a.5   a 3  5
a.6   a 3  6
a.7   a 3  7
a.8   a 3  8
a.9   a 3  9
a.10  a 3 10

$b
     id y  x
b.11  b 1  1
b.12  b 1  2
b.13  b 2  3
b.14  b 3  4
b.15  b 4  5
b.16  b 5  6
b.17  b 4  7
b.18  b 5  8
b.19  b 6  9
b.20  b 4 10
b.21  b 1 11
b.22  b 2 12
b.23  b 3 13
b.24  b 4 14
b.25  b 5 15
b.26  b 6 16

$c
[1] id y  x 
 <0 行> (または長さ 0 の row.names

対応分析(数量化III類)実行時のエラーについて

田中 (2015-01-11 (日) 11:29:25)

 初めまして。エラーがでてしまいました。

 A B C D E F G H I
? 3 3 2 2 1 3 3 3 3
? 3 2 2 2 1 2 2 2 3
? 3 3 2 2 1 2 2 2 3
? 3 3 2 2 1 3 3 3 2
? 3 1 2 2 1 3 1 2 2
? 3 1 2 3 2 3 2 2 3

?以降同様のデータに

> A <- factor(gakuryoku$A, level=c(1:3), labels="A")
> B <- factor(gakuryoku$B, level=c(1:3), labels="B")
> C <- factor(gakuryoku$C, level=c(1:3), labels="C")
> D <- factor(gakuryoku$D, level=c(1:3), labels="D")
> E <- factor(gakuryoku$E, level=c(1:3), labels="E")
> F <- factor(gakuryoku$F, level=c(1:3), labels="F")
> G <- factor(gakuryoku$G, level=c(1:3), labels="G")
> H <- factor(gakuryoku$H, level=c(1:3), labels="H")
> I <- factor(gakuryoku$I, level=c(1:3), labels="I")
gakuryoku <- data.frame(A, B, C, D, E, F, G, H, I)
> summary(gakuryoku)
  A       B       C       D       E      F       G       H       I    
 A1: 0   B1:15   C1: 1   D1: 0   E1:9   F1: 1   G1: 2   H1: 1   I1:4  
 A2: 6   B2: 2   C2:19   D2:13   E2:9   F2:12   G2: 5   H2:12   I2:9  
 A3:14   B3: 3   C3: 0   D3: 7   E3:2   F3: 7   G3:13   H3: 7   I3:7  
> library(MASS)
> result <- mca(gakuryoku)
 以下にエラー svd(X) : infinite or missing values in 'x'

このようになってしまい01データに手書きでなおしたところ

> library(MASS)
> result <- corresp(gakuryoku, nf=2)
 以下にエラー if (any(x < 0 | x%%1 > 10 * sqrt(.Machine$double.eps))) warning("negative or non-integer entries in table") : 
   TRUE/FALSE が必要なところが欠損値です 

このようになってしまいました。
 ご存知のかたがいらっしゃいましたら教えていただければ幸いです。よろしくお願い致します。

C言語で書かれた関数をRから呼び出す方法

toyan (2015-01-05 (月) 15:16:22)

お世話になります。

環境は、
R version 3.1.1 (2014-07-10)
OS:Windows 7
Platform: i386-w64-mingw32/i386 (32-bit)
です。

パッケージmgcvの関数smooth.construct.cr.smooth.spec()を若干書き換えて使用したいと思っています。ソースファイルsmooth.rのうち、該当部分に修正を加えて、実行しようとしたところ、

 oo <- .C(C_crspl,x=as.double(x),n=as.integer(nx),xk=as.double(k),
          nk=as.integer(nk),X=as.double(X),S=as.double(S),
          F=as.double(F),Fsupplied=as.integer(F.supplied))

のところで、引っかかってしまい、

以下にエラー my.cr(x, knots = kn) :  オブジェクト 'C_crspl' がありません

というメッセージが出て実行できません。Cのソースファイルmgcv.cを見ると、void crspl()という関数が目的の関数のようなので、上記のC_crsplをcrsplに書き換えてみても同じようなエラーメッセージが出てしまいます。"crspl"と文字列に変えてみても同様です。

パッケージmgcvのlibフォルダにあるmgcv.dllファイルをdyn.loadで読み込もうとしても、

> dyn.load("c:/r/library/mgcv/libs/i386/mgcv.dll")
> is.loaded("mgcv")
[1] FALSE

となって、必要なライブラリが読み込めていないようです。

このように、必要なC関数をRから読み込むにはどうしたらよろしいのでしょうか?
初歩的な質問で恐縮ですが、御教示のほどよろしくお願い申し上げます。

統計分析の結果の記載法

Beginner (2015-01-03 (土) 15:38:57)

two-way anovaの結果で独立変数1の自由度が7, 独立変数2の自由度が1でresidualsの自由度が87の結果が出ました。これに関してF値を記載する場合はどうすればよいのでしょうか。
F値にはanova(aov(x~y))のような独立変数一つの値を用いるべきなのでしょうか。
周りによく知っている人が居らず書籍もなかなか見つからずで困っています。
どうか教えて頂ければ幸いです。

twitteRのOAuth認証について

(2014-12-31 (水) 04:17:37)

windows7 64bit R 3.1.2
R言語でTwitterを操作する
このサイトに沿って、Oauth認証を試みてます。

registerTwitterOAuth(cred)
[1] TRUE

まではいけたのですが、

userTimeline("mima_ita",cainfo="cacert.pem")
[1] "Authorization Required"
Error in twInterfaceObj$doAPICall(cmd, params, method, ...) : 
  Error: Authorization Required

となってしまいます。ログインが上手く言っていないということはわかるのですが、

registerTwitterOAuth(cred)
[1] TRUE

となっているので、なぜログインができていない状態になっているのかがわかりません。どうすればログイン状態にできるでしょうか?

月毎の平均値の出しかたについて

はなちゃん (2014-12-30 (火) 17:08:04)

エクセル上に,日ごとのデータが100年分約36000個あります.
このデータの月毎の平均値を,上から計算していくことはできないでしょうか?
コピーペーストで1ヶ月毎に平均していくと1200回やる必要があり大変です。
Rでできないでしょうか?エクセルでもいいのですが。

caretの使用について

ランティス (2014-12-17 (水) 19:21:21)

初歩的な質問だったら申し訳ありません。
過去ログを検索したところ、同様の症状が見られなかった為、質問させていただきます。
caretパッケージをインストールした後、libraryコマンドを使用してパッケージを使用できる状態にしようとしたところ以下のエラーが発生しました。
環境:

OS windows 7 64bit
Rver: 3.1.2

コード:

install.packages("caret", dependencies = T)
library(caret)

エラー:

library(caret)
 要求されたパッケージ lattice をロード中です 
Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) : 
   ‘minqa’ という名前のパッケージはありません 
Error:  ‘caret’ に対するパッケージもしくは名前空間のロードが失敗しました 

行った対応:
? install.packagesを使用して再度
? GUIのInstallPackagesで再インストール
? library()コマンドでライブラリー内にcaretがあるか確認(ありました。)

以上です。
よろしくお願い致します。

plotMeans() {Rcmdr}で作成したグラフ内の凡例編集について

おこめ (2014-12-17 (水) 16:06:46)

パッケージRcmdrを読み込んだのちplotMeans() を用いて2つの処理についての結果をグラフ化しました。
その際自動で凡例も挿入されるのですが、この凡例の編集(位置やフォントサイズ変更)がどうしてもできません。
また、legend() を用いると新たに別の凡例がグラフ内に挿入されてしまいます。

ぞ同挿入の凡例について、唯一凡例タイトルだけは

plotMeans(x$測定値,x$処理1,x$処理2,error.bars="se",legend.lab="xxx")

と書くことで変えることができました。
ですが特に編集したいフォントサイズについては編集方法がまったくわかりません。
検索していろいろ調べたのですが手がかりがつかめませんでした。

この自動で挿入される凡例の編集方法についてアドバイスいただけませんでしょうか。
どうぞよろしくお願いします。

glmmMLの後にstepAIC

lin (2014-12-15 (月) 15:44:48)

glmmMLの後にstepAICを行うと

以下にエラー if (all(is.finite(c(n0, nnew))) && nnew != n0) stop("number of rows in use has changed: remove missing values?") : 
  TRUE/FALSE が必要なところが欠損値です

と出るのですが、glmmMLにはstepAICは出来ないのでしょうか?

githubのzipファイルをダウンロードしてのインストール

時計 (2014-12-15 (月) 15:09:47)

お世話になります。
標記につきまして、devtool::install_githubがプロキシの関係で使えないので、zipファイルをダウンロードして、パッケージをインストールしています。
以前、ggbiplotをインストールしたことがあるのですが、やり方を失念してしまいました。
Google先生に聞いてみても、うまく、記事を捕まえきれません。
お忙しいところご迷惑おかけいたしますが、どうぞご教授ください。

qccでの管理図表示における横軸について

QCUSER (2014-12-03 (水) 18:20:35)

qccを用いて管理図を表示させることを試みています。
qccコマンドの使用方法について質問させてください。

質問概要

qcc.groups(data , sample)

にてグループ化したmatrixを元にqccで管理図を表示する場合、横軸にデータ値のサンプル指標(第二引数sampleの値)を表示することはできますでしょうか?


タブ区切りのファイル「01_INPUT.txt」にロット、data01という列が存在した場合

inputdata <- read.table("01_INPUT.txt", header=TRUE, sep = '\t')
attach(inputdata)
samplegrp <- qcc.groups(data01, ロット)

によってマトリクス「samplegrp」が生成できます

> samplegrp
 305-0 306-0 307-0 308-0 309-0 310-0 311-0 312-0 313-0 314-0 315-0 316-0
 [1,] 52.89 52.93 53.06 53.06 53.02 53.08 53.12 52.95  52.8 52.93 52.95 53.02
 317-0 318-0 319-0 320-0 321-0 322-0 323-0 324-0 325-0 326-0 327-0 328-0
 [1,] 53.02 52.91 52.97    53 53.07 53.09 53.09 53.04 53.04 53.04 53.08  53.1
:

このマトリクスを用いてqccコマンドにより管理図が表示されます

qcc(samplegrp, type="xbar.one", nsigmas=3, title="X管理図")

しかしながら、"ロット"(上記サンプルデータでは'305-0'や'306-0')を横軸に表記する手段がわからない状態です。

Rの出力について

Ryo (2014-12-02 (火) 17:38:50)

Rの仕様で計算結果が長い場合、ウインドウの大きさに合わせて結果が区切られたりします。それを区切らせないで結果を表示することは可能でしょうか。
(Rの結果の表示のウインドウの大きさを変更できますか?)
ABC
DEF
GHI
ではなくて
ABCDEFGHI
とtxtに保存したいです。
宜しくお願いします。

関数"RMeCabDf"を見つけることができません。

初心者X (2014-11-25 (火) 23:59:08)

# library(RMeCab)
Q1 <- RMeCabDF(dat, 3)

のようにしたら題名のようにエラーになりました。
datの中身は、ここでは書いていませんが代入しております。

どうしたらいいのでしょうか?

heatmapでの色の割り振りについて

kana (2014-11-20 (木) 16:11:13)

heatmap関数を使っているのですが、ある一つの要素の値が突出して高いために、他の要素のカラーの違いが見分けられません・・・
「ある値以上では色が一定、それ以下はグラデーションで表示」にしたいのですが、どのようにしたら良いのか教えてもらえると助かります。

パネルデータでのエラー

(2014-11-19 (水) 17:12:27)

R超初心者です。Rcmdr(Rコマンダー)を使っています。
プーリングによるパネルデータ分析を試みているのですが、データ読み込み後

library("plm")
res_po <- plm(従属変数 ~ 独立変数A+独立変数B・・・ +独立変数X,
              data=データ名, model="pooling")
summary(res_po)

と入力して行っています。
ところが、Rコマンダーで「エラー」とだけ表示されてしまい、それが何のエラーかもわからないでいます。
他のデータセットではこれでパネルデータ分析できたのですが、なぜこちらではできないのでしょうか。
データセット自体は数値以外は入力されていません。

gsub で _ を . に変えたい

かな (2014-11-15 (土) 03:33:38)

"test_1", "test____2" など 数が不定な _ を全て1つの . に変えたいと思います。 "test.1" "test.2" としたいということです。

gsub('[_]{+}', '.', c("test_1", "test____2"))

とやってみましたが、できあがりの読点の数が1つになりません。ご教示よろしくお願いします。

メモリ上限について

3M (2014-11-13 (木) 10:18:27)

Windows 7 64bit版でRを使いたいのですが、Rが使用できるメモリの上限はいくつになるのでしょうか。32bit版と同じ2GBでしょうか。

宜しくお願いします。

【ベン図】データサイズを領域の面積に反映する

Steps (2014-11-12 (水) 15:10:04)

はじめて,投稿をさせて頂きます。

RでVenn Diagramを作成したいのですが,下記のように,

library(VennDiagram)
   draw.triple.venn(10,5,4,2,3,1,1, ind=TRUE, scaled=TRUE)

と【scaled=TRUE】としてもデータサイズを領域の面積に反映することができません。

どのようにすれば,データサイズを反映した円のサイズにすることができるのでしょうか?
よろしくお願いいたします。

多次元尺度構成法(isoMDS)で扱えるデータ件数について

ゆき (2014-10-26 (日) 13:35:40)

初めまして。
Rの多次元尺度構成法で扱えるデータ件数について質問があります。
6万件のデータ間の類似度(小数)をインプットにして多次元尺度構成法(isoMDS)を実行したところ、以下のようなエラーが表示されスクリプトが終了しました。

invalid value of 'n'

isoMDSは以下のような呼び出しをしております。

a <- read.csv(input, h=T, as.is=T, row=1, check.names=F)
mds <- isoMDS(a, trace=F)

エラーメッセージをもとにgoogleで検索していたら、isoMDSの中から実行されているcmdscaleにデータ件数のチェックが入っており、46340件を超えると終了しているようです。
http://code.metager.de/source/xref/gnu/R/src/library/stats/R/cmdscale.Rの43行目)

if(is.na(n) || n > 46340) stop("invalid value of 'n'")

isoMDS以外ではどうかと思い、sammon、metaMDSでも同じデータをインプットにして試してみたのですが、上記のcmdscaleの件数チェックでひっかかり終了となってしまいました。
Rの関数を使って多次元尺度構成法を行う場合、46340件以上のデータを扱う方法はあるのでしょうか?
よろしくお願いします。

CPUのコアについて

こあら (2014-10-17 (金) 08:29:34)

お世話になります。Rのコアへの割り当てについて疑問があります。

デュアルコアのCPUを搭載したパソコンでRを使用しているのですが、Rはひとつのコアしか使用しないという話を伺いました。では、Rを2つ起動するとひとつずつのコアを使うことになるのでしょうか。それともひとつのコアを2つのRで共有するのでしょうか。

宜しくお願いします。

パッケージplsのCVのkは変更可能?

えーけん (2014-10-16 (木) 16:21:37)

初めまして。
Windows7 で R x64 3.1.1を使用しています。

現在、Rでplsを実行しておりますが、
データのサンプル数によって、クロスバリデーションの分割数kを変更したいのです。
それは可能でしょうか?可能でしたら、方法を教えていただきたいです。
よろしくお願いします。

e1071のsvm()でcrossを指定した場合のモデルについて

ひろ (2014-10-13 (月) 10:21:08)

初めて投稿します.
Mac OS X上でR 3.1.0を使用しています.

e1071パッケージのsvm関数について分からない点が有ります.
e1071のソースファイルsvm.RやRsvm.cもあたりましたが,
何となくやっていることは分かりますが,詳細まで理解することは出来ませんでした.
なので,ここで質問させていただきます.
詳しい方がおられましたらご教授ください.

次のように 10-fold cross validationでsvmのモデルを構築するとします.
model<-svm(factor(V1)~V2+V3+V4, data=testdata, cross=10)

このとき,modelとして出力されるのは,
10回の交差試験で最後に作られたモデルになるのでしょうか?
それとも,10回分の交差試験の結果が反映されたモデルになるのでしょうか?
あるいは私の考えている点がまるで見当違いでしょうか?

よろしくお願いします.

SIARのモデルのラン時のエラー

びぎなー (2014-09-29 (月) 18:12:11)

初めて投稿します。超初心者です。
利用環境は、windows 8 にてR version 3.1.1と追加パッケージとしてspatstatとsiarをロードしています。

テキストファイルデータの読み込み、生データのプロットはできたのですが、肝心のモデルのランでエラーが出ます。

Selection: 2
Run SIAR for a single group. 
For this you will need to have input successfully some data in option 1. 
In this instance, the target isotope file must be a two column file with
no group label in the first column. 
 
See the demo for more details on this function. 

Press <Enter> to continue...
Choose the size of the model run: 

1: Standard
2: Long
3: Very long

Selection: 1
 以下にエラー siarmcmcdirichletv4(data = siardata$targets,
                                  sources = siardata$sources,  : 
   (list) オブジェクトは 'double' に変換できません 

お手数ですが、ご存じ方、対応、エラー原因についておしらせいただけたらと思います。何卒宜しくお願いします。

page.rank.oldを使いたいがエラーが出る

たまご (2014-09-22 (月) 18:17:03)

初めて投稿します。R言語初心者です。
page.rank.old(igraphというパッケージにある)という関数を使いたいのですが,以下のようなエラーが出てしまいます。

> g <- random.graph.game(20, 5/20, directed=TRUE)
> page.rank.old(g)
 [1] 0.06973880 0.09021035 0.03558664 0.01666512 0.07154547
     0.04793332 0.07996897 0.05023446 0.03992723 0.07147081
[11] 0.03138601 0.02566091 0.09408276 0.04552462 0.04179698
     0.03378557 0.00750000 0.02832452 0.09572176 0.02293570
 警告メッセージ: 
In .Call("R_igraph_pagerank_old", graph, vids - 1, directed, niter,  :
  At structural_properties.c:1379 :igraph_pagerank_old is deprecated from
    igraph 0.7, use igraph_pagerank instead

なんとかこのエラーを取り除きたいのです。よろしくお願いします。
Rのバージョン3.1.1
igraphのパッケージは最新
OS windows7