狠狠撸

狠狠撸Share a Scribd company logo
5
Most read
6
Most read
7
Most read
搁での迟谤测関数によるエラー処理
作成: 2015年3月1日(日)
~ 異常終了の防止方法 ~
こんなことありませんか?
昔々あるところに、複数のデータセットに時間
のかかる同じ処理をしなければならないセンサス
くんがいました。賢いセンサスくんは、一部の
データを使って処理コードを作り、さらにfor
ループでデータセットを入れ替える処理を加えて
自動化し、帰宅間際にPCに投げました。
センサスくんが帰宅しても、PCが夜なべで働
き、翌朝出勤時までに仕事が終わっているはずで
したが、その翌朝???
あ~っ、途中でabort
(異常終了)してる???
何が起きるのか確認してみましょう
これは正常終了するコードの例です
rm(list=ls(all=TRUE)) # ワークスペースのクリア
data(iris) # 組み込みのあやめデータ呼出し
aa <- as.matrix(iris[,1:4]) # 量的変数だけ行列属性に変換してaaへ
# 品種を示す第5変数の内容別にデータフレームを作成
dat1 <- aa[which(iris[,5]=="setosa"),]
dat2 <- aa[which(iris[,5]=="versicolor"),]
dat3 <- aa[which(iris[,5]=="virginica"),]
listD <- ls(pattern="d") # ワークスペース内のdで始まる変数名を取得
listD # 中身表示
# listDの数だけループをさせて、dat1~3の共分散行列を表示させる
for (i in 1: length(listD)) {
x <- get(listD[i])
cv <- cov(x) # データの共分散行列を算出
print(solve(cv)) # 共分散行列の逆行列を画面表示
}
逆行列計算がabortするとき
先の例では、共分散行列は全て正則なので、
逆行列の計算は正常終了します。
続けて、以下のコードにより、dat2の逆行
列が計算できなくなるよう、特定の行の要素
だけ有効桁数を超える小さな数に変更してみ
ます。
cv <- cov(dat2)
cv[1,] <- cv[1,] / 10**16
solve(cv) # ここでエラーが起きる
> cv <- cov(dat2)
> cv[1,] <- cv[1,] / 10**16
> solve(cv)# エラーが起きる。
以下にエラー solve.default(cv) :
システムは数値的に特異です:条件数の逆数 = 1.4947e-17
追
加
コ
ー
ド
コ
ン
ソ
ー
ル
出
力
forループ内
でこれが起き
ると、その時
点で処理が終
了します。
複数データ
をforで回し
ていれば、後
ろのデータは
未処理のまま。
エラーが起きても後のデータを処理
して欲しいのですが???
そんなあなたにtry関数!
cv <- cov(dat1)
cv[1,] <- cv[1,] / 10**16
XX <- try(solve(cv)) # ここでtry関数を使う
XX # XXにエラーメッセージが入ることに注意!
> cv <- cov(dat1)
> cv[1,] <- cv[1,] / 10**16
> XX <- try(solve(cv))# ここでtry関数を使う
Error in solve.default(cv) :
システムは数値的に特異です: 条件数の逆数 = 1.4947e-17
> XX# XXにエラーメッセージが入ることに注意!
[1] "Error in solve.default(cv) : n システムは数値的に特異です: 条件数の逆数 = 1.4947e-17 n"
attr(,"class")
[1] "try-error"
attr(,"condition")
<simpleError in solve.default(cv): システムは数値的に特異です: 条件数の逆数 = 1.4947e-17
>
追
加
コ
ー
ド
コ
ン
ソ
ー
ル
出
力
エラーが起
きてもルー
プの途中で
異常終了は
せず、後ろ
の処理が続
行されます
実際に試してみましょう
結果の出力は次のスライドへ
# 数値をいじるために一旦共分散行列を変数cv1に格納する
cv1 <- array(NA, c(4,4,3))
for (i in 1: length(listD)) {
x <- get(listD[i])
cv1[,,i] <- cov(x) # 配列cv1に保存
}
cv1[1,,2] <- cv[1,,2] / 10**16 # 二つ目の共分散行列の要素1つを小さく
# try関数なしの場合
for (i in 1: length(listD)) {
print(solve(cv1[,,i])) # 共分散行列の逆行列を画面表示
}
# try関数を使う場合
for (i in 1: length(listD)) {
print(try(solve(cv1[,,i]))) # 共分散行列の逆行列を画面表示
}
追
加
コ
ー
ド
結果のコンソール出力
> # try関数なしの場合
> for (i in 1: length(listD)) {
+ print(solve(cv1[,,i]))# 共分散行列の逆行列を画面
表示
+ }
[,1] [,2] [,3] [,4]
[1,] 18.943439 -12.404826 -4.500207 -4.776127
[2,] -12.404826 15.570540 1.111079 -2.104098
[3,] -4.500207 1.111079 38.776204 -17.935035
[4,] -4.776127 -2.104098 -17.935035 106.045906
以下にエラー solve.default(cv1[, , i]) :
システムは数値的に特異です: 条件数の逆数 = 0
>
> # try関数を使う場合
> for (i in 1: length(listD)) {
+ print(try(solve(cv1[,,i])))# 共分散行列の逆行列を
画面表示
+ }
[,1] [,2] [,3] [,4]
[1,] 18.943439 -12.404826 -4.500207 -4.776127
[2,] -12.404826 15.570540 1.111079 -2.104098
[3,] -4.500207 1.111079 38.776204 -17.935035
[4,] -4.776127 -2.104098 -17.935035 106.045906
Error in solve.default(cv1[, , i]) :
システムは数値的に特異です: 条件数の逆数 = 0
[1] "Error in solve.default(cv1[, , i]) : n システムは数
値的に特異です: 条件数の逆数 = 0 n"
attr(,"class")
[1] "try-error"
attr(,"condition")
<simpleError in solve.default(cv1[, , i]): システムは数
値的に特異です: 条件数の逆数 = 0 >
[,1] [,2] [,3] [,4]
[1,] 10.533867 -3.479726 -9.960146 1.788152
[2,] -3.479726 15.875442 1.102689 -8.472851
[3,] -9.960146 1.102689 13.405821 -2.890918
[4,] 1.788152 -8.472851 -2.890918 19.314050
>
try関数で問題の起きる処
理をくるむと、i=2でエ
ラーが起きても、i=3での
逆行列が計算されます
おわり
8
Ad

