0.計算
0-1.
(x=sin(654))#代入と結果の表示を一回でする。(xにsin(654)を代入し次行でxを表示)
x=c(pi,sin(5),99999,log10(pi),0.0001);(y=x^300)#代入と結果の表示を一回でする。
(x1=sin(65));(y1=cos(x1));(z1=tan(y1)) #;で区切ると一行に複数の処理を表記できる。
#以下の結果が表示される
。
#[1] 0.8268287 (x1の結果)
#[1] 0.6772126(y1の結果)
#[1] 0.8040615(z1の結果)
1000%%33#あまり
1000%/%33#切り捨て
0-2.
a <- sin(9999)
round(a,100)#四捨五入,100は小数点以下の桁数
round(pi,100)#四捨五入,100は小数点以下の桁数
trunc(pi)#小数点以下切り捨て
trunc(a)#小数点以下切り捨て
floor(pi)#引数よりも大きくない最大の整数
floor(a)#引数よりも大きくない最大の整数
ceiling(a)#引数よりも小さくない最小の整数(=切り上げ)
ceiling(pi)#引数よりも小さくない最小の整数(=切り上げ)
abs(pi)#整数の絶対値を求める関数
abs(a)#整数の絶対値を求める関数
log(pi)#loge
log2(pi)#log2
log10(pi)#log10
log(a)#loge
log2(a)#log2
log10(a)#log10
x<- 0.4549464646
asin(x) #xの逆正弦の主値を計算する。実引数が範囲[-1, +1]に存在しない場合、定義域エラーが発生する
acos(x)
atan(x)
sinh(x)
cosh(x)
tanh(x)
exp(x)
gamma(x)
y<- 0.9999999999999999999999999
asin(y)
acos(y)
atan(y)
sinh(y)
cosh(y)
tanh(y)
exp(y)
gamma(y)
x=c(1,9999,500,45,-5,pi,-0.555,-15);max(x);min(x);cummax(x);cummin(x);cumsum(x);cumprod(x);range(x);mean(x);var(x);sd(x)
0-3.ベクトル・行列の演算
cf.赤間
0-3-1.
(x= c(500,5,50))#列ベクトルの作成
(t(x))#転置ベクトル
y=c(100,1,10);(x+y);(x-y);(x*y);(x%*%y)#最後のはinner product
0-3-2.
(x= c(2,9,15,7,55,3,1,5,11,5,5,5,1,500))#列ベクトルの作成
rev(x)#反転させる
x[5]#要素の取り出し
x
5#要素の取り出し
(y=x[c(3:7)])#新しいベクトルの作成
(z1=x[-c(3:7)])#新しいベクトルの作成
(z2=x[x>9])#新しいベクトルの作成
(z3= rep(z2,500))#z2を500回繰り返すベクトルの作成
0-3-3.
x = c(2,9,15,7,55,3,1,5,11,5,5,5,1,500,5,10)#列ベクトルの作成
(y = matrix(x,4,4,byrow=T))#4*4の行列
(z = matrix(x,4,4))#4*4の行列
(a = y+z);(b = y-z);(c = y%*%z)#演算
(d1 = solve(y));(d2 = solve(z))#逆行列
(d3 =d1%*%y);(d4 =d2%*%z)#誤差は生じる
(eigen(y));(eigen(z))#固有値と固有値ベクトルをそれぞれ表示する
(A = matrix(c(4,1,2,3),2,2,byrow=T))
eigen(A);(B1 = A*eigen(A)$vectors[,1]);(C1 = eigen(A)$values[1]*matrix(eigen(A)$vectors[,1],2,1));(B2 <- eigen(A)$vectors[,2]);(C2 <- eigen(A)$values[2]*matrix(eigen(A)$vectors[,2],2,1))
0-4. 0-3の実施結果
0-4-1.行列
y = matrix(x,4,4,byrow=T))
[1,] 2 9 15 7
[2,] 55 3 1 5
[3,] 11 5 5 5
[4,] 1 500 5 10
(y = matrix(x,4,4))
[1,] 2 55 11 1
[2,] 9 3 5 500
[3,] 15 1 5 5
[4,] 7 5 5 10
0-4-2.固有値
Aの固有値λ1=5、λ2=2
prod(1:13)/prod(1:10)#13P3
prod(1:13)/(prod(1:3)*prod(1:10))#13C3
1.関数を設定しグラフを書く
f1 <- function(x){
y <- x^5 + 0.0001*x + 5000
return(y)
}
curve(f1,-99,99)
#引数が複数ある場合
f2 <- function(x,a,b,c){
y <- a*x^5 + b*x + c
return(y)
}
curve(f2(x,-10,50,3),-99,99)
#解を求めるとき
uniroot(f1,c(1,2))
#両端で符号が異なっている必要がある
。
uniroot(f1,c(-500,3000))
str(uniroot(f1,c(-500,3000)),dig=5)#桁数を制限する。最大22まで
str(uniroot(f1,c(-500,3000)),tol=1e-1000,dig=5)#正確性を向上
#引数が複数あるf2のケース
uniroot(f2,c(1,2),a=300,b=5,c=0.1)
#両端で符号が異なっている必要がある
。
uniroot(f2,c(-100,200),a=300,b=5,c=0.1)
str(uniroot(f2,c(-100,200),a=300,b=5,c=0.1),dig=5)#桁数を制限する。最大22まで
str(uniroot(f2,c(-100,200),a=300,b=5,c=0.1),tol=1e-1000,dig=5)#正確性を向上
#多変数関数
# z= 500{(y-x^3)}^3+(50-x)^2
f3 <- function(x){
x <- x[1]
y <- y[1]
z <- 500*(y-x^3)^3 + (50-x)^2
return(z)
}
optim(c(0,0),f3)
optim(c(0,0),f3,method= "BFGS")
2.基本的な統計量の計算
f3 <- function(x){
n <- length(x)
m1 <- mean(x)
m2 <- var(x)*(n-1)
sd <- sqrt(m2)#標準偏差
#3次と4次のモーメント
m3 <- sum((x-m1)^3)/n
m4 <- sum((x-m1)^4)/n
#歪度
sk <- m3/sd^3
kr <- m4/sd^4 -3
res <- c(m1,m2,sk,kr)
names(res) <- c("mean","var","skew","kurt")
return(res)
}
#使い方
#使い方
x1 <- rnorm(9)#標準正規乱数
x2 <- rnorm(99)#標準正規乱数
x3 <- rnorm(999)#標準正規乱数
x4 <- rnorm(9999)#標準正規乱数
x5 <- rnorm(99999)#標準正規乱数
x6 <- rnorm(999999)#標準正規乱数
f3(x1)
f3(x2)
f3(x3)
f3(x4)
f3(x5)
f3(x6)
#t分布
y1 <- rt(10,df=3)
y2 <- rt(10,df=33)
y3 <- rt(10,df=333)
y4 <- rt(10000,df=3)
y5 <- rt(10000,df=33)
y6 <- rt(10000,df=333)
f3(y1)
f3(y2)
f3(y3)
f3(y4)
f3(y5)
f3(y6)
#カイ
^2分布
z1 <- rchisq(10,df=3)
z2 <- rchisq(10,df=33)
z3 <- rchisq(10,df=333)
z4 <- rchisq(10000,df=3)
z5 <- rchisq(10000,df=33)
z6 <- rchisq(10000,df=333)
f3(z1)
f3(z2)
f3(z3)
f3(z4)
f3(z5)
f3(z6)
#グラフの比較
x1 <- rnorm(9)#標準正規乱数
x2 <- rnorm(99)#標準正規乱数
x3 <- rnorm(999)#標準正規乱数
x4 <- rnorm(9999)#標準正規乱数
par(mfrow=c(2,2));plot(x1);plot(x2);plot(x3);plot(x4)
#グラフの比較
x1 <- rt(10,df=3)
x2 <- rt(100,df=3)
x3 <- rt(1000,df=3)
x4 <- rt(10000,df=3)
par(mfrow=c(2,2));plot(x1);plot(x2);plot(x3);plot(x4)
最終更新:2010年08月21日 12:38