大量な計算をするための環境を作ってみます。
研究としてはあまり意味はないのですが、どの程度の計算をどの規模でできるかは今後のために限界を知っておく必要があります。
今回は総組み合わせ計算をして結果をデータベースに格納するまでやってみます。
[今回の環境]:
OS : CentOS6.7 64bit
仮想化ソフト : VMWare Fusion Mac版
1.CentOSの初期設定
CentOSのインストール
簡易インストールでやると何故か起動できない。通常インストールで実施。
途中のネットワーク設定で、eth0を自動起動にしておき、今回の場合は学内なので固定IPアドレス設定をする。VMWareの方もブリッジ接続にしておく。
インストール後
# yum update
# vi /etc/sysconfig/selinux
SELINUX=disabled
# service iptables stop
# chkconfig iptables off
# cgkconfig ip6tables off
# reboot
今後はsshでログインして作業をする(VMWare内だとロックが面倒)
2.各種サーバインストール
[Javaのインストール]
# yum install java-devel
# javac -version で確認
[LAMP環境]
# yum install httpd
# service httpd start
# chkconfig httpd on
# yum install php php-mbstring php-mysql
# service httpd restart
# yum install vsftpd
# service vsftpd start
# chkconfig vsftpd on
# yum install mysql-server
# service mysqld start
# chkconfig mysqld on
# yum install epel-release
# yum --enablerepo=epel install phpMyAdmin
# vi /etc/httpd/conf.d/phpMyAdmin.conf
# vi /etc/phpMyAdmin/config.inc.php
# service httpd restart
3.アプリケーション設定
これにjavaプログラムをのせて動くように設定する。
得られたデータをダンプ取り、アップロード時に注意すること
2016年1月29日金曜日
2016年1月26日火曜日
rJava : プログラミング(11) Steel-Dwass法(non-parametoric, 等分散性制限無し)
まずBatlettで等分散性を検定、今回は帰無仮説が棄却され等分散性が成立しないので、Steel-Dwass法(non-parametoric, 等分散性制限無し)を利用した。
Rでやってみると
$ R
> source("http://aoki2.si.gunma-u.ac.jp/R/src/Steel-Dwass.R")
> data <- br="" c="">+ 0.1875, 1.3333333333333, 1.5384615384615, 1.9763313609467, 0.76748582230624, 1.6859504132231, 1.1142659279778, 1.1358024691358, 0.80555555555556, 3.2448979591837, 3.1675338189386, 3.1466836734694, 2.8512110726644, 2.0, 2.0826446280992,
+ 0.484375, 0.13888888888889, 2.2366863905325, 1.905325443787, 0.69187145557656, 1.6528925619835, 0.92243767313019, 1.1111111111111, 1.2222222222222, 3.1683673469388, 4.1727367325702, 5.0956632653061, 2.4636678200692, 1.7777777777778, 2.7272727272727,
+ 0.234375, 0.13888888888889, 1.6213017751479, 0.071005917159763, 0.5179584120983, 1.6461776859504, 0.82271468144044, 1.1358024691358, 1.3333333333333, 3.6734693877551, 4.1727367325702, 5.6772959183673, 3.4048442906574, 2.9876543209877, 2.9752066115702,
+ 0.0, 0.0, 1.5621301775148, 10.236686390533, 0.80151228733459, 1.5599173553719, 1.1004155124654, 1.7777777777778, 2.4722222222222, 4.9183673469388, 5.6357960457856, 6.6058673469388, 2.8512110726644, 3.1358024691358, 1.8842975206612)
> group <- 15="" br="" c="" rep="">> Steel.Dwass(data, group)
t p
1:2 0.02073903 0.9999968
1:3 0.02074365 0.9999968
1:4 0.70528407 0.8950434
2:3 0.18669284 0.9976931
2:4 0.66379678 0.9106851
3:4 0.64298158 0.9180231->->
となった。有意性は確認できない。rjavaでやると
$ vi JRITest13.java
$ javac JRITest13.java
$ java -Djava.library.path=/usr/lib64/R/library/rJava/jri/ JRITest13
[VECTOR ([REAL* (16.294575129341144)], [REAL* (3.0)], [REAL* (9.866990036363195E-4)], [STRING "score by group"], [STRING "Bartlett test of homogeneity of variances"])]
[REAL* (0.020739033894608506, 0.020743649235467825, 0.7052840740059061, 0.18669284311921042, 0.6637967755349704, 0.6429815765773006, 0.9999967966772032, 0.9999967945383197, 0.8950433896624197, 0.9976931476869926, 0.9106851171476555, 0.9180230907044584)]
となる。
参考
http://www.shiga-med.ac.jp/~koyama/stat/com-ph.html
http://aoki2.si.gunma-u.ac.jp/R/Steel-Dwass.html
Rでやってみると
$ R
> source("http://aoki2.si.gunma-u.ac.jp/R/src/Steel-Dwass.R")
> data <- br="" c="">+ 0.1875, 1.3333333333333, 1.5384615384615, 1.9763313609467, 0.76748582230624, 1.6859504132231, 1.1142659279778, 1.1358024691358, 0.80555555555556, 3.2448979591837, 3.1675338189386, 3.1466836734694, 2.8512110726644, 2.0, 2.0826446280992,
+ 0.484375, 0.13888888888889, 2.2366863905325, 1.905325443787, 0.69187145557656, 1.6528925619835, 0.92243767313019, 1.1111111111111, 1.2222222222222, 3.1683673469388, 4.1727367325702, 5.0956632653061, 2.4636678200692, 1.7777777777778, 2.7272727272727,
+ 0.234375, 0.13888888888889, 1.6213017751479, 0.071005917159763, 0.5179584120983, 1.6461776859504, 0.82271468144044, 1.1358024691358, 1.3333333333333, 3.6734693877551, 4.1727367325702, 5.6772959183673, 3.4048442906574, 2.9876543209877, 2.9752066115702,
+ 0.0, 0.0, 1.5621301775148, 10.236686390533, 0.80151228733459, 1.5599173553719, 1.1004155124654, 1.7777777777778, 2.4722222222222, 4.9183673469388, 5.6357960457856, 6.6058673469388, 2.8512110726644, 3.1358024691358, 1.8842975206612)
> group <- 15="" br="" c="" rep="">> Steel.Dwass(data, group)
t p
1:2 0.02073903 0.9999968
1:3 0.02074365 0.9999968
1:4 0.70528407 0.8950434
2:3 0.18669284 0.9976931
2:4 0.66379678 0.9106851
3:4 0.64298158 0.9180231->->
となった。有意性は確認できない。rjavaでやると
$ vi JRITest13.java
$ javac JRITest13.java
$ java -Djava.library.path=/usr/lib64/R/library/rJava/jri/ JRITest13
[VECTOR ([REAL* (16.294575129341144)], [REAL* (3.0)], [REAL* (9.866990036363195E-4)], [STRING "score by group"], [STRING "Bartlett test of homogeneity of variances"])]
[REAL* (0.020739033894608506, 0.020743649235467825, 0.7052840740059061, 0.18669284311921042, 0.6637967755349704, 0.6429815765773006, 0.9999967966772032, 0.9999967945383197, 0.8950433896624197, 0.9976931476869926, 0.9106851171476555, 0.9180230907044584)]
となる。
import org.rosuda.JRI.REXP;
import org.rosuda.JRI.Rengine;
import java.sql.*;
import java.util.Arrays;
public class JRITest13 {
public static void main(String[] args)
{
MySQL mysql = new MySQL();
Rengine re = new Rengine( new String[]{"--no-save"}, false, null );
ResultSet rs = mysql.selectOperators();
int N = 15;
double awareness [] = new double[N];
double decision [] = new double[N];
double communication [] = new double[N];
double leadership [] = new double[N];
int index = 0;
try {
while(rs.next()){
awareness[index] = rs.getDouble("s_awareness");
decision[index] = rs.getDouble("s_decision");
communication[index] = rs.getDouble("s_communication");
leadership[index] = rs.getDouble("s_leadership");
index ++;
}
} catch (SQLException e) {
e.printStackTrace();
}
//System.out.println(Arrays.toString(result));
double score[] = new double[awareness.length*4];
int index2 = 0;
for(int i = 0 ; i< awareness.length; i++) score[index2++] = awareness[i];
for(int i = 0 ; i< decision.length; i++) score[index2++] = decision[i];
for(int i = 0 ; i< communication.length; i++) score[index2++] = communication[i];
for(int i = 0 ; i< leadership.length; i++) score[index2++] = leadership[i];
System.out.println(Arrays.toString(score));
StringBuffer buf = new StringBuffer();
buf.append("score<-c(");
for(int i = 0; i < score.length; i++){
if(i == score.length -1)
buf.append(score[i]+")");
else
buf.append(score[i]+",");
}
String c_value = buf.toString();
re.eval(c_value);
REXP x = re.eval("summary(score)");
System.out.println(x);
double [] ary = x.asDoubleArray();
for (int i = 0; i < ary.length; i++) {
System.out.println(ary[i]);
}
//Bartlett Test
re.eval("group=factor(rep(c('awareness', 'decision', 'communication', 'leadership'), c(15, 15, 15, 15)))");
REXP x1 = re.eval("bartlett.test(score ~ group)");
System.out.println(x1);
//Steel.Dwass Test
re.eval("source('http://aoki2.si.gunma-u.ac.jp/R/src/Steel-Dwass.R')");
re.eval("group <- rep(1:4, c(15, 15, 15, 15))");
REXP x2 = re.eval("Steel.Dwass(score,group)");
System.out.println(x2);
re.end();
}
}
参考
http://www.shiga-med.ac.jp/~koyama/stat/com-ph.html
http://aoki2.si.gunma-u.ac.jp/R/Steel-Dwass.html
2016年1月24日日曜日
rJava : プログラミング(10) F Test(2群における等分散検定)
一人の手術者の評価の前半、後半で得点の差があるか検定するために、2群の得点が等分散かどうかF検定をやってみます。
F検定:対象37件
帰無仮説:2群間の分散に差がない(等分散である)
今回の2つの群は
[39.0, 40.0, 39.0, 38.0, 38.0, 43.0, 48.0, 43.0, 41.0, 44.0, 35.0, 36.0, 37.0, 30.0, 46.0, 40.0, 44.0, 40.0]
[45.0, 36.0, 45.0, 38.0, 39.0, 45.0, 40.0, 44.0, 48.0, 45.0, 45.0, 46.0, 40.0, 44.0, 37.0, 45.0, 48.0, 44.0, 43.0]
となり、
一つ目のsummaryは、意味は(Min 最小値, 1st Qu 第一四分位数, Median 中央値, Mean 平均値, 3rd Qu 第三四分位数, Max 最大値)
(30.0, 38.0, 40.0, 40.06, 43.0, 48.0)
2つ目は
(36.0, 40.0, 44.0, 43.0, 45.0, 48.0)
最小値も平均も高いので、後半の方が良さそうだけど、t検定をする予定。そのために等分散を検定しておく。
$ vi JRITest14.java
$ javac JRITest14.java
$ java -Djava.library.path=/usr/lib64/R/library/rJava/jri/ JRITest14
[VECTOR ([REAL* (1.4314578005115088)], [INT* (17, 18)], [REAL* (0.45734976337721367)], [REAL* (0.547029015180649, 3.7965176255066506)], [REAL* (1.4314578005115088)], [REAL* (1.0)], [STRING "two.sided"], [STRING "F test to compare two variances"], [STRING "c_group1 and c_group2"])]
p-value = 0.45734976337721367
なので帰無仮説が採択。よって等分散が言える。
[JRITest14.java]
今回のSQL文
String sql = "SELECT * FROM operations WHERE category = 0 AND evaluator <=15 and operator =6";
参考
http://kusuri-jouhou.com/statistics/fkentei.html
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/65.html
http://monge.tec.fukuoka-u.ac.jp/r_analysis/test_t03.html
F検定:対象37件
帰無仮説:2群間の分散に差がない(等分散である)
今回の2つの群は
[39.0, 40.0, 39.0, 38.0, 38.0, 43.0, 48.0, 43.0, 41.0, 44.0, 35.0, 36.0, 37.0, 30.0, 46.0, 40.0, 44.0, 40.0]
[45.0, 36.0, 45.0, 38.0, 39.0, 45.0, 40.0, 44.0, 48.0, 45.0, 45.0, 46.0, 40.0, 44.0, 37.0, 45.0, 48.0, 44.0, 43.0]
となり、
一つ目のsummaryは、意味は(Min 最小値, 1st Qu 第一四分位数, Median 中央値, Mean 平均値, 3rd Qu 第三四分位数, Max 最大値)
(30.0, 38.0, 40.0, 40.06, 43.0, 48.0)
2つ目は
(36.0, 40.0, 44.0, 43.0, 45.0, 48.0)
最小値も平均も高いので、後半の方が良さそうだけど、t検定をする予定。そのために等分散を検定しておく。
$ vi JRITest14.java
$ javac JRITest14.java
$ java -Djava.library.path=/usr/lib64/R/library/rJava/jri/ JRITest14
[VECTOR ([REAL* (1.4314578005115088)], [INT* (17, 18)], [REAL* (0.45734976337721367)], [REAL* (0.547029015180649, 3.7965176255066506)], [REAL* (1.4314578005115088)], [REAL* (1.0)], [STRING "two.sided"], [STRING "F test to compare two variances"], [STRING "c_group1 and c_group2"])]
p-value = 0.45734976337721367
なので帰無仮説が採択。よって等分散が言える。
[JRITest14.java]
今回のSQL文
String sql = "SELECT * FROM operations WHERE category = 0 AND evaluator <=15 and operator =6";
import org.rosuda.JRI.REXP;
import org.rosuda.JRI.Rengine;
import java.sql.*;
import java.util.Arrays;
public class JRITest14 {
public static void main(String[] args)
{
MySQL mysql = new MySQL();
Rengine re = new Rengine( new String[]{"--no-save"}, false, null );
ResultSet rs = mysql.selectOperations();
int N = 37;
double group1 [] = new double[N/2];
double group2 [] = new double[N/2+1];//**注意i:奇数の時は+1**
int index = 0;
try {
while(rs.next()){
if(index < (int)(N/2)){
group1[index] = rs.getDouble("value");
}else if(index >= (int)(N/2)){
group2[index-(int)(N/2)] = rs.getDouble("value");
}
index ++;
}
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println(Arrays.toString(group1));
System.out.println(Arrays.toString(group2));
StringBuffer buf1 = new StringBuffer();
buf1.append("c_group1<-c(");
for(int i = 0; i < group1.length; i++){
if(i == group1.length-1)
buf1.append(group1[i]+")");
else
buf1.append(group1[i]+",");
}
String c_group1 = buf1.toString();
re.eval(c_group1);
REXP x1 = re.eval("summary(c_group1)");
System.out.println(x1);
double [] ary1 = x1.asDoubleArray();
for (int i = 0; i < ary1.length; i++) {
System.out.println(ary1[i]);
}
StringBuffer buf2 = new StringBuffer();
buf2.append("c_group2<-c(");
for(int i = 0; i < group2.length; i++){
if(i == group2.length-1)
buf2.append(group2[i]+")");
else
buf2.append(group2[i]+",");
}
String c_group2 = buf2.toString();
re.eval(c_group2);
REXP x2 = re.eval("summary(c_group2)");
System.out.println(x2);
double [] ary2 = x2.asDoubleArray();
for (int i = 0; i < ary2.length; i++) {
System.out.println(ary2[i]);
}
REXP x3 = re.eval("var.test(c_group1, c_group2)");
System.out.println(x3);
re.end();
}
}
参考
http://kusuri-jouhou.com/statistics/fkentei.html
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/65.html
http://monge.tec.fukuoka-u.ac.jp/r_analysis/test_t03.html
登録:
投稿 (Atom)