Recommended

骋贰贰(一般化推定方程式)の理论
骋贰贰(一般化推定方程式)の理论
Koichiro Gibo
?
笔搁惭尝轮読#2
笔搁惭尝轮読#2
matsuolab
?
厂迟补苍の便利な事后処理関数
厂迟补苍の便利な事后処理関数
daiki hojo
?
変分ベイズ法の説明
変分ベイズ法の説明
Haruka Ozaki
?
搁で因子分析 商用ソフトで実行できない因子分析のあれこれ
搁で因子分析 商用ソフトで実行できない因子分析のあれこれ
Hiroshi Shimizu
?
ノンパラベイズ入门の入门
ノンパラベイズ入门の入门
Shuyo Nakatani
?
阶层ベイズと奥础滨颁
阶层ベイズと奥础滨颁
Hiroshi Shimizu
?
笔搁惭尝轮読#1
笔搁惭尝轮読#1
matsuolab
?
ベイズ统计学の概论的绍介
ベイズ统计学の概论的绍介
Naoki Hayashi
?
『バックドア基準の入门』@统数研研究集会
『バックドア基準の入门』@统数研研究集会
takehikoihayashi
?
変分推论法(変分ベイズ法)(笔搁惭尝第10章)
変分推论法(変分ベイズ法)(笔搁惭尝第10章)
Takao Yamanaka
?
惭颁惭颁法
惭颁惭颁法
MatsuiRyo
?
状態空間モデルの考え方?使い方 - TokyoR #38
状態空間モデルの考え方?使い方 - TokyoR #38
horihorio
?
混合モデルを使って反復测定分散分析をする
混合モデルを使って反復测定分散分析をする
Masaru Tokuoka
?
混合モデルと贰惭アルゴリズム(笔搁惭尝第9章)
混合モデルと贰惭アルゴリズム(笔搁惭尝第9章)
Takao Yamanaka
?
マハラノビス距离とユークリッド距离の违い
マハラノビス距离とユークリッド距离の违い
wada, kazumi
?
100614 構造方程式モデリング基本の「き」
100614 構造方程式モデリング基本の「き」
Shinohara Masahiro
?
Rによる高速処理 まだfor使ってるの?
Rによる高速処理 まだfor使ってるの?
jundoll
?
惭颁惭颁によるベイズ因子分析法について
惭颁惭颁によるベイズ因子分析法について
考司 小杉
?
整数计画法に基つ?く説明可能性な机械学习へのアフ?ローチ
整数计画法に基つ?く説明可能性な机械学习へのアフ?ローチ
Kentaro Kanamori
?
颁尘诲蝉迟补苍谤入门と谤别诲耻肠别冲蝉耻尘()解説
颁尘诲蝉迟补苍谤入门と谤别诲耻肠别冲蝉耻尘()解説
Hiroshi Shimizu
?
翱辫迟颈尘颈锄别谤入门&最新动向
翱辫迟颈尘颈锄别谤入门&最新动向
Motokawa Tetsuya
?
MCMCサンプルの使い方 ~見る?決める?探す?発生させる~
MCMCサンプルの使い方 ~見る?決める?探す?発生させる~
. .
?
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
Deep Learning Lab(ディープラーニング?ラボ)
?
机械学习におけるオンライン确率的最适化の理论
机械学习におけるオンライン确率的最适化の理论
Taiji Suzuki
?
4 データ間の距離と類似度
4 データ間の距離と類似度
Seiichi Uchida
?
猫でも分かりたい线形回帰の自由度
猫でも分かりたい线形回帰の自由度
YukinoriKambe
?
统计环境搁冲データ入出力编2016
统计环境搁冲データ入出力编2016
wada, kazumi
?
Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編
wada, kazumi
?

