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

新規投稿はできません




自作関数データのファイルへの取り込み

maechan (2006-06-26 (月) 14:04:44)

ある行列データがありそれを一つのヒストグラムで見ようと思い行列を一列にするプログラムを書きました。それを画面上に表示することはできるのですがファイルに取り込む方法がわかりません。
関数の値をファイルに書き込む方法が知りたいです。

R-2.3.1のインストール手順10のファイルの上書き

初心者 (2006-06-24 (土) 12:03:31)

インストールの手順の最後にRconsole,Rdevga,Rprofile.siteをダウンロードし、同名ファイルに上書きとありますが、これらのファイルはどこからダウンロードしたらよいのでしょうか?

関数c()内でのargs[]の使用

チョコボール (2006-06-23 (金) 07:21:00)

現在、perlでのスクリプトをバッチモードで使用しています。
変数を用いているのですが、c()の中では使用できません。
(こんなかんじ↓)

Y <- X[c(args[5])]

実行は

# R --vanilla --quiet --args test.pdf 3 5 3 < test.R

とやっています。
他の変数は得られています。
どなたかおしえてください。

関数名を文字列に

ショーン (2006-06-22 (木) 19:50:20)

以下のように関数オブジェクトを変数に入れて、関数として呼び出すことができると思いますが、

> a = cos
> a
.Primitive("cos")
> a(0)
[1] 1

後でaの元の関数名である、"cos"という文字列を得る方法はありますでしょうか?つまり、

> f2s(a)
[1] "cos"

のf2sようなことはできますでしょうか?

引数...の長さ

ショーン (2006-06-22 (木) 12:37:36)

可変長引数...の長さを知りたいのですが、以下のようにうまくいきません。

> func = function(...){print(length(...))}
> func(1,2,3)
以下にエラーprint(length(...)) : 'length' に対する引数の個数が正しくありません

Rの関数定義の基本」を見るとlength(...)という書き方もあるように思えるのですが、何が間違っているのでしょうか?

データ行列の行をまたぐレコード参照

ginga (2006-06-21 (水) 15:19:35)

以下のような時系列データがあるとします

           time  ID1  ID2   val1      val2
1    1077525908    1    2 35.256    90.188
2    1077529016    1    3 33.664    90.509
3    1077532131    1    3 30.543    68.935
4    1077535240    1    3 36.345   123.351
5    1077538354    1    5 36.408    93.581
6    1077541476    1    5 37.916   106.016
7    1077544589    1    2 35.809    93.094
            ...    .    .    ...       ...(数十万行)

ここで各行について,以下の処理をしたいというのは,R ではどのように書くのでしょうか?
for を使ってやるしかないでしょうか?

 result[i] = (((他の行のtime - i行めのtime)< 10000) であり,
            かつ (val1 < 35.0) となるレコードについて
            ID2 のラベルが何種類あるか(ID2 が同じものは無視して可))

例えば 4行めだと ID2,3 が該当するので答えは 2 という感じです
(time では一応ソート済なので,処理の際に前後100行のみ,という感じにある程度スコープを絞ることはできますが,それがまたどう書くのか分からないです)

大量のデータ列の行間の関係を洗うような処理について,なにか良い資料というか,例などがあれば有り難いです.

配列の添字に条件をいろいろ書けばできるような話なのか,添字部分に書く書き方を探すというのがそもそも間違いなのか...

R向きの考え方でないのであれば改めて別言語で検討します.

よろしくお願いします

Williamsの多重比較のパーセント点

tm (2006-06-20 (火) 22:23:00)

Rとは直接関係なく、大変申し訳ありませんが、Williamsの多重比較のパーセント点の表を、web経由で入手できるところはありませんでしょうか?
身近で入手できる本をあさったのですが、5%点くらいしか手に入りませんでした。
できれば、1%点の表が欲しいのですが、どなたかご存知ありませんか?

.Internalの中身

のぞき (2006-06-20 (火) 14:35:37)

.Internalが呼ばれる関数dnormなどの

dnorm
function (x, mean = 0, sd = 1, log = FALSE)
.Internal(dnorm(x, mean, sd, log))
<environment: namespace:stats>

の実際のコードを覗いてみることはできないのでしょうか。

主成分分析の主成分と元の変数の関係

ショーン (2006-06-19 (月) 09:40:45)

prcompを使って求まる主成分PC1,PC2...と、元の変数xの関係を知りたいです。以下のサイトを見ると、行列の掛け算であるようなので、実際に試してみました。
http://aoki2.si.gunma-u.ac.jp/lecture/PCA/pca1.html
しかし、以下のようにうまくいきません。

print(d)
       x1       x2     x3
1  0.1991 -15.0277 0.2790
2  0.2003 -16.8090 0.3462
3  0.2169 -16.6008 0.2990
4  0.1429 -17.3694 0.2586
5  0.1840 -16.7424 0.2597
6  0.2231 -15.0885 0.3075
7  0.1834 -15.7661 0.1550
8  0.1516 -15.1187 0.2940
9  0.1478 -14.4152 0.3411
10 0.2071 -17.1567 0.2789
11 0.1613 -13.5147 0.2592
12 0.2288 -15.0654 0.2165
res = prcomp(d,scale = TRUE)
prims = res[["x"]];
l = as.matrix(res[["rotation"]]);
x = as.vector(as.matrix(d[1,]))
pr = as.vector(as.matrix(prims[1,]))
pr2 = l%*%x;
print(x)
[1]   0.1991 -15.0277   0.2790
print(pr)
[1] -0.1190277  0.1568528 -0.6743579
print(pr2)
        [,1]
