FC2ブログ

 日々の研究生活での出来事,考えたことなどのメモ。あるいはお知らせ。

  お知らせのナビゲーター   トップページ > 情報  

スポンサーサイト

-- - --/-- [--] - --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

データフレームの型名を調べる

2012 - 05/04 [Fri] - 12:13

 統計解析ソフトRにおいて,データフレームの型名を調べるには『class()』関数を利用します。例えば,datと言うデータフレームを作成した場合,『class(dat[,1])』とすれば,1列目の変数の型名が出力されます。しかし,この方法では1変数ずつしかチェックできませんので,結構不便です。そこで以下のようなzoku()関数を作成しました。


zoku <- function(dat){
n <- ncol(dat)
データ型 <- vector(mode="character", length=n)
変数名 <- names(dat)
for(i in 1:n){
データ型[i] <- class(dat[,i])
}
data.frame(変数名, データ型)
}

 試しにこの関数を実行してみます。ここではフィッシャーのirisというデータフレームを使用してみましょう。このデータは以下のようなものです。

> head(iris)
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
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa

 これをzoku()関数に読み込ませると以下のようになります。

> zoku(iris)
変数名 データ型
1 Sepal.Length numeric
2 Sepal.Width numeric
3 Petal.Length numeric
4 Petal.Width numeric
5 Species factor

 ただ同じ事はfor文を使わずに,sapply()関数を使っても可能です。

> sapply(iris, class)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
"numeric" "numeric" "numeric" "numeric" "factor"

本来的にはこちらの方が『正しい』のかもしれません。

スポンサーサイト

Rで作図 ~日本語保存~

2011 - 11/13 [Sun] - 22:03

 統計解析ソフトRのplot関数などを使って作図したとき、その図を保存するには「ファイル」メニューから「別名で保存」→「Jpeg」などを選択すると思います。しかし、その図をTeXなどで利用するときはEPSファイルにしなければならないので、ファイルメニューの「Postscript」を選択することになります。しかし、図中に日本語が入っていると、このまま保存したら文字化けを起こしてしまい、よろしくありません。

 グーグルで検索をかけても、何かやたら複雑な方法しか見つからず、とても面倒です。そこで、僕が最も簡単だと思う方法を以下に書いておきます。まずRのコマンド画面の方で以下のスクリプトを実行します。

    ps.options(family="Japan1")

 これだけで終了です。後は通常通り、作図ウィンドウの「ファイル」メニューから「別名で保存」→「Postscript」を選択して、保存します。このときEPSで保存するのではなく、PSファイルとして保存することに注意して下さい。この方法で保存すれば、日本語も文字化けしません。

 そして、そのPSファイルをGSViewで開き、「File」メニューから「PS to EPS」を選択して変換すれば、キレイなEPS画像ファイルとして作成できます。いろいろ試しましたが、これが最も簡単な方法だと思います。もしよければお試し下さい。

javaのパスが通らない!

2010 - 05/28 [Fri] - 19:36

 ある本を読んでいて,Javaを使う必要が出てきました。そういうわけでJDKのダウンロードサイトから最新版をダウンロードしてきてインストールしました。

 で,例によってシステムの環境変数に『C:\Program Files\Java\jdk1.6.0_20\bin』のようにパスを通したのですが,なぜかJavacが使えません・・・本を見返して,幾度もチェックしたのですが,どうしてもエラーが出てしまいます。

 ちなみに環境は32bit版のWindows7です。で,最終的にわかったのですが,どうやらパスの最後のフォルダ部分に『\』をつけなければいけないようです。つまり以下のように設定してやります。


C:\Program Files\Java\jdk1.6.0_20\bin\;

 これって常識なんですかねぇ?時間をかなり無駄にしてしまいました。

ニュートン法で1変数関数を最適化

2009 - 11/19 [Thu] - 10:18

 今週の勉強会はニュートン法についてでした。これは誰もが知っている基本中の基本のアルゴリズムの中で,汎用性がかなり高いものですね。とは言え,アルゴリズム自体はすでに知っていることなので,勉強会はすぐに終わってしまいました。と,言うわけで,今回もC++で書いたコードを載せておきます。


/*****************************************
ニュートン法(1変量)

f(x) = x^3 - 6x^2 + 9x - 3
f'(x) = 3x^2 - 12x + 9
f''(x) = 6x - 12

解答
x = 1のとき,極大値 1
x = 3のとき,極小値 -3
*****************************************/

#include <iostream>
#include <cmath>

using namespace std;

double func( double x )
{
return x*x*x - 6*x*x + 9*x - 3;
}

double dfdx( double x )
{
return 3*x*x - 12*x + 9;
}

double dfdx2( double x)
{
return 6*x - 12;
}


double newton( double x )
{
double df, ddf, xprev;
double delta = 1.e-6;
int limit = 100;
int n = 0;

do {
n++;
df = dfdx( x );
ddf = dfdx2( x );
xprev = x;
x -= df/ddf;
cout << "n = " << n << ", x = " << x << ", f(x) = " << func(x) << endl;

} while( fabs(x - xprev) >= delta && n <= limit );

return x;
}


int main()
{
double a, x; ;

cout << "f(x) = x^3-6x^2+9x-3 を最適化します" << endl;
cout << "初期値を入力してください: ";
cin >> a;
cout << "\n初期値" << a << "で計算を開始します。" << endl;
cout << "-----------------------------------" << endl;

x = newton( a );

cout << "\n計算が終了しました。" << endl;
cout << "x = " << x << "のとき,極値は" << func(x) << "です。" << endl;

return 0;
}

続きを読む »

liboctave利用時のコンパイル

2009 - 11/17 [Tue] - 16:13

 C++で数値計算をする場合,何らかのライブラリを利用することになるのですが,僕の最近のお気に入りは『liboctave』です。使い始めて間もないので,まだ何ともいえませんが,フリーではなかなか強力なライブラリで,これ1つで大抵のことはできそうな感じです。計算速度もatlasと組み合わせることで高速化されますし,boostなどと合わせて使えば言うことなしですね。

 ただ,ターミナルでコンパイルするのが非常に面倒です,,,と,思っていたのですが,簡単な方法がありました。忘れやすいので,ここにメモしておきます。


mkoctfile --link-stand-alone -o calc calc.cpp

 | HOME |  »

プロフィール

管理者

 専門は心理統計学で構造方程式モデリングを中心に探索的分析法の研究をしています。

 ・著書:5冊
 ・翻訳:2冊
 ・査読論文:4本
 ・紀要論文:2本
 ・報告書等:2本
 ・国際発表:5回
 ・国内発表:12回

最近の記事+コメント

カテゴリ

全記事一覧表示

過去の記事

カウンタ

現在の閲覧者数

カレンダー

09 | 2018/10 | 11
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -

ブログ内検索

リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。