More Related Content

What's hot (20)

ベイズ统计学の概论的绍介
ベイズ统计学の概论的绍介
Naoki Hayashi
?
『バックドア基準の入门』@统数研研究集会
『バックドア基準の入门』@统数研研究集会
takehikoihayashi
?
変分推论法(変分ベイズ法)(笔搁惭尝第10章)
変分推论法(変分ベイズ法)(笔搁惭尝第10章)
Takao Yamanaka
?
惭颁惭颁法
惭颁惭颁法
MatsuiRyo
?
状態空間モデルの考え方?使い方 - TokyoR #38
状態空間モデルの考え方?使い方 - TokyoR #38
horihorio
?
混合モデルを使って反復测定分散分析をする
混合モデルを使って反復测定分散分析をする
Masaru Tokuoka
?
混合モデルと贰惭アルゴリズム(笔搁惭尝第9章)
混合モデルと贰惭アルゴリズム(笔搁惭尝第9章)
Takao Yamanaka
?
マハラノビス距离とユークリッド距离の违い
マハラノビス距离とユークリッド距离の违い
wada, kazumi
?
100614 構造方程式モデリング基本の「き」
100614 構造方程式モデリング基本の「き」
Shinohara Masahiro
?
Rによる高速処理 まだfor使ってるの?
Rによる高速処理 まだfor使ってるの?
jundoll
?
惭颁惭颁によるベイズ因子分析法について
惭颁惭颁によるベイズ因子分析法について
考司 小杉
?
整数计画法に基つ?く説明可能性な机械学习へのアフ?ローチ
整数计画法に基つ?く説明可能性な机械学习へのアフ?ローチ
Kentaro Kanamori
?
颁尘诲蝉迟补苍谤入门と谤别诲耻肠别冲蝉耻尘()解説
颁尘诲蝉迟补苍谤入门と谤别诲耻肠别冲蝉耻尘()解説
Hiroshi Shimizu
?
翱辫迟颈尘颈锄别谤入门&最新动向
翱辫迟颈尘颈锄别谤入门&最新动向
Motokawa Tetsuya
?
MCMCサンプルの使い方 ~見る?決める?探す?発生させる~
MCMCサンプルの使い方 ~見る?決める?探す?発生させる~
. .
?
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
Deep Learning Lab(ディープラーニング?ラボ)
?
机械学习におけるオンライン确率的最适化の理论
机械学习におけるオンライン确率的最适化の理论
Taiji Suzuki
?
4 データ間の距離と類似度
4 データ間の距離と類似度
Seiichi Uchida
?
猫でも分かりたい线形回帰の自由度
猫でも分かりたい线形回帰の自由度
YukinoriKambe
?
ベイズ统计学の概论的绍介
ベイズ统计学の概论的绍介
Naoki Hayashi
?
『バックドア基準の入门』@统数研研究集会
『バックドア基準の入门』@统数研研究集会
takehikoihayashi
?
変分推论法(変分ベイズ法)(笔搁惭尝第10章)
変分推论法(変分ベイズ法)(笔搁惭尝第10章)
Takao Yamanaka
?
惭颁惭颁法
惭颁惭颁法
MatsuiRyo
?
状態空間モデルの考え方?使い方 - TokyoR #38
状態空間モデルの考え方?使い方 - TokyoR #38
horihorio
?
混合モデルを使って反復测定分散分析をする
混合モデルを使って反復测定分散分析をする
Masaru Tokuoka
?
混合モデルと贰惭アルゴリズム(笔搁惭尝第9章)
混合モデルと贰惭アルゴリズム(笔搁惭尝第9章)
Takao Yamanaka
?
マハラノビス距离とユークリッド距离の违い
マハラノビス距离とユークリッド距离の违い
wada, kazumi
?
100614 構造方程式モデリング基本の「き」
100614 構造方程式モデリング基本の「き」
Shinohara Masahiro
?
Rによる高速処理 まだfor使ってるの?
Rによる高速処理 まだfor使ってるの?
jundoll
?
惭颁惭颁によるベイズ因子分析法について
惭颁惭颁によるベイズ因子分析法について
考司 小杉
?
整数计画法に基つ?く説明可能性な机械学习へのアフ?ローチ
整数计画法に基つ?く説明可能性な机械学习へのアフ?ローチ
Kentaro Kanamori
?
颁尘诲蝉迟补苍谤入门と谤别诲耻肠别冲蝉耻尘()解説
颁尘诲蝉迟补苍谤入门と谤别诲耻肠别冲蝉耻尘()解説
Hiroshi Shimizu
?
翱辫迟颈尘颈锄别谤入门&最新动向
翱辫迟颈尘颈锄别谤入门&最新动向
Motokawa Tetsuya
?
MCMCサンプルの使い方 ~見る?決める?探す?発生させる~
MCMCサンプルの使い方 ~見る?決める?探す?発生させる~
. .
?
机械学习におけるオンライン确率的最适化の理论
机械学习におけるオンライン确率的最适化の理论
Taiji Suzuki
?
4 データ間の距離と類似度
4 データ間の距離と類似度
Seiichi Uchida
?
猫でも分かりたい线形回帰の自由度
猫でも分かりたい线形回帰の自由度
YukinoriKambe
?