x1 -0.793312
x2 -5.952815
x3 13.779837

prとpr2の値が同じになると思っていたのですが、違います。どこかで計算ミスをしているのでしょうか?

Sweave環境でsink()は使えないのでしょうか?

akira (2006-06-16 (金) 14:11:29)

Sweave環境でxtableを書き換えたい場合、
(1)xtableの出力先をtexファイルからsink()で別のファイル(例えば"temp")へ切り替えて、
(2)readLinesでtempを読み込んで修正して、
(3)texファイルへ書き出す
ということを試してみました。しかし、sinkは受け付けてくれませんでした。
何かオプションがあるのでしょうか?

?documentclass{jarticle}
%
?begin{document}
?section{sinkでtestが書き出せない}
<<dat1, echo=F>>=
sink("test")
cat("ここはsinkでtestに出るはず?n")
cat("testに出てますよ")
cat("ここまで?n")
sink()
cat("test2?n")
x <- readLines("test")
cat("読み出したtestを書き出すよ?n")
cat(x,"?n")
cat("ここまで?n")
@
?section{table出力もできない}
<<dat2, echo=F, results=tex>>=
library(xtable)
x <- data.frame(a=1:3, b=5:7)
sink("test")
cat("ここはsinkでtestに出るはず?n")
print(xtable(x, caption="変更前のtable"))
cat("????", "?n")
cat("ここまで?n")
sink()
try(x <- readLines("test")) # ここがエラーでとまる
cat("????", "?n")
x[grep("caption", x)] <- sub("変更前", "変更後", x[grep("caption", x)])
x <- paste(x, "?n")
cat("読み出したtestを書き出すよ?n")
cat(x,"?n")
cat("????", "?n")
cat("ここまで?n")
@
?end{document}

そこで、xtableの出力をxに入れなおして、readLinesの部分を書き換えると上手く動きます。

# xtableをxに入れる
x <- xtable(x, caption="変更前のtable")
# readLinesの部分はこうする
x <- unlist(strsplit(x, split="?n")) # testがないからxtableの出力を変更する

'RweaveLatex', 'Rtangle'当たりを見てもそれらしい記述が見当たりません。

  • print.xtable2を発見。しかし、これを修正するのは大変そうだ。 -- akira 2006-06-19 (月) 16:36:45

multcomp パッケージでの Williams 検定について

tm (2006-06-15 (木) 21:10:37)

multcomp パッケージ中の simtest の Williams 検定についてですが、うまく動作していない気がします。
Rのバージョンは 2.0.1、multcomp のバージョンは 0.4-8、mvtnorm のバージョンは 0.7-2 です。

> library(mvtnorm)
> library(multcomp)
> data(angina)
> summary(simtest(response ~ dose, angina, type="Williams",  alternative="greater"))

         Simultaneous tests: Williams contrasts

Call:
simtest.formula(formula = response ~ dose, data = angina,type = "Williams",
    alternative = "greater")

         Williams contrasts for factor dose

Contrast matrix:
     dose0 dose1     dose2     dose3     dose4
C1 0    -1  0.00 0.0000000 0.0000000 1.0000000
C2 0    -1  0.00 0.0000000 0.5000000 0.5000000
C3 0    -1  0.00 0.3333333 0.3333333 0.3333333
C4 0    -1  0.25 0.2500000 0.2500000 0.2500000


Absolute Error Tolerance:  0.001

Coefficients:
   Estimate t value Std.Err. p raw p Bonf p adj
C1   10.499   6.778    1.549     0      0     0
C2    7.747   5.775    1.341     0      0     0
C3    6.297   4.979    1.265     0      0     0
C4    5.247   4.284    1.225     0      0     0

といった結果です。また、Interval の計算結果も

> summary(simint(response ~ dose, angina, type="Williams", alternative="greater"))

        Simultaneous 95% confidence intervals: Williams contrasts

Call:
simint.formula(formula = response ~ dose, data = angina, type = "Williams",
    alternative = "greater")

         Williams contrasts for factor dose

Contrast matrix:
     dose0 dose1     dose2     dose3     dose4
C1 0    -1  0.00 0.0000000 0.0000000 1.0000000
C2 0    -1  0.00 0.0000000 0.5000000 0.5000000
C3 0    -1  0.00 0.3333333 0.3333333 0.3333333
C4 0    -1  0.25 0.2500000 0.2500000 0.2500000

Absolute Error Tolerance:  0.001

 95 % quantile:  1.978

Coefficients:
   Estimate   5 %  -- t value Std.Err. p raw p Bonf p adj
C1   10.499 7.435 Inf   6.778    1.549     0      0     0
C2    7.747 5.093 Inf   5.775    1.341     0      0     0
C3    6.297 3.795 Inf   4.979    1.265     0      0     0
C4    5.247 2.824 Inf   4.284    1.225     0      0     0

となってしまいます。p値はすべて 0 ですし、Interval に Inf が含まれていますし、結果がおかしい気がするのですが…
WEBで検索しても、multcomp の Williams 検定については情報が見つけられませんでした。
使用方法や結果の見方などご教授いただけないでしょうか?
よろしくお願いいたします。

