library(xtable) x<- matrix(1:24,4,6) mytable<- xtable(x) print(mytable)
RjpWiki を参照
qr(X)$rank # 舟尾 p.61
渋谷 柴田 p.37
norm if(p=="inf") return (max(abs(x))) sum(abs(x)^p)^(1/p) }
これは sqrt(t(x) %*% x) に等しい。
例えば,以下のようにする場合
#x<- read.csv("anborgia.nr.csv",header=F,row.names=1);x # colnames(x)<- c("line");x
以下のように実行しても構わない。ただし元データが2列で,その一列目を行名と指定している。 その関係で,col.namesの引数は二ついる。
x<- read.csv("anborgia.nr.csv", header=F,row.names=1,col.names=c("","line1"));x
まず
> jena > jena freq 1 15 2 10 3 21 4 20 5 30 ...
> kanzel > kanzel freq 1 19 2 38 3 4 4 23 5 29 ...
table( factor(cut(buntyo$V1, breaks=c(0, 5, 10, 15, 25, 35, 40))) )
などとする. ここでは 0 より大きく 5 以下,5 より大きく10以下,などを区間としている.
としてデータを読み込み,これに頻度カテゴリを表す列を追加する。
tb jena$fac > jena freq fac 1 15 (11,16] 2 10 (6,11] 3 21 (16,22] 4 20 (16,22] 5 30 (22,31] ... > kanzel freq fac 1 19 (16,22] 2 38 (31,92] 3 4 (0,6] 4 23 (22,31] 5 29 (22,31]
ここで table(kanzel$jena)とすれば,各カテゴリの頻度が求める。
さて,ここでこの二つの頻度について適合度の検定を行なうには,
test chisq.test(test)
とする。
legend(x軸, y軸, ラベルの指定, fill= 色の指定, pch = シンボル | lty = 線種)
labs cols mypch legend(7, 10, labs, pch = mypch, col=cols)
x,y 軸は locator(1)として調べれば良い。あるいは引数として与える。
[[John Fox:http//socserv.mcmaster.ca/jfox/]], p.138
legend(locator(1), c('high', 'low'), lty = c(1,3), lwd =c(3,3), pch = c(19,1))
[[Wood Generalized Additive Models:]http//www.amazon.co.jp/Generalized-Additive-Models-Introduction-Statistical/dp/1584884746/], p.36
legend("topright", legend = levels(water$location), pch = c(1,2), bty = "n")
S-Plus であれば,marks 。
例:/home/ishida/research/corpus/file.old/bak/file/writers19.R を参照 ここで unique は重複を取る。
legend(-4.3, 4.5, unique(writers.name), fill=(as.integer(unique(writers.name))), text.width=1)
> x = matrix(1:16, 4,4) > x [,1] [,2] [,3] [,4] [1,] 1 5 9 13 [2,] 2 6 10 14 [3,] 3 7 11 15 [4,] 4 8 12 16 > y= 1:4 # sweep されるベクトル > sweep(x,1,y) # x の各列から y を引き去る(既定動作) [,1] [,2] [,3] [,4] [1,] 0 4 8 12 [2,] 0 4 8 12 [3,] 0 4 8 12 [4,] 0 4 8 12 > sweep(x,2,y) # x の各行から y を引き去る(既定動作) [,1] [,2] [,3] [,4] [1,] 0 3 6 9 [2,] 1 4 7 10 [3,] 2 5 8 11 [4,] 3 6 9 12 > sweep(x,1,y, "*") # x の各列に y を掛ける [,1] [,2] [,3] [,4] [1,] 1 5 9 13 [2,] 4 12 20 28 [3,] 9 21 33 45 [4,] 16 32 48 64
例えば
writers.lda table(writers$writer,predict(writers.lda)$class)
と解析した結果と,und を取り除いた結果
writers.lda.und table(writers$writer, predict(writers.lda.und)$class)
を比較する。なお以下はエラーとなる
#writers.lda.step #anova(writers.lda , writers.lda.und)
例えば
writers.lda #table(writers$writer,writers.lda$class) エラー table(writers$writer,predict(writers.lda)$class)
#cross validation writers.lda.cv CV=T) table(writers$writer,writers.lda.cv$class) #table(writers$writer,predict(writers.lda.cv)$class) エラー
plot(x ~ y) kaiseki.lm(x ~ y)
abline(kaiseki.lm[1,1], kaiseki.lm[3,1])
として切片,傾きを指定しても,また
abline(kaiseli.lm)
とするのも可能。
Crawely p.163 分散分析で,平均値に差があるかを確認し,さらに,要因レベルの効果差を見るには,
summary.lm(aov(ozone ~ garden))
などを実行する。
Dalgaard p.58
Crawely p.197
Crawley S-PLUS p.167
Crawley Statistics Using R p.174, Crawley S-PLUS p.287 treatment.control では,各要因の各レベルの効果を, その要因の切片(基軸)であるレベルと比較して判断する。 したがって,基軸以外のレベルの相互の有意差は表示されていない。
基軸以外のレベル相互の比較 要因Aと他要因 BCD全体との差,BCD 内の差を一度に検定 2006 03 20
John Fox, p.142 - 143.
他にここ
始めに ここを参照 こことここも またここも meyer p.132 の例より
lessWords moreWords USA 57 2 Phil 71 12 NZ 66 16 GB 23 0
meyerP.132 dimnames(meyerP.132) model0 summary(model0) # anova(model0) # これは用意されていない model1 summary(model1) model1$lrt
#P値は 1- pchisq(model1$lrt, model1$df) 1- pchisq(model1$pearson, model1$df)
R multiv パッケージのコレスポンデンス分析で出力される 行座標 $rproj, 列座標 $cproj はデフォルトでは,求められた x,y に単相関係数を乗じている。(言い方を変えると,固有値を平方根を乗じている) 参照 高橋信「Excelによるコレスポンデンス分析」, p.127
/home/research/statistics/correspondence.R を参照
#高橋信「Excelによるコレスポンデンス分析」 Z 13,8,15,16, 18,11,14,8), ncol=4, byrow=T)
#行ラベルとして使用する第1列をrowvarに代入 Z.rowvar<- c("M","H","C")
#rowvarの値を行ラベルとして読み込む Z.colvar rownames(Z) colnames(Z) > Z A B C D M 10 19 13 5 H 13 8 15 16 C 18 11 14 8
Z.diagC #> Z.diagC # [,1] [,2] [,3] [,4] #[1,] 41 0 0 0 #[2,] 0 38 0 0 #[3,] 0 0 42 0 #[4,] 0 0 0 29 #> Z.diagR #> Z.diagR # [,1] [,2] [,3] #[1,] 47 0 0 #[2,] 0 52 0 #[3,] 0 0 51 #> Z.diagR.sqrt # [,1] [,2] [,3] #[1,] 6.855655 0.000000 0.000000 #[2,] 0.000000 7.211103 0.000000 #[3,] 0.000000 0.000000 7.141428 #>
Z.solve Z.eigen #$values #[1] 1.00000000 0.07629421 0.01828369
#$vectors # [,1] [,2] [,3] #[1,] -0.5597619 0.74374060 0.3653992 #[2,] -0.5887841 -0.66725782 0.4561802 #[3,] -0.5830952 -0.04021102 -0.8114081
#> # [,1] [,2] [,3] # [1,] 0.3579767 0.2947642 0.3186919 # [2,] 0.2947642 0.3844402 0.3385965 # [3,] 0.3186919 0.3385965 0.3521610
# 固有値 1 と,対応する固有ベクトルは仮定 # 平均0,分散1に反する
# p.121 # x, y が求まる,以下はxのみ Z.kai.X [,1] [,2] [,3] [1,] -1 1.32867325 -0.6527762 [2,] -1 -1.13328105 -0.7747835 [3,] -1 -0.06896133 1.3915534
# 以下は Y のみ Z.kai.Y # [,1] # [1,] -0.23728726 # [2,] 1.46910930 # [3,] -0.05964337 # [4,] -1.50318462 Z.kai.Y # [,1] # [1,] 1.5238380 # [2,] -0.6410599 # [3,] -0.1102451 # [4,] -1.1547168
# 固有値の平方根 は単相関係数 sqrt(Z.eigen$values) # [1] 1.0000000 0.2762141 0.1352172
# p.127 Z.kai[,2] * sqrt(Z.eigen$values)[2] # [1] 0.36699824 -0.31302816 -0.01904809 Z.kai[,3] * sqrt(Z.eigen$values)[3] # [1] -0.08826657 -0.10476405 0.18816195 #(solve(Z.diagR.sqrt, sqrt(150) * Z.eigen$vectors)) %o% sqrt(Z.eigen$values)
> library(multiv) > Z.results> Z.results $evals [1] 0.07629421 0.01828369
$rproj Factor1 Factor2 [1,] 0.36699824 -0.08826657 [2,] -0.31302816 -0.10476405 [3,] -0.01904809 0.18816195
$cproj Factor1 Factor2 [1,] -0.06554208 0.20604911 [2,] 0.40578865 -0.08668233 [3,] -0.01647434 -0.01490704 [4,] -0.41520073 -0.15613757
$rcntr Factor1 Factor2 [1,] 0.553150080 0.1335166 [2,] 0.445232993 0.2081003 [3,] 0.001616926 0.6583831
$ccntr
dev.copy2eps(file="log.eps")
Dunning の式は,Oakes p.172 にまとめられている。必要となるのは a,b,c,d,と 当該コーパスにおける総語数 N (結局 a+b+c+d に等しい)。
a = あるキーワードにたいして設定したスパンの内部に,その共起語が現れた回数 b = キーワードにたいして,その共起語以外の語がスパンに現れた回数 c = キーワード以外の語にたいして,その共起語がスパンに現れた回数 d = キーワード以外の語にたいして,その共起語以外の語が現れた回数
始めに ここを参照 こことここも またここも &aname: Invalid ID string: social.mobility2; データは東大「人文社会科学の統計学」 p.277
social.mobility2<- array(c( 517, 244, 250, 152, 351, 328, 7, 13, 140, 441, 159, 272, 130, 227, 351, 24, 21, 268 ), dim = c(3,3, 2), dimnames = list( father = c("white","blue","agri" ), # = c(1) child = c( "white","blue","agri"), # = c(2) year= c("1985", "1975") # = c(3) ) ) class(social.mobility2 )<- "table" ftable(social.mobility2)
library(MASS)
# 以下は,3次の効果を外した同時独立モデルだが,ここに有意差は無い。すなわち year の効果は無い。
# 3次の効果を含めた飽和モデルは,自由度ゼロなので必ず適合する。p. 271
social.mobility2.loglm3<- loglm(~father + child + year + father:child + father:year + child:year, data=social.mobility2) anova(social.mobility2.loglm3, test="Chisq")
同じことだが,以下でもよい
social.mobility2.loglm3<- loglm(social.mobility2, list(c(1), c(2), c(1,2), c(2,3), c(1,3)))
1 -pchisq(kekka$lrt,kekka$df)# 1 -pchisq(kekka$pearson,kekka$df)#
# 東大「人文社会の統計学」 p.276
# log m = u... + ui.. + u.j. + u..k + uij. + ui.k + u.jk (9.33)
# ここで uij. ui.k u.jk がそれぞれ,father:child, father:year, child:year
# を表しているが
# uijk (p.276下から12行目), すなわち father:child:year
# は含まれていないモデル
# なお u... は全体平均 grandmean は暗黙のうちに含まれる
# ui.. 行平均 u.j. 列平均 u..k 軸平均は それぞれ要因 father, child, year
# を指定して含まれる
S-Plus での混合モデルの構築 Crawley p.673 -
ちなみに
# p.678 lmedata3.model2 で。 random=~1|Genotype
は Genotype の intercepts をランダム要因と見なす指定, p.678
# 豊田秀樹 違いを見抜く統計学 p.120, p.127, toyoda.Bunsan.R を参照
p120<- data.frame(type = rep(c("sea","mount"), each = 8), develop = rep(rep(c("old","new"), c(4,4)),2) , region = rep(c("izu","kuju","karui","yatsu"), each=4), price = c(18.0, 15.0, 12.0, 20.7, 7.6, 12.3, 15.0, 15.2, 11.7, 11.6, 14.5, 15.4, 7.8, 7.5, 4.2, 6.4))
#p120<- data.frame(type = rep(c("sea","mount"), each = 8), develop = rep(rep(c("old","new"), c(4,4)),2) , price = c(18.0, 15.0, 12.0, 20.7, 7.6, 12.3, 15.0, 15.2, 11.7, 11.6, 14.5, 15.4, 7.8, 7.5, 4.2, 6.4))
#> p120 # type develop region price #1 sea old izu 18.0 #2 sea old izu 15.0 #3 sea old izu 12.0 #4 sea old izu 20.7 #5 sea new kuju 7.6 #6 sea new kuju 12.3 #7 sea new kuju 15.0 #8 sea new kuju 15.2 #9 mount old karui 11.7 #10 mount old karui 11.6 #11 mount old karui 14.5 #12 mount old karui 15.4 #13 mount new yatsu 7.8 #14 mount new yatsu 7.5 #15 mount new yatsu 4.2 #16 mount new yatsu 6.4
attach(p120)
交互作用を含んだモデル,交互作用棄却後のプーリングモデル
p120.aov<- aov(price ~ type * develop) summary(p120.aov)
p.123と同じ出力# 豊田秀樹 違いを見抜く統計学 p.120, p.127 type develop の結果だけ見れば,プーリングした結果と同じ(p.123下)
Df Sum Sq Mean Sq F value Pr(>F) type 1 84.181 84.181 10.1788 0.007769 ** develop 1 115.026 115.026 13.9084 0.002877 ** type:develop 1 8.556 8.556 1.0345 0.329170 Residuals 12 99.242 8.270 summary.lm(p.120.aov) > 84.181 / 8.270 # AB の平均平方ではなく,誤差の平均平方で割っている, p.108 [1] 10.17908 > 115.026 / 8.270 [1] 13.90883 > 1 - pf(10.1788, 1, 12) [1] 0.007769413
交互作用を変量としたモデル,反復測定
p121.aov = aov(price ~ type + develop + Error(type/develop)) summary(p121.aov)
p.121 と同じ出力 母数因子だが,一つの標本から繰り返し測定した すなわち,交互作用は変量モデル
Error: type:develop Df Sum Sq Mean Sq F value Pr(>F) type 1 84.181 84.181 9.8392 0.1965 develop 1 115.026 115.026 13.4444 0.1695 Residuals 1 8.556 8.556 Error: Within Df Sum Sq Mean Sq F value Pr(>F) Residuals 12 99.242 8.270
ネストを仮定したモデル
p127.aov summary(p127.aov) p.127 と同じ出力
すなわち,地域はタイプにネストしている
Error: region:type Df Sum Sq Mean Sq F value Pr(>F) type 1 84.181 84.181 1.3624 0.3635 Residuals 2 123.581 61.791 Error: Within Df Sum Sq Mean Sq F value Pr(>F) Residuals 12 99.242 8.270
ここで
> 61.791 / 8.270 > 1 - pf(7.471705 , 2, 12) [1] 0.007804986
三段のネストを仮定したモデル これは上の2段ネストと同じ結果になっている p.157 とは異なり,残差が二つに分離されていないx
p.157.aov > summary( p.157.aov )
Error: region:type Df Sum Sq Mean Sq F value Pr(>F) type 1 84.181 84.181 1.3624 0.3635 Residuals 2 123.581 61.791
Error: Within Df Sum Sq Mean Sq F value Pr(>F) Residuals 12 99.242 8.270
また crawley, S-Plus, p.213下を参照。
p120.aov # = aov(price ~ type/develop) # = aov(price ~ type/develop + Error( type/develop)) summary(p120.aov) # # p.127 と同じ出力 # # Df Sum Sq Mean Sq F value Pr(>F) #type 1 84.181 84.181 10.1788 0.007769 ** #type:region 2 123.581 61.791 7.4715 0.007806 ** #Residuals 12 99.242 8.270
#anova(p120.aov) #Error
# # Df Sum Sq Mean Sq F value Pr(>F) #type 1 84.181 84.181 10.1788 0.007769 ** #develop 1 115.026 115.026 13.9084 0.002877 ** #type:develop 1 8.556 8.556 1.0345 0.329170 #Residuals 12 99.242 8.270 #summary.lm(p120.aov) #> 84.181 / 8.270 # AB の平均平方ではなく,誤差の平均平方で割っている, p.108 #[1] 10.17908 #> 115.026 / 8.270 #[1] 13.90883 #> 1 - pf(10.1788, 1, 12) #[1] 0.007769413
# エラ−モデル 1 p120.aov summary(p120.aov) # # p.121 と同じ出力 # #Error: type:develop # Df Sum Sq Mean Sq F value Pr(>F) #type 1 84.181 84.181 9.8392 0.1965 #develop 1 115.026 115.026 13.4444 0.1695 #Residuals 1 8.556 8.556
#Error: Within # Df Sum Sq Mean Sq F value Pr(>F) #Residuals 12 99.242 8.270
# エラ−モデル 2 p120.aov summary(p120.aov) # # p.127 と同じ出力 # #Error: region:type # Df Sum Sq Mean Sq F value Pr(>F) #type 1 84.181 84.181 1.3624 0.3635 #Residuals 2 123.581 61.791
#Error: Within # Df Sum Sq Mean Sq F value Pr(>F) #Residuals 12 99.242 8.270
# ネストモデル p120.aov summary(p120.aov) # # p.127と同じ出力 # # Df Sum Sq Mean Sq F value Pr(>F) #type 1 84.181 84.181 10.1788 0.007769 ** #type:region 2 123.581 61.791 7.4715 0.007806 ** #Residuals 12 99.242 8.270
#anova(p120.aov) #Error
logLik, (crawley, S-Plus, p.121)
test > test
Error: factory Df Sum Sq Mean Sq F value Pr(>F) Residuals 6 260.70 43.45
Error: Within Df Sum Sq Mean Sq F value Pr(>F) treats 4 8.324 2.081 0.4637 0.7617 Residuals 24 107.704 4.488
以上のリストで,Error の F value にアクセスするには
summary(aov(rate ~ treats + Error(factory)))[[2]][[1]]$"F value"[1]
と実行する。
Crawely.S.plus.R を参照
> d for(j in 1:1000){ treats for(i in 1:7) treats treats d[j] }
par(ask=TRUE)
difference in the slop は 交互作用の項を見る。
Crawley S-PLUS p.295
covariate については p.293
Crawley S-PLUS p.216, p.341
w が sex カテゴリーの変数,x が連続量の変数の場合
y ~ w * x
は,w の二つのカテゴリそれぞれに回帰式(intecept と slope) regression slope を推定しろという命令となる。
John Fox p.126
式に改行やスペースが挟間っていると,そこで処理が止まってしまう。
例えば plot を含めて,式を一括評価する時
par(ask=T)
と設定した後だと,yes か no の答えを得ることができないので,そこで止まってします。
Crawley S-PLUS p.417のデータならば
> fishery xv yv 1 13.9885004 4.56836585 2 89.7028342 0.29710071 3 9.3151971 3.90699292 4 9.2132163 4.38109971 5 34.7017719 1.85936367
のようなデータフレームならば
fishery[order(fishery$xv),]
とすれば,xv の昇順にデータが整列する。
a b
内積は
t(a) %*% b
としても
sum(a * b)
としても良い。
ノルムは
vecnorm(a), vecnorm(b) で求めるか
mynorm if(p=="inf") return(max(abs(x))) sum(abs(x)^p)^(1/p)) }
で求める。
research/tex/p2005/2005/dunne.R より
text(E.normalized.B.dunne2[1, E.normalized.B.dunne2[2,] > 0.0], E.normalized.B.dunne2[2, E.normalized.B.dunne2[2,] > 0.0], adj=c(1.5,-.5), labels=( colnames( E.normalized.B.dunne2[, E.normalized.B.dunne2[2,]
adj=c(X,Y) X を正にすると,点は左に,Yを正にすると点は下に移動
Crawley S-PLUS p.483
例えば 成功率 0.6, 成功までの試行数が 5 として(すなわち6回目に成功), 100回の試行を行なう。
count table(count)
0 1 2 3 4 5 6 7 8 9 8 13 20 19 18 7 9 3 2 1
この場合 失敗無しで5回の成功が出た試行が 8 回 失敗 1 で5回の成功が出た試行が 13 回 あるのを意味する。
# 2006 07 24 追加
工学のためのデータサイエンス, p.49 - p.50
R の関数 _nbinom の引数 size, prob は
平均 mean が 'size * (1 - prob)/prob' を満たし,また 確率 prob が 'scale/(1 + scale)' を満たすように取られる
d <- p(0, 1612), rep(1,164), rep(2,71), rep(3,47), rep(4,28), rep(5,17), rep(6,12), rep(7,12), rep(8,5), rep(9,7), rep(10,6), rep(11,3), rep(12,3), rep(13, 13)) mean(d) # = 0.6005 var(d) # = 3.262531
prob = 0.1155 * (1 - 0.1553) / 0.1553 # = 0.6282218 = size *(1 - prob)/prob scale = 0.1838523 / ( 1 + 0.1838523) # = 0.1553 = scale/ (scale + 0.1553)
S-Plus では t 値が,R では z 値がデフォルト Crawley S-PLUS p.534
Crawley S-PLUS S-plus.R, p.534
また S-Plus では,lm の出力は Pr(|t|) を出力するが,glm ではデフォルトでは出力されない。
rgl.bbox(color="#999999", emission="#FFA500", specular="#FFF0F5", shinines=5,alpha=0.8)
color="#999999" は座標の数値ラベル色 emission="#FFA500" はボックスの壁の色 specular="#FFF0F5" は明るさ,数値が大きいほど明るい shinines=5 は反射の具合
x y plot(x,y,type="l")
同じことだが
curve((x^2 - 6*x + 10), 0,6)
例えば2項分布で,0.00001 で成功する賭けを 100000 回行なった時, ちょうど20回成功する確率は
pbinom(20, 100000, .0001) - pbinom(19, 100000, .0001) [1] 0.001865335
これをポアソン分布で近似するには
ppois(20, 10) - ppois(19, 10) [1] 0.001866081
John Fox p.63 - 64
> search() [1] ".GlobalEnv" "package:car" "package:methods" [4] "package:stats" "package:graphics" "package:grDevices" [7] "package:utils" "package:datasets" "Autoloads" 10] "package:base" > cooperation エラー:オブジェクト "cooperation" は存在しません > attach(Guyer) # Guyerデータには変数 operationがある > objects() [1] "Guyer" "hump.data" "hump.model" "last.warning" > cooperation [1] 49 64 37 52 68 54 61 79 64 29 27 58 52 41 30 40 39 44 34 44 > cooperation > objects()新たに変数 cooperation が作成されている [1] "Guyer" "cooperation" "hump.data" "hump.model" > rm(cooperation)# 新たに作成された cooperation を消し > cooperation[1] Guyer変数のcooperation[1]を変更したつもりでも > objects()実際にはコピーができている [1] "Guyer" "cooperation" "hump.data" "hump.model" > rm(cooperation) > objects() [1] "Guyer" "hump.data" "hump.model" "last.warning"
始めに
png(file="gazo.png") #として device を平き polt(y ~ x) # として画像を作成し dev.off() # として device を閉じる。
ここで始めて保存される。
標準誤差とは,平均値の推定値の範囲 標準偏差とは,データが平均を中心にどれだけばらついているかの目安
Boxplot の箱は 75 - 25 %タイルを示しているが,あるデータのこの範囲が,他のデータの平均値と重なっていない場合,二つのmedian は有意に異なる。Tukey による
Crawley Statistics Using R p.167
関数内では,付置の式以外は表示される。 特に print 文では注意が必要である。 これを防ぐため,invisibleを使う。
Crawley S-PLUS p.35 渋谷,柴田 p.34
キーワードにカーソルを合わせ,C-c C-v で表示させる。 ?キーワードでは表示されない