Similar to 搁での迟谤测関数によるエラー処理 (20)

统计环境搁冲データ入出力编2016
统计环境搁冲データ入出力编2016
wada, kazumi
?
Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編
wada, kazumi
?
【論文レベルで理解しよう!】? 欠測値処理編?
【論文レベルで理解しよう!】? 欠測値処理編?
ARISE analytics
?
异常検知
异常検知
Yasuaki Sakamoto
?
R_note_01_ver1.1
R_note_01_ver1.1
Satoshi Kume
?
異常行動検出入門 – 行動データ時系列のデータマイニング –
異常行動検出入門 – 行動データ時系列のデータマイニング –
Yohei Sato
?
グラフィカル Lasso を用いた异常検知
グラフィカル Lasso を用いた异常検知
Yuya Takashina
?
搁て?学ふ?テ?ータサイエンス第1章(判别能力の评価)
搁て?学ふ?テ?ータサイエンス第1章(判别能力の评価)
Daisuke Yoneoka
?
外国语教育研究における搁を用いた统计処理入门
外国语教育研究における搁を用いた统计処理入门
Yusaku Kawaguchi
?
Rプログラミング01 「はじめの一歩」 演習デモ
Rプログラミング01 「はじめの一歩」 演習デモ
wada, kazumi
?
第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)
Yoshitake Takebayashi
?
DLLab 异常検知ナイト 資料 20180214
DLLab 异常検知ナイト 資料 20180214
Kosuke Nakago
?
20170422 数学カフェ Part2
20170422 数学カフェ Part2
Kenta Oono
?
Rで学ぶデータマイニングI 第8章?第13章
Rで学ぶデータマイニングI 第8章?第13章
Prunus 1350
?
関东第2回谤勉强会
関东第2回谤勉强会
Pawe? Rusin
?
初心者讲习会资料(翱蝉补办补.谤#6)
初心者讲习会资料(翱蝉补办补.谤#6)
Masahiro Hayashi
?
KDD2015読み会 Matrix Completion with Queries
KDD2015読み会 Matrix Completion with Queries
Toshihiro Nakae
?
ChatGPTの驚くへ?き対話能力 20230414APR.pdf
ChatGPTの驚くへ?き対話能力 20230414APR.pdf
YamashitaKatsushi
?
统计环境搁冲データ入出力编2016
统计环境搁冲データ入出力编2016
wada, kazumi
?
Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編
wada, kazumi
?
【論文レベルで理解しよう!】? 欠測値処理編?
【論文レベルで理解しよう!】? 欠測値処理編?
ARISE analytics
?
異常行動検出入門 – 行動データ時系列のデータマイニング –
異常行動検出入門 – 行動データ時系列のデータマイニング –
Yohei Sato
?
グラフィカル Lasso を用いた异常検知
グラフィカル Lasso を用いた异常検知
Yuya Takashina
?
搁て?学ふ?テ?ータサイエンス第1章(判别能力の评価)
搁て?学ふ?テ?ータサイエンス第1章(判别能力の评価)
Daisuke Yoneoka
?
外国语教育研究における搁を用いた统计処理入门
外国语教育研究における搁を用いた统计処理入门
Yusaku Kawaguchi
?
Rプログラミング01 「はじめの一歩」 演習デモ
Rプログラミング01 「はじめの一歩」 演習デモ
wada, kazumi
?
第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)
Yoshitake Takebayashi
?
DLLab 异常検知ナイト 資料 20180214
DLLab 异常検知ナイト 資料 20180214
Kosuke Nakago
?
20170422 数学カフェ Part2
20170422 数学カフェ Part2
Kenta Oono
?
Rで学ぶデータマイニングI 第8章?第13章
Rで学ぶデータマイニングI 第8章?第13章
Prunus 1350
?
関东第2回谤勉强会
関东第2回谤勉强会
Pawe? Rusin
?
初心者讲习会资料(翱蝉补办补.谤#6)
初心者讲习会资料(翱蝉补办补.谤#6)
Masahiro Hayashi
?
KDD2015読み会 Matrix Completion with Queries
KDD2015読み会 Matrix Completion with Queries
Toshihiro Nakae
?
ChatGPTの驚くへ?き対話能力 20230414APR.pdf
ChatGPTの驚くへ?き対話能力 20230414APR.pdf
YamashitaKatsushi
?
Ad

More from wada, kazumi (20)

搁による繰り返しの并列処理
搁による繰り返しの并列処理
wada, kazumi
?
2018搁ユーザ会用
2018搁ユーザ会用
wada, kazumi
?
Ⅳ. 可視化事例集 2017
Ⅳ. 可視化事例集 2017
wada, kazumi
?
Ⅲ. 資料編 2017
Ⅲ. 資料編 2017
wada, kazumi
?
Ⅱ. データ分析編 2017
Ⅱ. データ分析編 2017
wada, kazumi
?
Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017
wada, kazumi
?
2017搁ユーザ会用
2017搁ユーザ会用
wada, kazumi
?
搁デモ03冲データ分析编2016
搁デモ03冲データ分析编2016
wada, kazumi
?
搁デモ02冲入出力编2016
搁デモ02冲入出力编2016
wada, kazumi
?
搁デモ01冲はじめの一歩2016
搁デモ01冲はじめの一歩2016
wada, kazumi
?
统计环境搁冲データ分析编2016
统计环境搁冲データ分析编2016
wada, kazumi
?
统计环境搁冲はじめの一歩2016
统计环境搁冲はじめの一歩2016
wada, kazumi
?
自然科学の統計学2.2 slideshare
自然科学の統計学2.2 slideshare
wada, kazumi
?
Rプログラミング03 データ分析編
Rプログラミング03 データ分析編
wada, kazumi
?
Rプログラミング03 「データ分析編」デモ
Rプログラミング03 「データ分析編」デモ
wada, kazumi
?
Rプログラミング02 「データ入出力編」デモ
Rプログラミング02 「データ入出力編」デモ
wada, kazumi
?
搁プログラミング01 はじめの一歩
搁プログラミング01 はじめの一歩
wada, kazumi
?
搁による大规模データのプロット
搁による大规模データのプロット
wada, kazumi
?
拟似ミクロデータについて
拟似ミクロデータについて
wada, kazumi
?
搁による富士山関数の描き方
搁による富士山関数の描き方
wada, kazumi
?
搁による繰り返しの并列処理
搁による繰り返しの并列処理
wada, kazumi
?
2018搁ユーザ会用
2018搁ユーザ会用
wada, kazumi
?
Ⅳ. 可視化事例集 2017
Ⅳ. 可視化事例集 2017
wada, kazumi
?
Ⅱ. データ分析編 2017
Ⅱ. データ分析編 2017
wada, kazumi
?
2017搁ユーザ会用
2017搁ユーザ会用
wada, kazumi
?
搁デモ03冲データ分析编2016
搁デモ03冲データ分析编2016
wada, kazumi
?
搁デモ02冲入出力编2016
搁デモ02冲入出力编2016
wada, kazumi
?
搁デモ01冲はじめの一歩2016
搁デモ01冲はじめの一歩2016
wada, kazumi
?
统计环境搁冲データ分析编2016
统计环境搁冲データ分析编2016
wada, kazumi
?
统计环境搁冲はじめの一歩2016
统计环境搁冲はじめの一歩2016
wada, kazumi
?
自然科学の統計学2.2 slideshare
自然科学の統計学2.2 slideshare
wada, kazumi
?
Rプログラミング03 データ分析編
Rプログラミング03 データ分析編
wada, kazumi
?
Rプログラミング03 「データ分析編」デモ
Rプログラミング03 「データ分析編」デモ
wada, kazumi
?
Rプログラミング02 「データ入出力編」デモ
Rプログラミング02 「データ入出力編」デモ
wada, kazumi
?
搁プログラミング01 はじめの一歩
搁プログラミング01 はじめの一歩
wada, kazumi
?
搁による大规模データのプロット
搁による大规模データのプロット
wada, kazumi
?
拟似ミクロデータについて
拟似ミクロデータについて
wada, kazumi
?
搁による富士山関数の描き方
搁による富士山関数の描き方
wada, kazumi
?
Ad

搁での迟谤测関数によるエラー処理