RからWebへのアクセス

Goeppingen (2006-06-14 (水) 10:42:34)

 R内より、WebにアクセスしてHTMLやXMLを取得できるのでしょうか?

"fitted probabilities numerically 0 or 1 occurred"

kaz (2006-06-12 (月) 16:00:47)

glmを用いておよそ100万件のデータをロジスティック回帰しています。説明変数は5個です。たまに首記のエラーが発生してしまいます。日本語版のエラーは「数値的に 0 か 1 である確率が生じました」です。

インターネットで検索したところ、perfect separation、つまりある説明変数XによってYが完全に説明されてしまう(Y=1 if and only if X<X0 for an X0)場合に当該エラーが出るようですが、100万件もありますし、またいくつかデータをチェックしましたが、そのようなことは起こっていないようです。(perfect separation参考:https://stat.ethz.ch/pipermail/r-help/2005-July/074693.html

他にこのエラーの生じる原因をご存知であれば教えていただけますでしょうか。なお、100万件もデータを用いることの是非については別問題としてください(データが多すぎることがこのエラーを引き起こしているのならば別ですが、同じ数のデータで回帰してもエラーが起こらないこともあります)

Sweaveでxtableをminipage環境に適用したいです

Akira (2006-06-09 (金) 10:40:42)

latexコマンドをRスクリプトに埋め込んで、Sweaveで結果をまとめています。
xtableで作成したtableをminipage環境で2つ横に並べたいのですが、Sweave()が出力するtexファイルの該当箇所を探して修正するのは面倒なので、minipage環境でxtableを出力したいと思っています。

> library(xtable)
> x <- data.frame(matrix(1:12, 2))
> xtable(x)
% latex table generated in R 2.3.0 by xtable 1.3-2 package
% Fri Jun 09 10:27:57 2006
?begin{table}[ht]
?begin{center}
?begin{tabular}{rrrrrrr}
?hline
 & X1 & X2 & X3 & X4 & X5 & X6 ??
?hline
1 & 1.00 & 3.00 & 5.00 & 7.00 & 9.00 & 11.00 ??
2 & 2.00 & 4.00 & 6.00 & 8.00 & 10.00 & 12.00 ??
?hline
?end{tabular}
?end{center}
?end{table}

この出力にminipage環境のコマンドを埋め込みたいです。

% latex table generated in R 2.3.0 by xtable 1.3-2 package
% Fri Jun 09 10:27:57 2006
?begin{table}[ht]
?begin{minipage}{0.5?hsize}
?begin{center}
?begin{tabular}{rrrrrrr}
?hline
 & X1 & X2 & X3 & X4 & X5 & X6 ??
?hline
1 & 1.00 & 3.00 & 5.00 & 7.00 & 9.00 & 11.00 ??
2 & 2.00 & 4.00 & 6.00 & 8.00 & 10.00 & 12.00 ??
?hline
?end{tabular}
?end{center}
?end{minipage}
#2列の場合は?begin{minipage}〜?end{minipage}が繰り返される
?end{table}

こんな感じです。
汎用性を持たせる技術がないので、今は

> cat("??begin{table}[ht]?n?n")
> y <- print(xtable(x)) #(1)
> y <- sub("????begin??{table??}??[ht??]?n", "", y)
> y <- sub("????end??{table??}?n", "", y)
> print(cat(y))
> cat("??end{table}?n?n")

としていますが、この場合(1)のところの出力がtexファイルに書き込まれてしまうので、結局修正しなればなりません。
printのオプションを確認しましたが、出力しない設定が分かりませんでした。RSiteSearchでもminipage環境の情報が少なく、困っています。
何か他に良い方法がありますでしょうか? R-2.3.0、WinXPSP1を使用しています。

dates関数でout.formatをyyyy/mm/ddにするには

mame (2006-06-08 (木) 20:13:58)

dates関数を使い数値データをyyyy/mm/ddに整形するにはどうすればいいでしょうか?
下記のように実行してみたのですが、月だけmon形式になってしまいます。

> dates(as.numeric(13149),out="yyyy/mm/dd")
[1] 2006/Jan/01

因みに"yyyy/m/dd"でも結果は同じでした。
R var2.3.0

分散の違い

kanako (2006-06-07 (水) 14:21:24)

異なる平均と標準偏差を持つ分布を3種類用意して、それらを順番に足したものを3列作成する際、別々に分けて作成したものと、一度に作成したものでは分散が違うようなのですが、何が違うのでしょうか?Rは2.3を使っていますが、2.1でも同じでした。いろいろ調べてみたのですが、何が悪いのか良く分かりませんでした。またどちらが正しいのでしょうか?

> a <- rnorm(100,0,1)
> b <- rnorm(100,3,3)
> c <- rnorm(100,5,5)
> abc <- cbind(a,a+b,a+b+c)
> var(abc)
          a                    
a 1.0695965 1.092034  0.7527298
  1.0920344 9.323825  7.0911109
  0.7527298 7.091111 30.6758695

> test <-  cbind(rnorm(100,0,1),
                 rnorm(100,0,1)+rnorm(100,3,3),
                 rnorm(100,0,1)+rnorm(100,3,3)+rnorm(100,5,5))
> var(test)
          [,1]        [,2]        [,3]
[1,] 0.9833900  0.10720269  0.56137488
[2,] 0.1072027 10.47080201 -0.03146996
[3,] 0.5613749 -0.03146996 34.98877571


データから円グラフを作成

ヤキソバパンマン (2006-06-06 (火) 21:58:03)

例えば、

2,1,3,2,2,2,1,3,1,2,2,2,1,2

という.csvファイルがあるとして、そのデータを比率に直し、
円グラフを書くスクリプトがわかりません。
2が8個、1が4個、3が2個なので、2の割合が大きいですが…
この計算などを行って、円グラフで出力したいです。
どなたか教えてください。

プロビットモデルでの疑似決定係数の計算

イマイ (2006-06-05 (月) 23:18:44)

プロビットモデルの回帰分析を行っていますが、疑似決定係数、あるいは尤度比インデックスを計算させるにはどうすればよいのか、教えていただけませんか。
超初心者なりに考え付く限り検索をかけてみたのですが、みつけられませんでした。よろしくお願い致します。

Mac OSXでのR 2.3.1でパッケージアップデートができない

高井 (2006-06-05 (月) 17:21:12)

PowerPC G5(デュアル 2.3GHz), OSX 10.4.6でR 2.3.1のGUI版の「パッケージとデータ」-->「パッケージインストーラ」を選んでバイナリーを「すべてアップデート」しようとすると,「パッケージのアップデートに失敗しました。詳細についてはコンソールを参照してください」となります。コンソールには

以下にエラーupdate.packages(lib = ""/Library/Frameworks/R.framework/Resources/library/"",  : 
	オブジェクト "Library" は存在しません

とあります。ところが,ターミナルから起動してupdate.packages()するとエラーはでません。バグでしょうか?

Step関数の実行

R初心者 (2006-06-01 (木) 19:56:59)

Windows XPでR2.2.1を用いて回帰分析を行っています。
step関数でAICによる交互作用も含めた変数選択を行おうとしたのですが、

> slm2 <- step(lm(y~(A+B+C+D+E)^2))
エラー:サイズ 1027089 Kb のベクトルを割り当てることができません
追加情報: Warning messages:
1: Reached total allocation of 734Mb: see help(memory.size) 
2: Reached total allocation of 734Mb: see help(memory.size) 
> summary(slm2)
以下にエラーsummary(slm2) : オブジェクト "slm2" は存在しません

となって計算が実行できません。
ちなみにメモリーは

> memory.size(T)
[1] 61349888

です。
Rではハードディスクを用いた仮想メモリを利用できる機能等はないのでしょうか?

交互作用A:Bを考慮した場合の正規Q-Qプロットです。あんまり見た目が変わりません。と言うことは、依然とまだどっかに交互作用がある、と言う事でしょうね。 -- R初心者 2006-06-05 (月) 16:25:19

windows版Rのインストール

ありんこ (2006-06-01 (木) 16:51:01)

すみません、中級者の所にしゃしゃり出てしまって…。インストールの説明のところに、2.2.1、2,2,0、2,1,0、2,1,1の四つがあったのですが…。初心者にはどれが良いのでしょう。

ノンパラメトリックなモデルでの変数選択

金井 (2006-06-01 (木) 01:35:15)

【やろうとしていること】
20個程度の説明変数があり,その説明変数を利用して,目的変数(0/1)を予測しようとしています.

【現状】
現在,R2.2.1を,Windows XPで利用中です.
線形判別分析,ロジスティック回帰分析の変数選択に関してはAICに基づく変数選択を過去ログから発見できたのですが,分類木(treeパッケージ),ニューラルネット(nnetパッケージ)に関してはここの過去ログを含め,Webを調べても情報がありませんでした.

【お聞きしたい点】
お聞きしたのは,2点です.

1.ニューラルネットや分類木で,線形判別分析で提供されている関数 step() のような簡単な仕組みで変数選択を行う方法はありますか?

2.そもそもニューラルネットや分類木で0/1の2値を予測する際に,変数選択を行うことが間違いでしょうか.

rglがOSXでコンパイルできない

高井 (2006-05-30 (火) 12:30:55)

R 2.3.0のフルセットをMac OSX 10.4.6, Xcode 2.3,PowerMac G5で使っていますが,rgl 0.66のコンパイルに失敗します。エラーメッセージは以下のようなものです。R 2.2.1のときはwarningはでるものの,rgl 0.66はコンパイルできて動きました。

api.cpp: In function ‘void rgl_user2window(int*, int*, double*, double*, double*, double*, int*)’:
api.cpp:608: error: invalid conversion from ‘int*’ to ‘const GLint*’
api.cpp:608: error:   initializing argument 6 of ‘GLint gluProject(GLdouble, GLdouble, GLdouble,
                      const GLdouble*, const GLdouble*, const GLint*, GLdouble*, GLdouble*, GLdouble*)’
api.cpp: In function ‘void rgl_window2user(int*, int*, double*, double*, double*, double*, int*)’:
api.cpp:633: error: invalid conversion from ‘int*’ to ‘const GLint*’
api.cpp:633: error:   initializing argument 6 of ‘GLint gluUnProject(GLdouble, GLdouble, GLdouble,
                      const GLdouble*, const GLdouble*, const GLint*, GLdouble*,
                      GLdouble*, GLdouble*)’
make: *** [api.o] Error 1
chmod: /Users/takai/Library/R/library/rgl/libs/ppc/*: No such file or directory
ERROR: compilation failed for package 'rgl'

文字をx軸に持つデータのプロット

Kamo (2006-05-26 (金) 16:27:22)

x軸が文字列,y軸が数値のデータを点と線でプロット(type="b")したいです。
次のようにすると、強制的に棒グラフ?になってしまいます。

plot(factor(x),y,type="b")

次のようにするとプロットはできますが、今度は軸の値が数値になってしまいます。

plot(as.numeric(factor(x)),y,type="b")

軸の値は上のケース、プロットは下のケースのようにするにはどうしたらいいのでしょうか?

スクリプトでread.delimを使うとエラーになってしまいます。

KT (2006-05-25 (木) 17:52:50)

 コンソールから

data <- read.delim("data.txt", header=T)

と入力・実行すると正しく実行されるのに、スクリプトファイル("test.R")に同じ内容を記述して、

source("test.R")

と実行すると、

以下にエラーeval.with.vis(expr, envir, enclos) : 
       関数 "raed.delim" を見つけることができませんでした

とエラーになってしまいます。対策をご教授いただければ幸いです。よろしくお願いします。

英語版R1.3の入手法は?

Yabo (2006-05-25 (木) 08:32:16)

R1.3を本家からダウンロードしても、インストールすると日本語表示になってしまいます。すでに"RとJava"のところでR1.2について報告があるのと同じく、JGRを動かすと文字化けします。残念ですが日本語が使えなくてもかまわないことにして、JGRを動かしたいです。英語版Rの導入法をどなたかご教示下さい。

条件が長さが2以上なので

レッド (2006-05-23 (火) 04:30:21)

次ののメッセージがでて条件式が効きません.

TSi <- amp$Si
> if (TSi < 8) {
+   TAl <- 8 - TSi 
+ } else {
+   TAl <- 0
+ }
Warning message:
条件が長さが2以上なので,最初の一つだけが使われます in: if (TSi < 8) {

超初心者で,Win.Version 2.2.1 

平均と標準偏差を使ったboxplotは描けませんか?

くに (2006-05-22 (月) 18:35:13)

箱ひげ図には平均値と標準偏差を用いたものもありますが、これをRで作図することは可能でしょうか?

ksvmでのstring kernelの処理

北陸人? (2006-05-18 (木) 22:42:37)

ksvmでのstring kernelを使いたいと考えています。
データセットを次のようにセットしました。(sktest.txt)

AA 1
AB -1
BB 1

コマンドは次のようにしました。

> library(kernlab)
> sktest<-read.table("C:ファイルの場所")
> sktest
  V1 V2
1 AA  1
2 AB -1
3 BB  1
> set.seed(50)
> sktest.num<-sample(3,2)
> sktest.train<-sktest[sktest.num,]
> sktest.test<-sktest[-sktest.num,]
> sktest.svm<-ksvm(V2~.,data=sktest,kernel="stringdot",kpar=list (lambda=0.5))

ここで、エラーメッセージが次のようにでます。

以下にエラーmatch.arg(kernel, c("rbfdot", "polydot", "tanhdot", "vanilladot",  : 
       'arg' は以下の一つでなければなりません: rbfdot, polydot, tanhdot, vanilladot, laplacedot,
                                                besseldot, anovadot, splinedot, matrix

stringdotが選択肢にないようです。 パッケージのマニュアルには、stringdotは選択肢にあり、ソース(stringk.c)という ものがあることは確認しました。それともデータセットの与え方がまずいのでしょうか?ご教示いただければ幸いです。

ksvmでの入力データ(listから行列の変換)

北陸人 (2006-05-17 (水) 13:40:12)

ksvmを使いたいと思っていますが、
入力するデータの変換についてお伺いします。

testdata <- read.table("C:ファイルの場所") #データ読み込み
testdatam <- data.matrix(testdata) #list(data.frame)から行列に変換
set.seed(50) #乱数の設定
testdatam.num <- sample(14965, 9000) #訓練データの数の設定
testdatam.train <- testdatam[testdatam.num,] #訓練データ
testdatam.test <- testdatam[-testdatam.num,] #テストデータの設定
testdatam.svm <- ksvm(type~., data=testdatam.train, kernel="rbfdot", kpar=list(sigma=0.001))
#SVMでの訓練データの学習

ここで

以下にエラーmodel.frame.default(data = list(V1 = c(33,19,13,24, 21,23,: オブジェクトが行列ではありません

とエラーメッセージがでます。
確認してみますと

> class(testdatam.train)
[1] "matrix"
> is.list(testdatam.train)
[1] FALSE
> is.matrix(testdatam.train)
[1] TRUE

とでます。
データは

7  11   4   1   2   3   0   2 (略)  9   4   3   8   5   3   1   2   0   3   1  -1

というスペース区切りの数値データです。
どういう操作が足らないのかご教示いただけませんでしょうか?

MacでのRコマンダーの使用について

どいま (2006-05-16 (火) 14:42:13)

MacOS XでのRコマンダーのインストールが出来ず困っています。
Rコマンダーをロードしようとすると、以下のようなメッセージが表示されます。
Rのバージョンは2.3.0です。

要求されたパッケージ tcltk をロード中です
Loading Tcl/Tk interface ... 以下にエラーdyn.load(x, as.logical(local), as.logical(now)) :
	共有ライブラリ '/Library/Frameworks/R.framework/Resources/library/tcltk/libs/i386/tcltk.so'
を読み込めません
  dlopen(/Library/Frameworks/R.framework/Resources/library/tcltk/libs/i386/tcltk.so, 10):
Library not loaded: /usr/X11R6/lib/libX11.6.dylib
  Referenced from: /Library/Frameworks/R.framework/Resources/library/tcltk/libs/i386/tcltk.so
  Reason: image not found
追加情報: Warning message:
ライブラリ ‘/Users/doima/Library/R/library’ はパッケージを含んでいません in: library()
エラー:.onLoad は 'tcltk' のための 'loadNamespace' に失敗しました
エラー:パッケージ 'tcltk' をロードできませんでした

Rで使えるデータ一覧

究極超具あーる (2006-05-12 (金) 12:57:54)

Rで例えば、

library(stats)
data(morley)

とすると、データmorleyが使えるようになりますよね。このような既にRで利用可能なデータの一覧と、その内容を知りたいのですが、どこかにまとめられたページはありますか?もしくは調べ方がわかればいいのですが、教えてください。

filterの使い方

ワース (2006-05-09 (火) 19:59:58)

下のフィルタをfilterで実装したいと思っています。

h = 0.01/(1-z^-1)

以下のようにスクリプトを書きました。

x = ts(rep(1, 1000), freq=100, start=0)
x = lag(x,k=-100)
y = filter(filter(x, 0.01, method="con", sides = 1), -1, method="rec")
plot(y)

フィルタhがうまく動けば、yは(t,y) = (0,1), (10,9)を通る直線となるはずなのですが、上記の例ではそうなりません。何が間違っているのでしょうか?
アドバイスをいただけると幸いです。よろしくお願いいたします。

ksvmに関連してのcsvファイルの読み書き

こねこ (2006-04-29 (土) 17:36:31)

ksvmに関連してcsvファイルの読み書を行おうとしているのですが、詰ってしまいました。
環境はWindowsXP + R(2.3.0)です。
アドバイスをいただけますと幸いです。

まずlibrary(kernlab)の後、下記コマンドを実行すると正常に処理が行われます。

> x<-as.matrix(iris[51:150,3:4])
> y<-as.matrix(iris[51:150,5])
> iris1 <- ksvm(x,y,kernel="anovadot",kpar=list(sigma=0.5))
> table(y,predict(iris1,x))


ところが下記のように一度データをcsvファイルに保存してから、読み込みなおして実行するとエラーが発生してしまいます。

> x<-as.matrix(iris[51:150,3:4])
> y<-as.matrix(iris[51:150,5])
> write.table(x, file = "svmsample_x.csv", sep = ",", col.names = NA)
> write.table(y, file = "svmsample_y.csv", sep = ",", col.names = NA)
> rm(list=ls(all=TRUE))
> x<-read.table("svmsample_x.csv", header = TRUE, sep = ",", row.names=1)
> y<-read.table("svmsample_y.csv", header = TRUE, sep = ",", row.names=1)
> iris1 <- ksvm(x,y,kernel="anovadot",kpar=list(sigma=0.5))
以下にエラーksvm(x, y, kernel = "anovadot", kpar = list(sigma = 0.5)) : 
        no direct or inherited method for function 'ksvm' for this call
> table(y,predict(iris1,x))
エラー:オブジェクト "iris1" は存在しません
以下にエラーpredict(iris1, x) : unable to find the argument 'object' in  
       selecting a method for function 'predict'


読み書きでデータ型が変化したわけでもないようです。
申し訳ありませんがご教示宜しくお願いします。

成長曲線の当てはめ

たつ (2006-04-29 (土) 15:09:09)

y(売上高)とx(キャンペーン額)の関係を成長曲線に当てはめたいと思っています。
以上の目的に適当なパッケージはありますでしょうか?
その際に売上高の上限と下限を指定できたりすると好都合なのですが・・・・

アドバイスよろしくお願いします。

最小絶対偏差回帰

たろう (2006-04-26 (水) 20:19:04)

R初心者ですが、Splusをしばし使用しておりました。
Splusでは、最小絶対偏差回帰は
l1fitですが、Rで対応する関数を見出すことできずにおります。
ご存知のかた、ご教示宜しくお願いします。 

部分一致検索によるtableからの行の抽出

hogehoge (2006-04-25 (火) 23:21:19)

R初心者です。
以下のようなtableからNameに関する部分一致検索で行を抽出したいのですが、どのように書けば良いのでしょうか?

>in1
Name Score
AAA 25
AAB 50
ABB 75
BBB 100

完全一致の場合は以下のように書けるのを見てなるほどと思い

>in2 <- subset(in1, Name=="AAB")
>in2
  Name Score
2  AAB    50

次のように書いたのですが

>in2 <- subset(in1, match("AA", in4$Name))
>in2 <- sunbset(in1, match("AA", Name))
etc...
'subset' は論理値として評価されなければなりません。

と怒られてしまいます。またhelp(match)の内容も良く分かりませんでした。RはWin用2.3.0を使用しています。
すみませんが、ご教示宜しくお願いします。

常微分方程式系のバラメータ推定をするには?

使用1ヶ月目 (2006-04-19 (水) 11:44:48)

常微分方程式系のバラメータ推定を考えています。常微分方程式系のバラメータ推定をするには、おそらくodesolveの中の関数rk4とnlmを組み合わせる必要があると思います。まだ、Rの操作に慣れていないので、うまく記述することができません。どこかにコーディング例がありましたらご紹介ください。よろしくお願いします。

データファイルを読み込んでcor.testをする時のエラー

tensho (2006-04-17 (月) 23:26:15)

基本的な質問で申し訳ありません。
データファイルを読みこんでcor.testを行うと、「長いオブジェクトの長さが短いオブジェクトの長さの倍数になっていません」というエラーが出てしまいます。対処法を宜しくお願いします。

GLMでの決定係数

ごう (2006-04-11 (火) 06:30:08)

GLMの基本的な部分かもしれないのですが、情報をいただけませんでしょうか。
正規分布を前提とした普通の重回帰モデルでは決定係数が算出できますが、GLMでのポアソン回帰などでは普通の決定係数は算出できませんよね。
近似した値は「誰々(人名)」の決定係数といった雰囲気で算出できるのかもしれないのですが、これはロジスティック回帰を見る限りではどうも低く算出されているような気がします。
正規分布重回帰モデルでもサンプルサイズが大きければ有意なモデルとして評価されますが、R^2=0.1ではあまり意味がありません。GLMではこのあたりをどのように解釈すれば良いのでしょうか。Rで step(model)とすればAICで評価されたモデルが手に入りますが。特にGLMMではもっとめんどうで、モデルが成り立つかどうかで判断するというような記載を読んだ気がします。GLM、GLMMではサンプルサイズ至上主義なのでしょうか?
 重複投稿ご容赦願います。他のサイトでも質問したのですが返答頂けなかったもので、こちらで再度質問させて頂きました。

bartlett.test関数の中身を見るには?

使用1ヶ月目 (2006-04-10 (月) 17:17:00)

通常、関数の中身を見るには、関数名をそのまま入力すればよいのですが、bartlett.test関数は、この方法で中身を見ることができません。S-plusには、bartlett検定の関数がないので、Rのbartlett.test関数を移植しようと思っています。bartlett.test関数の中身を見る方法をご存知の方がいらっしゃいましたら、よろしくお願いします。

尤度のプロットについて

にゃあ (2006-04-08 (土) 14:26:34)

例えば二項分布binomの確率分布はdbinomとして計算できますが、同様な手法で簡単に尤度を計算させる命令というのはあるのでしょうか?
また尤度のプロットというのも可能なんでしょうか?

ライブラリ

超初心者 (2006-04-03 (月) 15:18:03)

Package source: evd_2.1-7.tar.gz
Windows binary: evd_2.1-7.zip
ライブラリには、上記のように、拡張子がgzのものと、zipのものがあります。当方はWINDOWS環境でRを使用することを考えていますが、2種類の拡張子は使い分けが必要なのでしょうか?あるいは、zipだけで十分なのでしょうか???

数値の置き換え

青木繁伸 (2006-03-31 (金) 23:03:18)

整数ベクトル x を,別の数値に置き換える関数を作る必要がありました。
条件はn行3列の行列で与えようと思います。xの要素が1列目以上で2列目以下であるときに3列目の数値に変換しようと言うことになります。

> y <- matrix(c(1,3,1, 4,7,5, 8,10,9), byrow=TRUE, nc=3)
> y
     [,1] [,2] [,3]
[1,]    1    3    1
[2,]    4    7    5
[3,]    8   10    9

xの要素が,2のときはy[1,1] <= x <= y[1,2] ですので y[1,3] つまり1に置き換える,8のときは9になるなどです。
xが次のようなとき

> x <- c(7, 4, 3, 1, 8, 6, 5, 5, 8, 1, 1, 10, 7, 6, 3, 5, 10, 8, 3, 3)

答えが

5, 5, 1, 1, 9, 5, 5, 5, 9, 1, 1, 9, 5, 5, 1, 5, 9, 9, 1, 1

になることを期待されます。
そこで作ったのが,

recode <- function(x, y)
{
	sapply(x, function(z) y[,3][y[,1] <= z & z <= y[,2]])
}

ですが,もっとスマートな定義があるでしょうか...

OR?

内藤 (2006-03-24 (金) 10:57:13)

X中のF2=1,かつF3=1であるF1を抽出するには,
下記のとおりでいいと思うのですが,
X$F1[X$F2=1 & X$F3=1]
X中のF2=1,または,F3=1であるF1を抽出するには,
どのようにすればよいでしょうか?

図をpdfファイルに保存するには

初心者ST (2006-03-20 (月) 16:50:24)

皆様.初めて質問させていただきます.初心者STです.宜しくお願いいたします.

x <- c(0:100)
y <- 10000 / (1+0.05*x)
z <- 10000 / (1+0.10*x)
plot (x,y, ylim=c(0, 10000), main="hypothetical function", sub="Fig 1",pch=2) 
par(new=T)
plot (x,z, ylim=c(0, 10000), ann=F, pch=4)

上記の図を描いた後,ファイル−別名で保存より,pdfを選択すると,次のようなエラーが生じて,pdfファイルとして正常に保存できません.

エラー:invalid character sent to 'PostScriptCIDMetricInfo' in a single-byte locale
追加情報: Warning messages:
1: invalid string in 'PostScriptStringWidth' 
2: invalid string in 'PostScriptStringWidth' 
3: invalid string in 'PostScriptStringWidth'

何が原因でしょうか?基本的な質問で大変申し訳ありませんが,もしお分かりの方がいらっしゃれば,ご教示頂ければ幸いです.なお,使用環境は,R version 2.2.1, 2005-12-20, i386-pc-mingw32です.以上,宜しくお願い申し上げます.

大量のグラフを描くためには

antt (2006-03-14 (火) 00:08:58)

はじめまして。大量のグラフを描きたいのですが,以下に記したようにエラーが出て解決できません。どなたか解決方法をご存知の方,お教え頂けると幸いです。
【環境】R version 2.2.1, i386-pc-mingw32, メモリ 1GB
【問題】大量のグラフを描き続けると,オブジェクトは別に増えていないのに,メモリを消費したままで,その内,Rがフリーズする
【知りたいこと】大量のグラフを描きたい場合に,どのようなプログラムを書けば,メモリの消費を抑えられるか知りたい
【プログラム例】

alternative <- 1:5    #選択肢の数
nitem       <- 100    #項目の数
nschool     <- 10     #施設の数
n           <- 10000  #標本サイズ

##仮想データを作成
data <- data.frame(matrix(alternative, ncol=nitem, nrow=n))
data$school <- rep(1:nschool, each=n/nschool) #1施設 1000人

##画像作成用の関数を定義する
plotitem <- function(i, j) {
    dir.create(paste("school", i, sep=""), showWarnings=F)      #施設ごとにディレクトリを作成
    filename <- paste("./school", i,"/item", j, ".ps", sep="")  #施設ごとに,各項目のファイルを出す
    postscript(filename)                                        #保存する
    subdata <- which(data$school==i)                            #施設ごとのデータを抽出する
    hist(data[subdata,i], breaks=c(.5 + 0:5))
    dev.off()
}

##まずは,1施設,10項目を描画してみる
for (i in 1) {
      for (j in 1:10){
               plotitem(i,j)
      }
}

##次に,1施設,100項目を描画してみる
##メモリサイズにより,この時点でRがフリーズする
##postscript(); dev.off() が終了した時点でも,メモリが消費しているようである
for (i in 1) {
      for (j in 1:100) {
               plotitem(i,j)
      }
}

imageの色を絶対指定するには

子牛 (2006-03-13 (月) 19:39:19)

はじめまして。imageで得た画像にcolをつかって色を指定したいのですが、たとえば次の例にあるような二つのグラフの違いを明らかにしたいのです。この例ではグラフaはグラフa-1よりもいつも1だけ大きくなります。
数値にたいして絶対的な方法で色を指定するにはどうすればよろしいのでしょうか? 

> a <- rnorm(100)
> dim(a) <- c(10,10)
> b<- a-1
> 
>  x <- 1:10; y <- 1:10
> 
> op <- par(mfrow=c(1,2))
> image(x,y,a, col=cm.colors(100), main=paste("a"))
> image(x,y,b, col=cm.colors(100), main=paste("a-1"))
> 
> par(op)


以下は使用環境のメモです。

> sessionInfo() 
R version 2.1.1, 2005-06-20, i386-pc-mingw32 

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

SVMのマージン距離出力方法について

ちょめ夫 (2006-03-13 (月) 12:10:44)

現在SVMに関するパッケージの検討を行っております。
検討対象としているパッケージは以下の2つです。
 1)e1071
 2)kernlab
なお、判別したいクラスは2クラスの分類となっております。上記二つのパッケージのどちらでも良いのですが、SVMの予測結果において、与えた各サンプルと各クラスのマージンまでの距離を知りたいと考えておりますが、e1071,kernlabのpredict関数ともに、予測されたクラスやProbability、vote結果は出力可能ですがマージンまでの距離はどのように求めればよいか分かりません。イメージとしては、以下ウェブページの
http://www.msi.co.jp/vmstudio/materials/tech/classification.html#1-5
「図 Support Vector Machine 出力画面」のSVM.出力.1、2のような 数値情報です。もしご存じの方いらっしゃったらアドバイスいただければ幸いです。 どうぞよろしくお願いいたします。

> sessionInfo()
R version 2.1.1, 2005-06-20, i386-pc-mingw32 

attached base packages:
 [1] "methods"   "stats"     "graphics"  "grDevices" "utils"     "datasets"    [7] "base"     
other attached packages:
colorspace    kernlab      e1071      class 
     "0.9"    "0.6-2"   "1.5-11"   "7.2-16"~

添付ファイル: file回帰診断.jpg 3188件 [詳細] filepict2.png 2655件 [詳細] filefig2.png 3470件 [詳細] fileget.yahoo.jp.R 1680件 [詳細] fileQQplot.jpg 3063件 [詳細] filefig1.png 3418件 [詳細] filetemp2.png 3078件 [詳細] filetemp.png 3119件 [詳細] fileboxplot.png 3122件 [詳細] filefilter.png 3161件 [詳細] fileQQplot2.jpg 3084件 [詳細] fileQQplot4.jpg 1446件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-03-25 (土) 11:19:16