019296
統計学関連なんでもあり

統計学に関する質問とか意見などなんでも書き込んでください。回答があるか,回答が正しいかは保証できません。
レポートや宿題の答えを求める記事や,その他不適切と判断した記事は,管理者の独断で即刻削除します。
ローマ数字,丸付き数字などのフォントセット依存文字および半角カタカナは使わないでください。
記事を引用する際には,適切に引用してください(全文引用はしないでください)。
問題が解決した(結局解決しなかった)場合は,その旨報告していただければ,コメントした人や他の読者に参考になるでしょう。


[トップに戻る] [利用上の注意] [ワード検索] [過去ログ] [統計学自習ノート] [管理用]
latest article: No. 22961, 2020/09/14(Mon) 06:25
おなまえ
タイトル
コメント
URL
添付ファイル
暗証キー (英数字で8文字以内)

自分の投稿記事を修正・削除する場合 --> 処理 記事No 暗証キー


共分散分析について
  投稿者:小嶋 2020/08/17(Mon) 21:56 No. 22941
統計初心者で、初めて質問させていただきます。
教育現場で働きながら、実践研究をしております。

ある学習方法を1年間実施するAクラス(実験群)と実施しないB,Cクラス(統制群)があります。
事前(4月)と事後(翌年の3月)に同様のテストを実施し、事前から事後にかけてのテストの点数の伸び具合を比較して当該学習方法が有効かどうかを確かめたいと思っています。

このような場合、共分散分析を実施するかと思うのですが、調べた限りですが、2クラス(実験群1クラスと統制群1クラス)の比較の仕方の例しか見出せませんでした。
そのため、 AクラスとBクラス、AクラスとCクラスでそれぞれ共分散分析を実施し、両方の共分散分析で、Aクラスの方が事前から事後にかけて有意にテストの点数が伸びていることが確認できれば、当該学習方法は有効であると考えていいでしょうか?
それとも、他の良いやり方があるのでしょうか?
ご教示いただければ幸いです。
よろしくお願いいたします。

Re: 共分散分析について
  投稿者:鈴木康弘 2020/09/11(Fri) 17:07 No. 22958
 そのやり方でもいいと思いますが、B,Cクラスを最初からひとまとめにするわけにはいかないんですか?

Re: 共分散分析について
  投稿者:小嶋 2020/09/11(Fri) 22:47 No. 22959
鈴木先生
お答えいただきありがとうございます。
では、 B,Cクラスをひとまとめにして共分散分析をします。

当該の共分散分析について追加で教えていただきたいことがあります。
事前のテストを共変量とする共分散分析を実施した際、クラス(固定因子)-事前のテスト(共変量)の交互作用が有意になった場合、共分散分析を実施するのが適切でないことは分かったのですが、この後、どのようにすれば比較ができるのかを詳しく教えていただければと思います。
よろしくお願いします。

Re: 共分散分析について
  投稿者:鈴木康弘 2020/09/13(Sun) 09:52 No. 22960
クラスやテストの時期を0、1の変数にして重回帰分析にしては。

Re: 共分散分析について
  投稿者:小嶋 2020/09/14(Mon) 06:25 No. 22961
鈴木先生
ありがとうございます。
重回帰分析について調べてやってみます。
重回帰分析について分からないことが出てきましたら、また質問させていただきます。
よろしくお願いします。
重回帰分析について学ぶ上で、初心者にも分かりやすく、私のやろうとしていることの例が示されているようなおすすめの書籍がありましたら、紹介いただけると幸いです。


正規分しない連続変数の反復測定
  投稿者:MoMo 2020/09/05(Sat) 13:36 No. 22955
いつもお世話になっております。
One-way repeated measures ANOVAに対応する非正規分布連続変数の解析はFriedman検定かと思います。Two-way repeated measures ANOVAに対応するそれは現在のところ存在しないと聞きました。これが本当ならば、この解析はどのようにすればよいでしょうか?
非正規分布する連続変数を同一被検者において3回測定し、3群の被検者のグループ間でこれらが同一である、という帰無仮説を否定しようとしています。
ご教授いただければ幸いです。

Re: 正規分しない連続変数の反復測定
  投稿者:鈴木康弘 2020/09/10(Thu) 16:29 No. 22957
 誰も答えないところを見ると、やはりANOVAでやるしかないのでしょう。
ANOVAは正規性の仮定については頑健だとされるので。


手元のデータの正規分布,理論的な正規分布?
  投稿者:コロン 2020/09/01(Tue) 13:44 No. 22942
お世話になります。

私の記憶違いであれば大変申し訳ございませんが,以前,この掲示版で,青木先生が標題のようなことを書かれていたのではないかと記憶しております。つまり,「手元のデータが正規分布するかではなく,そのデータが理論的に正規分布しているかどうかが大事」といった内容です。

過去ログを検索しておりますが,ヒットしませんので,私の勘違いなのかなと思っておりますが,失礼を承知で,お尋ねさせていただきました。

もし記憶違いでなければ,その過去ログがどれかを教えていただけますと幸いに存じます。

私の勘違いで,青木先生にご迷惑をおかけするようでしたら,この内容を削除いただいて構いません。

失礼いたします。

Re: 手元のデータの正規分布,理論的な正規分布?
  投稿者:鈴木康弘 2020/09/04(Fri) 15:35 No. 22954
 データの正規性の検定をしても、「正規分布に従わない」か「正規分布に従わないとはいえない」としか言えず、「正規分布に従う」とは言えない。だから理論的に正規分布に従うと証明した方がいい、という意味ではないでしょうか。
 どの発言か、ずばり示せなくて、ごめんなさい。

Re: 手元のデータの正規分布,理論的な正規分布?
  投稿者:コロン 2020/09/06(Sun) 10:37 No. 22956
鈴木先生

掲示版を見ておらず,お礼のお返事が今になりましたこと申し訳ございません。

ありがとうございました。


青木先生の主座標分析plot関数について(2)
  投稿者:明石 2020/09/03(Thu) 13:17 No. 22951
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
昨日は、ラベル付き散布図について、有り難いご教示をいただきました。
誠にありがとうございました。

追加の質問がございます。
何卒どうぞよろしくお願いします。

---------------------------------

http://aoki2.si.gunma-u.ac.jp/R/princo.html

irisデータで、plotメソッドのグラフ表示の説明がされています。

> a <- similarity.matrix(iris[1:4]) # 類似度行列を作る
> b <- princo(a)
> plot(b, labels=TRUE, col=(1:3)[as.integer(iris[,5])])

3行目について、ご質問です・

col=as.integer(iris[,5])でも良いように思えますが、
col=(1:3)[as.integer(iris[,5])]と書かれている理由についてご教示いただければ
大変に勉強になります。

お手数をおかけいたします。
どうぞよろしくお願いいたします。
//

Re: 青木先生の主座標分析plot関数について(2)
  投稿者:青木繁伸 2020/09/03(Thu) 16:59 No. 22952 HomePage
col=(1:3)[as.integer(iris[,5]) は冗長ですが,色を1:3 ではないものにしたいとき,
col=c(1, 2, 4)[as.integer(iris[,5]) や,もっとわかりやすく
col=c('black', 'blue', 'brown')[as.integer(iris[,5])] などと出来ますという例のつもりだったようです。

御礼(Re: 青木先生の主座標分析plot関数について(2))
  投稿者:明石 2020/09/03(Thu) 17:46 No. 22953
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
大変に勉強になりました。

さっそく活用させていただきます。

勇気を振り絞って、お聞きしてよかったです。
ありがとうございました。
//


Re:Re:Re: Welchテストについて
  投稿者:yamada 2020/08/11(Tue) 17:23 No. 22937 HomePage
>「x と y のデータ」って,変数ではなく,群だったわけですね。

>さて,傾きの変化点の検出ですが,
>二本の直線による折れ線回帰
http://aoki2.si.gunma-u.ac.jp/R/oresen.html
>などはいかがでしょうか?

また、こちらは優位性検定なのでしょうか?
二本の直線の傾き優位に差があるかどうかはどうやって判定したらよいのでしょうか?

よろしくお願いいたします。

Re:Re:Re: Welchテストについて
  投稿者:青木繁伸 2020/08/12(Wed) 21:54 No. 22938 HomePage
共分散分析
http://aoki2.si.gunma-u.ac.jp/R/covar-test.html

Re:Re:Re: Welchテストについて
  投稿者:yamada 2020/09/01(Tue) 17:28 No. 22943 HomePage
ご回答ありがとうございます

更に、質問です。

各群(x,y)の境界が曖昧でわかっていないという状況で、
求めたいのは、回帰係数が異なるx1の点なのですが、
このような場合、
境界値x1で x<x1 と x>=x1 とデータを2つに分けて群1と群2として
から共分散分析を用いて、2つ群の回帰係数が有意に異なる
x1の値を求める、という方法でもいいのでしょうか?

Re:Re:Re: Welchテストについて
  投稿者:青木繁伸 2020/09/03(Thu) 11:41 No. 22950 HomePage
仕方ないと思います


青木先生の主座標分析plot関数について
  投稿者:明石 2020/09/01(Tue) 18:46 No. 22944
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
毎々、ご丁寧なご教示をいただき、誠にありがとうございます。
改めて御礼を申し上げます。
ありがとうございます。

青木先生にご教示いただきたいことがございます。
何卒どうぞよろしくお願いいたします。

---------------------------------

点とラベルが重ならないような、ラベル付き散布図を作成したいと思います。

Google先生にお聞きしたら、
library(maptools)を教えていただきましたが、
私の引数の与え方が悪いのか、画像サイズを大きくすると、点とラベルが離れてしまいます。

http://aoki2.si.gunma-u.ac.jp/R/princo.html

青木先生の主座標分析を拝借していますが、
主座標分析のplot関数が、とてもいい感じです。

offset=.2 で、
点とラベルが重ならないような工夫をされていると理解してよろしいでしょうか?

よろしくどうぞお願いいたします。

Re: 青木先生の主座標分析plot関数について
  投稿者:青木繁伸 2020/09/02(Wed) 09:03 No. 22945 HomePage
> 私の引数の与え方が悪いのか、画像サイズを大きくすると、点とラベルが離れてしまいます。

どのようなプログラムですか?

offset は,when pos is specified, this value controls the distance (‘offset’) of the text label from the specified coordinate in fractions of a character width.ということで,使う文字幅の倍数でセットしています。

Re: 青木先生の主座標分析plot関数について
  投稿者:明石 2020/09/02(Wed) 13:45 No. 22946
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
ご丁寧なご教示をいただき、誠にありがとうございます。

私が作成したRプログラムをお示しします、

データフレーム dfに、散布図の座標がセットしてあります。

library(maptools)

x1 <- min(df$x)
x2 <- max(df$x)
y1 <- min(df$y)
y2 <- max(df$y)

plot(df$x, df$y, xlab="層別の平均値", ylab="層別の標準偏差", main=title)

pointLabel(df$x, df$y, xlim=c(x1,x2), ylim=c(y1,y2) , labels=設問, method="SANN", offset = 0, cex=1 )

pointLabel()関数は、パッケージmaptoolsの関数です。

引数を、試行錯誤的にやっている状況です。

画像サイズが小さいときには、気になりませんが、
画像サイズを大きくすると、点とラベルが大きく離れてしまい、気になります。
気になる年頃です。

ご教示をいただき、誠にありがとうございました。
御礼を申し上げます。
//

Re: 青木先生の主座標分析plot関数について
  投稿者:青木繁伸 2020/09/02(Wed) 16:54 No. 22947 HomePage
offset は,when pos is specified, と書かれているように,pos も同時に指定しないといけないようですね。
pointLabel(df$x, df$y, xlim=c(x1,x2), ylim=c(y1,y2) , labels=設問, method="SANN", offset = 0, pos=4, cex=1 )
のようにしてみてはいかがでしょう?

Very Special Thanks!!(Re: 青木先生の主座標分析plot関数について)
  投稿者:明石 2020/09/02(Wed) 18:51 No. 22948
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
ご丁寧なご教示をいただき、誠にありがとうございます。

さっそく試してみます。

ありがとうございました。
//

Re: 青木先生の主座標分析plot関数について
  投稿者:明石 2020/09/03(Thu) 09:27 No. 22949
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
ご丁寧なご教示をいただき、誠にありがとうございます。

ラベル付き散布図は、色々と実験して、
maptoolsパッケージの利用は止めて、
青木先生のplotプログラムを拝借させていただくことにしました。
ありがたく使わせていただきます。

何か困ったことがあると、Google先生にお聞きして、
ヒットしたページに掲載されているプログラムをコピペして利用することが多いのですが、
マニュアルをしっかりと読むことの重要性を痛感する良い機会ともなりました。

ありがとうございました。
//


数量化III類の寄与率とその意味
  投稿者:tree 2020/08/11(Tue) 14:37 No. 22935
青木先生のお書きになったqt3関数を用いて、サンプルの2次元の布置をしてみようと考えております。
http://aoki2.si.gunma-u.ac.jp/R/qt3.html

先生のソースの中には寄与率に関する出力がないように拝読しましたが、算出に際しては以下のような処理でよろしいでしょうか。
result_qt3 <- qt3(data)
result_qt3$Eigen.value/sum(result_qt3$Eigen.value) #これが寄与率?

今のところ2次元の布置を考えておりますが、累積寄与率が12.6%でした。この値が高いとか低いとかいう基準があるのでしょうか。それとも投入するデータのサンプルサイズ・カテゴリ数と関連する問題であって、一概には言えないのでしょうか。

Re: 数量化III類の寄与率とその意味
  投稿者:青木繁伸 2020/08/12(Wed) 21:56 No. 22939 HomePage
> esult_qt3$Eigen.value/sum(result_qt3$Eigen.value) #これが寄与率?

それでよいはずですが。

寄与率の基準はないでしょう。
だらだらと下がりますので,スクリープロットが有効な主成分分析の寄与率とはかなり感覚的に違いがあると思います。

Re: 数量化III類の寄与率とその意味
  投稿者:tree 2020/08/13(Thu) 09:07 No. 22940
青木先生

コメントいただけて大変光栄です。ありがとうございました。
先行研究では「累積寄与率は〜%であった。」と述べているだけのものがいくつかあって、だったら何なんだ?というのがわからずにおりました。

例にならって?そのように記載しておこうと思います。


Re:Re:Re: Welchテストについて
  投稿者:yamada 2020/08/11(Tue) 17:19 No. 22936 HomePage
青木先生

ご返答ありがとうございます。

>「x と y のデータ」って,変数ではなく,群だったわけですね。

>さて,傾きの変化点の検出ですが,
>二本の直線による折れ線回帰
http://aoki2.si.gunma-u.ac.jp/R/oresen.html
>などはいかがでしょうか?

二本の直線による折れ線回帰というのは初めて聞きました
教えていただきありがとうございます。

二本の直線による折れ線回帰の原理の方がわからないので勉強したいのですが
こちらの理論の解説が載っているわかりやすい
サイトとか知っていましたら教えていただけますでしょうか?

よろしくお願いいたします。

山田


Re:Re: Welchテストについて
  投稿者:yamada 2020/08/04(Tue) 16:35 No. 22933 HomePage
青木さま

ご回答ありがとうございます。
説明が分かりにくくて申し訳ありません。

>> xとyのデータに対して,Δyのbinで区切ってxの平均値の差をWelchテスト

>というのが,実際にどのように行われたかよくわかりません。
>x, y のそれぞれのデータをΔy でカテゴリー化を行って,カテゴリー化された x, y の平
>均値の差の検定を行ったと言いうことですか?なぜカテゴリー化したのか?また,Welch の
>検定は,独立二標本の平均値の差の検定ですが,x, y は独立二標本なのですか?

カテゴリー化などは行っていません。
y1 (x1,x2,x3,..) y2(z1,z2,z3,,,)は同じ母集団に属していないとしています。

>単に「,鉢△琉磴い廊,諒は分散が大きくなるためという理由」かどうかならば,分散
>の大きさを見てみればよいでしょう。ウエルチの t の分母を見てみればよいでしょう。

ご指摘通り、分散が大きいためでした。

>> yの勾配の変化を検出

>>というのもよくわかりません。x のある値前後で y の回帰直線の傾きが変化するかどう
>>かということですか?

例えば、ある(x,y)データが x<c で傾き a1 : y=a1x+b1 だったものが、
x>=c で 傾き a2 : y=a2x+b2 に変化する場合、その傾きの変化 ( a1 => a2) を検出するにはどうすればいいのでしょうか、という質問です。
意図が分かりにくくて申し訳ありません。

よろしくお願いいたします。

Re:Re: Welchテストについて
  投稿者:青木繁伸 2020/08/05(Wed) 10:15 No. 22934 HomePage
「x と y のデータ」って,変数ではなく,群だったわけですね。

さて,傾きの変化点の検出ですが,
二本の直線による折れ線回帰
http://aoki2.si.gunma-u.ac.jp/R/oresen.html
などはいかがでしょうか?


Welchテストについて
  投稿者:yamada 2020/07/28(Tue) 18:07 No. 22931 HomePage
はじめまして、青木先生

宇宙物理の研究をしております。
質問させていただきたく、コメントをいたします。
1)Welchテストを使ってデータを分析し論文を作成しているのですが、
xとyのデータに対して,Δyのbinで区切ってxの平均値の差をWelchテストで評価したところ、xとyにlinearな関係がある場合は、xの平均値の差は2σを越えず、linearな 関係がない場合は、xの平均値の差は2σを越えるという結果になります。,鉢△琉磴い廊,諒は分散が大きくなるためという理由でよいのでしょうか?

2)(x,y)データを2次元plotしたとき、yの勾配の変化を検出するにはどのような検定を使ったらよいのでしょうか?

以上、よろしくお願いいたします。

Re: Welchテストについて
  投稿者:青木繁伸 2020/07/29(Wed) 10:13 No. 22932 HomePage
> xとyのデータに対して,Δyのbinで区切ってxの平均値の差をWelchテスト

というのが,実際にどのように行われたかよくわかりません。
x, y のそれぞれのデータをΔy でカテゴリー化を行って,カテゴリー化された x, y の平均値の差の検定を行ったと言いうことですか?なぜカテゴリー化したのか?また,Welch の検定は,独立二標本の平均値の差の検定ですが,x, y は独立二標本なのですか?

単に「,鉢△琉磴い廊,諒は分散が大きくなるためという理由」かどうかならば,分散の大きさを見てみればよいでしょう。ウエルチの t の分母を見てみればよいでしょう。

> yの勾配の変化を検出

というのもよくわかりません。x のある値前後で y の回帰直線の傾きが変化するかどうかということですか?

実際のデータを出すのは難しいでしょうが,データの一部を取り出して同じような結果になるように少し値を変えて,データとその分析プログラム(R スクリプト)を見せてもらうと理解が早まると思います。


検定における同地点から採取した2試料データの扱いについて
  投稿者:ゆき 2020/07/08(Wed) 11:07 No. 22925
青木先生

初めて質問させていただきます。分析・開発関係に従事しております。
処理方法が異なる2区画(A,Bとします)の土壌について、数か月ごとに区画内の異なる地点から試料を採取し微生物や化学分析を実施しました。試料は採取した土壌コアからN=2で採取しています。
区画A,区画Bで微生物数や化学成分濃度に差ががあるかt検定による評価を考えているのですが、同一コアから採取したN=2試料のデータの取り扱いについて以下のどちらが適切かご教授いただけないでしょうか。
各試料N=2のデータを検定に用いる(データ数:試料数×2)
各試料のデータとしてN=2の平均値を用いる(データ数=試料数)

お忙しいところ恐縮ですが、ご回答よろしくお願い申し上げます。

Re: 検定における同地点から採取した2試料データの扱いについて
  投稿者:青木繁伸 2020/07/09(Thu) 10:42 No. 22926 HomePage
各水準の繰返し数が等しく,2 以上である場合
http://aoki2.si.gunma-u.ac.jp/lecture/TwoWayANOVA/TwoWay2.html

でしょうかね?区画と採取時点が2要因,繰り返しが2。

Re: 検定における同地点から採取した2試料データの扱いについて
  投稿者:ゆき 2020/07/09(Thu) 12:58 No. 22927
返信いただき、ありがとうございます。

度々の質問で申し訳ないのですが、試験期間中の各分析値(分析値の変動)について区画A,Bで差があるかどうかを評価する場合も2要因,繰り返しが2の二元配置分散分析を実施し、区画要素に関する結果を見るのが適切なのでしょうか。
それとも各試料N=2のデータをそれぞれ区画Aのデータ、区画Bのデータとして
2群間の比較をしても良いのでしょうか。
お忙しいところ恐縮ですが、よろしくお願い申し上げます。

Re: 検定における同地点から採取した2試料データの扱いについて
  投稿者:青木繁伸 2020/07/09(Thu) 18:18 No. 22928 HomePage
> 各試料N=2のデータをそれぞれ区画Aのデータ、区画Bのデータとして
> 2群間の比較をしても良いのでしょうか。

逆にお伺いしますが,
(1) n = 2 で検定して,検出力が十分と思いますか?
(2) 「数か月ごとに」データを何回もとったということですね。では,そのような検定をデータ採取時点ごとに何回も繰り返すということですか?

Re: 検定における同地点から採取した2試料データの扱いについて
  投稿者:ゆき 2020/07/10(Fri) 11:22 No. 22929
お忙しいところ恐れ入ります。
わかりにくい説明で申し訳ありません。
採取時期の要素は無視して区画のみについて比較をするために、試験期間中の各区画の全データを用いた区画A,区画Bの二群間の検定です。
異なる地点から月ごとに採取したデータを用いて、地点間で分析値に差があるか、t検定を用いて評価している例があったので、質問させていただきました。

Re: 検定における同地点から採取した2試料データの扱いについて
  投稿者:青木繁伸 2020/07/10(Fri) 13:52 No. 22930 HomePage
例えば,7回のデータ採取があり,各回とも区画A,区画Bでそれぞれ2個のデータを取ったということで,区画A,区画Bごとにまとめた14個ずつのデータで t 検定をするということですか。
採取時期 区画A    区画B
1 (11, 13) (16, 17)
2 (12, 13) (15, 18)
3 (18, 15) (18, 19)
4 (10, 12) (19, 21)
5 (11, 19) (18, 22)
6 (19, 10) (20, 24)
7 (11, 11) (22, 23)

> a = c(11, 13, 12, 13, 18, 15, 10, 12, 11, 19, 19, 10, 11, 11)
> b = c(16, 17, 15, 18, 18, 19, 19, 21, 18, 22, 20, 24, 22, 23)
> t.test(a, b)

Welch Two Sample t-test

data: a and b
t = -5.5305, df = 25.123, p-value = 9.353e-06
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-8.527883 -3.900688
sample estimates:
mean of x mean of y
13.21429 19.42857
データをプールするためには,採取時期,あるいは採取時期にともなう他の要因がデータの大小に無関係であることを示さないといけないでしょうね。上の架空例では区画Bのデータは時間につれて大きくなっています。


【R】表の突合せ、charactermatch()関数の使い方
  投稿者:明石 2020/06/14(Sun) 11:09 No. 22919
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
毎々、ご丁寧なご教示をいただき、誠にありがとうございます。
改めて御礼を申し上げます。
ありがとうございます。

青木先生にご教示いただきたいことがございます。
何卒どうぞよろしくお願いいたします。

---------------------------------

添付の画像ファイルをご覧ください。

3つの表があります。

表1 状態遷移表
   状態遷移を表すラベル(文字列)の、長大な文字列ベクトル
   ラベルは重複出現する
   表1のラベルの種類を集約したものが、表2のラベル

表2 辞書
   ラベルの種類〜特徴ベクトル
   表2のラベルは、表1に出現するラベルの種類を集約したもの
   特徴ベクトルは、約200次元の数値ベクトル

表3 表1と表2を突き合わせた、所望する表

表1と表2を突き合わせて、
表1のラベルの横に、対応する特徴ベクトルを、表2から転記して、
表3を得たいと思います。

表1をループを回しながら、
表1のラベルに対応する、表2のラベルを見つけて、
その特徴ベクトルを、表1に転記すればよいのですが、
表1の文字列ベクトルは長大ですので、効率の良いRプログラムを知りたいと
思います。

charactermatch()関数により、
表1のラベルに対応する、表2のラベルのインデックスを得ることまでは、できました。

ご教示いただきたいたいのは、この先です。

得たインデックスを使うことで、効率の良いRプログラムが書けないか、
そこを知りたいと思います。

お手数をおかけいたします。
何卒どうぞよろしくお願いいたします。
失礼いたします。
//


Re: 【R】表の突合せ、charactermatch()関数の使い方
  投稿者:青木繁伸 2020/06/14(Sun) 14:34 No. 22920 HomePage
現時点での(効率がよいかどうかはともかく)プログラムはどのようになっていますか。

Re: 【R】表の突合せ、charactermatch()関数の使い方
  投稿者:明石 2020/06/14(Sun) 15:34 No. 22921
青木先生 様;

お忙しいところを失礼いたします、明石と申します

以下、私が作成しましたRプログラムをお示しします。

# 表1の読み込み
# 実際のデータは、以下のように、半角スペース区切りの文字列ベクトル
# s5 s7 s1 s5 s100 s1 s3 s5 s8 s1 ,,,,,,,
# ファイル名は、"BOW_input.txt"

BOW <- scan("BOW_input.txt", what = character(), sep = "\n", blank.lines.skip = F) ######
bow <- strsplit(BOW, " ")
bow <- unlist(bow)

# 表2の読み込み
# ファイル名は、Vectors_matrix

vec <- read.table("Vectors_matrix.csv", header=T , sep=",", na.strings=c("NA",""," "),stringsAsFactors=F, row=1)
vec <- as.matrix(vec)
label <- rownames(vec)

# 表3の(空)行列を作成する

nr <- length(bow)
nc <- ncol(vec)
mx <- matrix(0, nr=nr, nc=nc)

rownames(mx) <- bow
colnames(mx) <- colnames(vec)

# charmatch()関数で、インデックスを得る

jun <- charmatch(bow, label)

# ここが、ご教示願いたい箇所です。
# charamatch()関数で得られたインデックスは、このように利用しましたが、
# もっと良い書き方があるように思えてなりません。

for (i in seq_along(bow)) {
mx[i,] <- vec[jun[i],]
}

# 所望する、表3

mx <- as.data.frame(mx)

以上、どうぞよろしくお願いいたします。

Re: 【R】表の突合せ、charactermatch()関数の使い方
  投稿者:青木繁伸 2020/06/14(Sun) 16:13 No. 22922 HomePage
jun を求めた後,以下のようにする
mx2 <- vec[jun,] # 空の行列を作る必要はない
rownames(mx2) <- bow # あとで as.data.frame すると,重複名は修正される
colnames(mx2) <- colnames(vec)
mx2 <- data.frame(mx2, check.rows=FALSE)

# check
all(mx == mx2)
as.data.frame で重複する行名は s5.1 などになる。それが不都合な場合は,ラベルを新たな列として作るとよいでしょう。

mx2 <- vec[jun,] が何をしているのか不思議かもしれませんが,
> ans <- c(1,2,1,1,2,2,1,2,1,1)
> x <- c("No", "Yes")
> x[ans]
[1] "No" "Yes" "No" "No" "Yes" "Yes" "No" "Yes"
[9] "No" "No"
と同じようなことをしているのです。

Re: 【R】表の突合せ、charactermatch()関数の使い方
  投稿者:明石 2020/06/14(Sun) 19:26 No. 22923
青木先生 様;

お忙しいところを失礼いたします、明石と申します。

ありがたいご教示をいただき、誠にありがとうございました。
御礼を申し上げます。

誠に恥ずかしいのですが、
にわかには理解できませんので、追試しながら、技を学びたいと思います。

青木先生にプログラムを見ていただく幸運に恵まれました。
ありがとうございました。
ありがとうございました。
//

Re: 【R】表の突合せ、charactermatch()関数の使い方
  投稿者:明石 2020/06/14(Sun) 19:35 No. 22924
青木先生 様;

お忙しいところを失礼いたします、明石と申します

私がまさに知りたかったのは、この1行です。
これが知りたかったのです。

求めたインデックスjunを利用して、1行で書ける方法が知りたかったのです。

> mx2 <- vec[jun,] が何をしているのか不思議かもしれませんが,
> ans <- c(1,2,1,1,2,2,1,2,1,1)
> x <- c("No", "Yes")
> x[ans]
> [1] "No" "Yes" "No" "No" "Yes" "Yes" "No" "Yes"
> [9] "No" "No"

知りたかったことを、ご教示いただき、
勇気を振り絞って、投稿させていただき、よかったなと思います。

ありがとうございました。
ありがとうございました。
//


回帰分析前の外れ値処理について
  投稿者:石田 2020/06/07(Sun) 14:54 No. 22916
自分からの距離と注視時間のように
時間と距離の間に明らかに相関性が見られるデータの回帰分析を行おうと考えています。

このような相関性のある2変量の場合、マハラノビス距離による外れ値処理が良いと思い、pythonで行わせようとしました。

距離は算出出来るのですが、外れ値とみなすしきい値は任意に決定してもよいのでしょうか?(例えばマハラノビス距離で四分位範囲を超えるものを外れ値とするなど)

高度な処理は理解と実装が追いつかず、シンプルな方法が有りましたらご教授頂けますと幸いです。

Re: 回帰分析前の外れ値処理について
  投稿者:青木繁伸 2020/06/07(Sun) 21:01 No. 22917 HomePage
所属確率が 95% とか
http://aoki2.si.gunma-u.ac.jp/R/mahalanobis.html

いずれにしても基準は絶対的なものではないので,何故その基準にしたのかが客観的に説明できればよいでしょう。

何通りか変えて分析してみて結果の妥当性を検討するとかもよいかな。

また,明らかに外れ値というのは除くとしても,ちょっとぐらい外れているのを除くのがいいかどうかという問題もあるとおもいます。

実際のデータに依存するので,一般論では論じきれないかもしれませんね。

Re: 回帰分析前の外れ値処理について
  投稿者:石田 2020/06/11(Thu) 00:16 No. 22918
青木先生

外れ値を含む可能性が高い、幾つかのデータセットを自動的に外れ値処理をするコードを書こうと思ったのですが統計的知識が不十分なので自分が決定したしきい値が統計的におかしなことをしていないか不安でした。
95%で妥当な結果が得られるか実験してみます。
ご教授ありがとうございました。


2項分布の発見者
  投稿者:統計の子猫 2020/05/09(Sat) 17:30 No. 22911
2項分布を初めて見つけた人と時代を探しております。色々と調べているのですが、見つけることが出来ず、ここでお聞きすることにしました。

ポアソン分布であれば、1838年にシメオン・ドニ・ポアソンが提案したということが分かっていますし、正規分布であれば、実はガウスよりも前にフランスの数学者ド・モアブルが見つけたと言われたりしています。
ド・モアブルは1730年代に、2項分布のnを大きくしていくと、2項分布の形が正規分布で近似できることを発見したと書いてあります。このことから、2項分布の発見は正規分布よりも古いだろうと予想しますが、誰がどのようにして2項分布を発見したり気付いたのかが書かれた文献などを見つけることが出来ません。
どなたか、2項分布の発見者または提案者が誰なのか、いつごろ発見されたのか、お教えいただけないでしょうか。また、2項分布の歴史が分かる文献なども教えていただけると助かります。
よろしくお願いいたします。

Re: 2項分布の発見者
  投稿者:青木繁伸 2020/05/09(Sat) 22:13 No. 22912 HomePage
ヤコブ・ベルヌーイ ?
Wikipedia の記事

Re: 2項分布の発見者
  投稿者:統計の子猫 2020/05/10(Sun) 09:36 No. 22913
青木先生、

コメント、有難うございます。ご紹介いただいた記事を読みました。
ベルヌーイが、ベルヌーイ試行をまとめた場合、つまり二項分布を考えなかったとは思えません。二項分布は、1713年頃にベルヌーイによって発見されたと言えそうです。
有難うございました。


【R】相関係数行列から距離行列への変換式
  投稿者:明石 2020/05/01(Fri) 13:44 No. 22906
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
毎々、ご丁寧なご教示をいただき、誠にありがとうございます。
改めて御礼を申し上げます。
ありがとうございます。

掲示板において、たしか、
相関係数行列(類似度)から距離行列(非類似度)への変換式について、掲載されていた記憶があり、
ワード検索しながら、過去分も調べていますが、見つかりません。

Google先生にお聞きすると、
距離=2*(1-相関係数)
というサイトが見つかりますが、
掲示板で、青木先生からご説明のあった変換式とは異なる、という印象をもっています。

青木先生が掲示板でご紹介されていた、変換式を使いたいと思います。

相関係数行列(類似度)から距離行列(非類似度)への変換式について、
この記事No.だよ、と教えていただければ、大変に助かります。

毎々、お手数をおかけいたします。
//

Re: 【R】相関係数行列から距離行列への変換式
  投稿者:青木繁伸 2020/05/02(Sat) 21:49 No. 22909 HomePage
http://aoki2.si.gunma-u.ac.jp/lecture/misc/clustan.html
でしょうか?

相関係数行列から平方距離行列を求める場合について書いています(距離行列ではありません)。

> 変数のクラスター分析を行う場合には,変数 i と変数 j の相関係数を rij

> としたとき,2 変数間の距離が次式で表されることになるので,個体のクラスター分析と同じように取り扱うことができる。

d2ij=2 (1−rij),  (i,j=1,2,…,p)

御礼(Re: 【R】相関係数行列から距離行列への変換式)
  投稿者:明石 2020/05/03(Sun) 08:47 No. 22910
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
毎々、ご丁寧なご教示をいただき、誠にありがとうございます。
改めて御礼を申し上げます。

今回も、助けていただきました。

ありがとうございます。
距離行列という、私の記憶違いでしたが、
私が、探していたのは、この記事です。

ありがとうございました。
お手数をおかけしてしまいました。
//


Rの出力について
  投稿者:もも 2020/05/01(Fri) 15:21 No. 22907
Rの出力方法について,基本的なことで恐縮ですが,ご教授いただけたら幸甚です。

a <- 1
b <- 3
c <- 0.5
min(a,b,c)

とすると,「0.5」と出力されますが,これを「c」と出力するにはどのようにすれば良いでしょうか。
数日間あれこれと調べてみましたが,どうしても分からず,質問させていただきました。
よろしくお願いします。

Re: Rの出力について
  投稿者:青木繁伸 2020/05/02(Sat) 21:25 No. 22908 HomePage
何をしたいのか本質がよく理解されないのですが。
min_value_name = function(a, b, c) {
par = c(deparse1(substitute(a)),
deparse1(substitute(b)),
deparse1(substitute(c)))
x = min(a,b,c)
print(par[which(x == c(a, b, c))])
}
のような関数を定義すると,
> a <- 1
> b <- 3
> c <- 0.5
> min_value_name(a, b, c)
[1] "c"
> x <- 2
> y <- 1
> z <- 5
> min_value_name(x, y, z)
[1] "y"
のような結果を得ることは出来ます,しかし
> min_value_name(3, 2, 1)
[1] "1"
のような使い方をすると,望む結果は得られません。

もし,引数の名前が必ず a, b, c であるなら,以下のような関数を定義することも出来ます。
f <- function(a, b, c) {
names = letters[1:3]
return(names[which(c(a, b, c) == min(c(a, b, c)))])
}
これだと,以下のような使用例になります
> f(1,2,3)
[1] "a"
> f(20, 10, 40)
[1] "b"
> f(100, 200, 10)
[1] "c"



【R】 apply系関数を使った、文字列の連結
  投稿者:明石 2020/04/29(Wed) 11:07 No. 22903
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
毎々、ご丁寧なご教示をいただき、誠にありがとうございます。
改めて御礼を申し上げます。
ありがとうございます。

標題について、ご教示をいただけましたら、大変に助かります。
毎々、お手数をおかけいたします。
何卒、どうぞよろしくお願いいたします。

----------------------------------------

2本のベクトル x y があります。

x <- c("りんご", "みかん", "桃", "バナナ", "西瓜")
y <- c(0, 2, 0, 2, 1)

要素の個数は同じです。

ベクトル要素の番号どうしに、対応関係があります。

x の各文字列を、y の数値だけ繰り返して、連結した文字列を作成したいと思います。

イメージ的には、以下のようになります。

"りんご"*0, "みかん"*2, "桃"*0, "バナナ"*2, "西瓜"*1

結果として、以下の文字列ベクトルを得たいと思います。

"みかん" "みかん" "バナナ" "バナナ" "西瓜"

以下、コードを作成しました。

s <- NULL
for (i in seq_along(x)) {
v <- rep(x[i], y[i])
s <- c(s, v)
}

これを、apply系関数で書き直すとすれば、どのようになるのか、
ご教示をいただけましたら、大変に助かります。

毎々、お手数をおかけいたします。
何卒どうぞ、よろしくお願いします。
//

Re: 【R】 apply系関数を使った、文字列の連結
  投稿者:青木繁伸 2020/04/29(Wed) 21:14 No. 22904 HomePage
複数の引数を取れる mapply を使うと良いと思います。
unlist と unname を使う必要があります。
unname(unlist(mapply(function(a, b) rep(a, b), x, y)))

御礼(Re: 【R】 apply系関数を使った、文字列の連結)
  投稿者:明石 2020/04/30(Thu) 10:21 No. 22905
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
毎々、ご丁寧なご教示をいただき、誠にありがとうございます。

今回も、新しい知識を教えてくださり、誠にありがとうございました。

mapply()関数の名前は聞いたことがありますが、 
自分が悩んでいた問題で、mapply()関数の使い方をご教示いただけましたので、
よく理解できました。

ありがとうございました。
ありがとうございました。
//


【R】リストからデータフレームへの変換(その2)
  投稿者:明石 2020/04/27(Mon) 17:26 No. 22900
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
毎々、ご丁寧なご教示をいただき、誠にありがとうございます。

先にご教示いただきました、 No. 22896 【R】リストからデータフレームへの変換
について、
追加のご教示をいただけましたら、大変に助かります。

毎々、お手数をおかけいたします。
何卒、どうぞよろしくお願いいたします。

----------------------------------------

以下の例題について、
apply系関数を使う、リストからデータフレームへの変換方法を、
ご教示をいただけましたら、大変に助かります。

s <- c("りんご_apple_林檎", "みかん_orange_蜜柑", "バナナ_banana", "メロン_melon")
s <- strsplit(s, "_")

リストに格納された4本のベクトルの要素の個数は、異なります。

> s[[1]]
[1] "りんご" "apple" "林檎"
> s[[2]]
[1] "みかん" "orange" "蜜柑"
> s[[3]]
[1] "バナナ" "banana"
> s[[4]]
[1] "メロン" "melon"

やりたいことを、以下にお示しをします。

> s[[1]][1]
[1] "りんご"
> s[[2]][1]
[1] "みかん"
> s[[3]][1]
[1] "バナナ"
> s[[4]][1]
[1] "メロン"
のように、s[[*]][1]のベクトル要素だけを集めて、ベクトルに格納する。

同様に、
s[[*]][2]のベクトル要素だけを集めて、ベクトルに格納する。
s[[*]][3]のベクトル要素だけを集めて、ベクトルに格納する。

以下のような3本のベクトルを得ることができましたら、データフレームを作成できます。
> x1
[1] "りんご" "みかん" "バナナ" "メロン"
> x2
[1] "apple" "orange" "banana" "melon"
> x3
[1] "林檎" "蜜柑" NA NA

s[[*]][1]のベクトル要素だけを集めて、ベクトルに格納する。
s[[*]][2]のベクトル要素だけを集めて、ベクトルに格納する。
s[[*]][3]のベクトル要素だけを集めて、ベクトルに格納する。
の操作で、もし、apply系関数が利用できるならば、
その方法をご教示いただけましたら助かります。

毎々、お手数をおかけいたします。
何卒、どうぞよろしくお願いいたします。
//

Re: 【R】リストからデータフレームへの変換(その2)
  投稿者:青木繁伸 2020/04/27(Mon) 22:08 No. 22901 HomePage
以下のようにすれば,もっともらしいとは思いますが,スマートでもなんでもないと思います。
素直にプログラミングする方がよいかと思います。
s <- c("りんご_apple_林檎", "みかん_orange_蜜柑", "バナナ_banana", "メロン_melon")
v <- sapply(s, function(u) {
str <- character(3)
a <- unlist(strsplit(u, "_"))
len <- length(a)
str[1:len] = a
str})
df <- data.frame(t(v))
rownames(df) <- NULL
df[df==""] <- NA
df
df[,1]
df[,2]
df[,3]
実行結果
> df
X1 X2 X3
1 りんご apple 林檎
2 みかん orange 蜜柑
3 バナナ banana
4 メロン melon
> df[,1]
[1] "りんご" "みかん" "バナナ" "メロン"
> df[,2]
[1] "apple" "orange" "banana" "melon"
> df[,3]
[1] "林檎" "蜜柑" NA NA

御礼(Re: 【R】リストからデータフレームへの変換(その2))
  投稿者:明石 2020/04/28(Tue) 09:12 No. 22902
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
毎々、ご丁寧なご教示をいただき、誠にありがとうございます。

今回も、ご丁寧で、ありがたいご教示をいただき、とてもうれしいです。
心から、心より、御礼を申し上げます。
ありがとうございました。

以下、補足です。
------------------------------------

s[[*]][1]のベクトル要素だけを集めて、ベクトルに格納する、
という個所を、 例えば、sapply(s, FUN,1)  などのように、

s[[*]][2]のベクトル要素だけを集めて、ベクトルに格納する、
という個所を、 例えば、sapply(s, FUN,2)  などのように、

もし、上記のように書けたとすると(書けるかどうか、その知識がありません) 
FUNは、どのように書けるのか、という強い興味がございました。

投稿の動機が不純だったような気がしており、反省しています。
やはり、プログラミングも、素直さが大切です。
//


【R】リストからデータフレームへの変換
  投稿者:明石 2020/04/25(Sat) 17:09 No. 22896
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
毎々、ご丁寧なご教示をいただき、誠にありがとうございます。

リストからデータフレームへの変換について、ご教示をいただけましたら、大変に助かります。

-------------------------------
以下、簡単な例でお示しします。

s <- c("りんご_apple", "みかん_orange", "バナナ_banana", "メロン_melon")
s <- strsplit(s, "_")

> s
[[1]]
[1] "りんご" "apple"

[[2]]
[1] "みかん" "orange"

[[3]]
[1] "バナナ" "banana"

[[4]]
[1] "メロン" "melon"

上記リストから、以下の2列からなるデータフレームを作成したいと思います。
lhs rhs
1 りんご apple
2 みかん orange
3 バナナ banana
4 メロン melon

上記リストを、unlist()関数でベクトルに変換して、
ベクトル要素の奇数番目と偶数番目を、
作成したいデータフレームの変数 lhs と rhs に代入することでも得られますが、

ご教示いただきたいことは、リストからデータフレームへの直接変換の方法です。

お手数をおかけいたします。
どうぞよろしくお願いいたします。
//

Re: 【R】リストからデータフレームへの変換
  投稿者:青木繁伸 2020/04/25(Sat) 17:44 No. 22897 HomePage
「直接変換」という意味がよく分かりません。
df <- data.frame(t(matrix(unlist(s), 2)))
ではだめなんですか?

御礼(Re: 【R】リストからデータフレームへの変換)
  投稿者:明石 2020/04/25(Sat) 19:08 No. 22899
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
毎々、ご丁寧なご教示をいただき、誠にありがとうございます。

今回も、大変に良い勉強をさせていただきました。

「直接変換」という、紛らわしい表現で、ご迷惑をおかけいたしました。
大変に失礼をいたしました。

青木先生からご教示いただきました方法で、問題解決できました。
今回も、大変に良い勉強をさせていただきました。

私が「直接変換」という表現を使った期待感として、
apply, map, reduce などの関数を使う方法があるとすれば、どのように書くのだろう、
という思いがありました。

「直接変換」という、紛らわしい表現で、ご迷惑をおかけいたしました。
大変に失礼をいたしました。
//


【R】文字列ベクトルの突き合わせ
  投稿者:明石 2020/04/14(Tue) 12:14 No. 22892
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
毎々、ご丁寧なご教示をいただき、誠にありがとうございます。

文字列ベクトルの突き合わせについて、ご教示をいただけましたら、大変に助かります。

----------------------------------------

以下の3本の文字列ベクトルがあります。

v <- c("リンゴ", "ミカン", "バナナ", "スイカ", "メロン", "モモ")
s1 <- c("バナナ","モモ")
s2 <- c("リンゴ","メロン")

s1、s2を、vと突き合わせをして、以下の行列を作成したいと思います。

【出来上がり】
リンゴ ミカン バナナ スイカ メロン モモ
s1 0 0 1 0 0 1
s2 1 0 0 0 1 0

> charmatch(v, s1)
[1] NA NA 1 NA NA 2

> charmatch(v, s2)
[1] 1 NA NA NA 2 NA

この結果を、ifelse()関数で、0/1に置換したいと思い、色々とやっていますが、うまくいきません。

ご教示をいただけましたら助かります。
お手数をおかけいたします。
//

Re: 【R】文字列ベクトルの突き合わせ
  投稿者:青木繁伸 2020/04/14(Tue) 14:21 No. 22893 HomePage
v <- c("リンゴ", "ミカン", "バナナ", "スイカ", "メロン", "モモ")
s1 <- c("バナナ","モモ")
s2 <- c("リンゴ","メロン")
#
a1 <- charmatch(v, s1) # NA NA 1 NA NA 2
ifelse(is.na(a1), 0, 1) # 0 0 1 0 0 1
# または
1 - is.na(a1) # 0 0 1 0 0 1
#
a2 <- charmatch(v, s2) # 1 NA NA NA 2 NA
ifelse(is.na(a2), 0, 1) # 1 0 0 0 1 0
# または
1 - is.na(a2) # 1 0 0 0 1 0
# 以上を踏まえ
x <- 1 - rbind(is.na(a1), is.na(a2))
rownames(x) <- c("s1", "s2")
colnames(x) <- v
x
# リンゴ ミカン バナナ スイカ メロン モモ
# s1 0 0 1 0 0 1
# s2 1 0 0 0 1 0
または %in% を使って
y = rbind(v %in% s1, v %in% s2) + 0
rownames(y) <- c("s1", "s2")
colnames(y) <- v
y

御礼(Re: 【R】文字列ベクトルの突き合わせ)
  投稿者:明石 2020/04/14(Tue) 15:11 No. 22894
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
毎々、ご丁寧なご教示をいただき、誠にありがとうございます。

今回も、大変に良い勉強をさせていただきました。
心から、心より、御礼を申し上げます。
ありがとうございました。
//


【R】文字列ベクトルの突き合わせの高速化
  投稿者:明石 2020/04/11(Sat) 13:44 No. 22889
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
毎々、ご丁寧なご教示をいただき、誠にありがとうございます。

青木先生にご教示いただきたいことが出てきました。
何卒どうぞよろしくお願いいたします。

----------------------------------------

2つの文字列ベクトルの突き合わせの高速化について、
ご教示をいただけましたら、大変に助かります。

使うデータは、2種類です。
・文字列ベクトル v
・参照テーブル tbl

・文字列ベクトル v は、
 自然言語処理で、テキストから切り出した単語の集合であり、長大です。
 表記ゆれが多くありますので、統制の必要性があります。

 表記ゆれの例示としては、"りんご","リンゴ","林檎","アップル","apple"など

・参照テーブル tbl は、
 上記の表記ゆれを統制するために、参照する表です。

 tbl は2列からなります。
 1列目は、参照文字列
 2列目は、置換文字列

 tbl の例示としては、
 りんご 林檎
 アップル 林檎
 apple 林檎
 など

やりたいことは、以下です。
・文字列ベクトル v を、for()関数でループを回す。
・v の各要素を、参照テーブル tbl の1列目「参照文字列」と照合する。
 ここで、標題の「文字列ベクトルの突き合わせ」が出てきます。
 == 演算子 を使いました。
・もし、v の要素が、tbl の1列目「参照文字列」にあれば、
 そのv の要素を、 tbl の2列目「置換文字列」で置換する。

for()関数の2重ループが原因と思いますが、
気が遠くなるほどの長い処理時間となりますので、
文字列ベクトルの突き合わせの高速化について、
ご教示をいただけましたら、大変に助かります。

お手数をおかけいたします。
//

Re: 【R】文字列ベクトルの突き合わせの高速化
  投稿者:青木繁伸 2020/04/11(Sat) 21:34 No. 22890 HomePage
以下のようなプログラムだと,実行時間はいかほどになりますか?

dict = matrix(c(
"りんご", "林檎",
"アップル", "林檎",
"apple", "林檎",
"レモン", "檸檬",
"れもん", "檸檬",
"lemon", "檸檬",
"remon", "檸檬"), byrow=TRUE, nc=2)
v = c("りんご", "アップル", "apple",
"檸檬", "レモン", "れもん", "lemon", "remon",
"イチゴ", "スイカ")
a = unname(sapply(v, function(s) {
i = which(dict[, 1] == s)
ifelse(length(i) == 0, s, dict[i, 2])
}))
実行結果
> a
[1] "林檎" "林檎" "林檎" "檸檬" "檸檬"
[6] "檸檬" "檸檬" "檸檬" "イチゴ" "スイカ"

御礼(Re: 【R】文字列ベクトルの突き合わせの高速化)
  投稿者:明石 2020/04/12(Sun) 09:53 No. 22891
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
今回も、大変にありがたい、貴重なご教示をいただきました。
ありがとうございました。

劇的な改善をはかることができました。

エラップス時間の比較です。
・青木先生の方法:16秒
・私の従来方法 :25分経過しても、まだ終わりません..........

データ量が多くなれば、この効果は極めてありがたいです。

青木先生からご教示いただきました貴重なノウハウを、勉強しています。

心から、心より、御礼を申し上げます。
//


【R】文字列のコード判定(ひらがな、漢字)
  投稿者:明石 2020/04/03(Fri) 16:11 No. 22886
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
毎々、ご丁寧なご教示をいただき、誠にありがとうございます。

青木先生にご教示いただきたいことが出てきました。
何卒どうぞよろしくお願いいたします。

----------------------------------------

3つの文字列があります。

x <- c("りんご","林檎","apple")

1番目の要素は、ひらがな のみ
2番目の要素は、漢字   のみ

どのようにしたら、
1番目の要素は、ひらがな のみ
2番目の要素は、漢字   のみ
という判定ができるのでしょうか。

お手数をおかけいたします。
何卒どうぞよろしくお願いいたします。

Re: 【R】文字列のコード判定(ひらがな、漢字)
  投稿者:青木繁伸 2020/04/03(Fri) 18:21 No. 22887 HomePage
Python での記事ですが,
https://note.nkmk.me/python-re-regex-character-type/
が参考になると思います。

R では以下のようになります。
HIRAGANA = "[\u3041-\u309F]" # ひらがなの正規表現
grepl(HIRAGANA, "あ") # TRUE
grepl(HIRAGANA, "ア") # FALSE

KATAKANA = "[\u30A0-\u30FF]" # カタカナの正規表現
grepl(KATAKANA, "ア") # TRUE
grepl(KATAKANA, "あ") # FALSE

# 簡易
KANJI0 = "[\u4E00-\u9FFF]" # 漢字の正規表現(簡易版)
grepl(KANJI0, "漢") # TRUE
grepl(KANJI0, "々") # FALSE
grepl(KANJI0, "〆") # FALSE
grepl(KANJI0, "〇") # FALSE

# 完全
KANJI = "[\u2E80-\u2FDF\u3005-\u3007\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF\U00020000-\U0002EBEF]" # 漢字の正規表現(完全版)
grepl(KANJI, "漢") # TRUE
grepl(KANJI, "々") # TRUE
grepl(KANJI, "〆") # TRUE
grepl(KANJI, "〇") # TRUE

# 複数文字の場合,すべてがひらがな,カタカナ,漢字かどうかの判定
is.all.hiragana = function(s) {
t = grepl(HIRAGANA, strsplit(s, "")[[1]])
# print(t)
all(t)
}

is.all.katakana = function(s) {
t = grepl(KATAKANA, strsplit(s, "")[[1]])
# print(t)
all(t)
}

is.all.kanji = function(s) {
t = grepl(KANJI, strsplit(s, "")[[1]])
# print(t)
all(t)
}

is.all.hiragana("ひらがな")
is.all.hiragana("ひらがなイガイ")

is.all.katakana("カタカナ")
is.all.katakana("カタカナいがい")

is.all.kanji("漢字")
is.all.kanji("漢字いがい")

御礼(Re: 【R】文字列のコード判定(ひらがな、漢字))
  投稿者:明石 2020/04/03(Fri) 19:58 No. 22888
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
毎々、ご丁寧なご教示をいただき、誠にありがとうございます。

今回も、ご丁寧で、分かりやすい、ご教示をいただき、誠にありがとうございました。

私はPythonも勉強し始めましたので、
青木先生がご紹介してくださいましたページも、あわせて、参照いたします。

いつもありがとうございます。
//


共変量で調整した二元配置分散分析
  投稿者:田崎 2020/02/05(Wed) 08:57 No. 22885
お世話になっております。
恐れ入りますが、以下の共変量で調整した二元配置分散分析について、検定手法が妥当であるかご教示いただけますと幸いです。

独立変数:BMI(3群)と飲酒状況(3群)
従属変数:血液の生化学値
共変量:年齢

二元配置分散分析を行った結果、BMIと飲酒それぞれの独立変数はP<0.001、両者の相互作用はP=0.75となりました。
そこで、BMI、飲酒状況それぞれで、3群間の差を解析したいと考えました。
この場合、SPSSでは共変量を設定したままではpost-hoc testができないため、BMIと飲酒それぞれについて共分散分析(多重比較としてBonferroni法を採用)をpost-hoc testとして行うのが良いのではと考えました。

お時間がありますときにご教示いただけますと幸いです。
どうぞよろしくお願いいたします。


VBAでの購買間隔の平均を計算
  投稿者:波音 2019/09/20(Fri) 12:27 No. 22839
業務上の事情があってExcel VBAで「購買月間隔の平均」を計算するユーザー定義関数を作っています(作りました)。
自分でチェックしたところ、正しく動作はしているようですが。。。
記憶をたよりに書いていることもあり、何かもう少しスマートに書ける気がするようなしないような。。。

という状況ですので、もう少しスマートに書く方法があればご教示いただきたいです。

やりたいことは以下のようなものです。

例えば、私が毎月購買していれば4月〜3月までの12セルすべてに「1」が入ります。
もし購買していない月があれば「空白」が入ります。
仮に4,5,6;9,10;3に購買しなかった場合、空白は3, 2, 1ということになるので、その平均は(3 + 2 + 1) / 3という計算です。

この計算結果は2.00となりますが、意味としては「この人は平均的に2ヶ月間隔で買っていない(2ヶ月間隔でブランクがある)ということ。

VBAコード

Option Explicit

' 指定したセル範囲において、入力値と入力値の間の空白をカウントし、
'  空白数の平均を計算して返す関数

' ID×日付の購買頻度クロス集計表で、IDごとの購買間隔の日数の平均を求めるために作った関数

Function betweenAve(datRng As Range)

Dim dat As Variant ' 関数の引数で取得したアドレスにある数値を格納する配列
Dim n As Integer, i As Integer ' 配列の長さn、forの繰り返し用i

Dim blankCount As Integer ' 空白セルをカウントして格納していくハコ
Dim sumN As Integer ' 購買日間隔がいくつかるかカウントして格納していくハコ

Dim mySum As Double, ans As Double ' 空白セルを累計して格納するハコ

' まずは引数で指定されたセル範囲のアドレスから、セルに入力されている値をdatへ格納
' 二次元配列として格納されるので、行ベクトルの長さを取得
dat = Range(datRng.Address).Value
n = UBound(dat, 2)

' 各種変数を初期化しておく
blankCount = 0
sumN = 0
mySum = 0

' セルの値を1つずつチェックしていき、空白があればblankCountに「1」を格納していく
'  それをmySumへ累計していく
For i = 1 To n
If dat(1, i) = "" Then ' i番目のセルが空白がどうかチェック
blankCount = blankCount + 1 ' 空白なら「1」を代入
Else
If i <> 1 Then ' 空白でない場合、そのセルが最初のセルかどうかチェック
If dat(1, i - 1) = 0 Then ' 最初のセルでなければ、1つ前のセルをチェックして空白なら、
sumN = sumN + 1 '  sumNに+1カウント
End If
Else
'何も処理しない
End If

mySum = mySum + blankCount ' mySumへ空白の数を累計していく
blankCount = 0 ' 1ループの処理が終わるたびにblankCountを初期化する
End If
Next i

' 最終セルが空白の場合、ループ内で数がカウントされないのでループ後にカウントする
mySum = mySum + blankCount

' 最終セルが空白の場合、購買日の間隔数もカウントされないのでループ後にカウントする
If dat(1, n) = "" Then
sumN = sumN + 1
End If

' 購買日数間隔の平均を計算
ans = mySum / sumN

' 戻り値
betweenAve = ans

End Function


Re: VBAでの購買間隔の平均を計算
  投稿者:波音 2019/09/20(Fri) 12:29 No. 22840
Excelのワークシートのスクリーンショットも添付します。
このようなデータイメージです。


Re: VBAでの購買間隔の平均を計算
  投稿者:ts 2020/01/10(Fri) 18:02 No. 22883
Function 空白期間の平均(対象範囲 As Range)

Dim 前, 今, 分母

分母 = 0

前 = "最初なので、前はありません"

'--------------------------------

For Each 今 In 対象範囲

If 今 = "" And 前 <> "" Then

'空白期間の始まりだから

分母 = 分母 + 1

End If

前 = 今

Next
'--------------------------------

空白間隔の平均 = WorksheetFunction.CountBlank(対象範囲) / 分母

End Function

Re: VBAでの購買間隔の平均を計算
  投稿者:aoki 2020/01/10(Fri) 19:08 No. 22884
R だと,rle() を使えば簡単です。
data = c(
"111111111111",
"000110011110",
"110011001100",
"111111000000",
"101010101010")

for (str in data) {
str.vec = unlist(strsplit(str, ""))
result = rle(str.vec)
result = result$length[result$values == 0]
if (length(result) == 0) {
print(0)
} else {
print(mean(result))
}
}
結果
[1] 0
[1] 2
[1] 2
[1] 6
[1] 1
rle もソースを見れば簡単な関数です。余計なものを除けば以下のごとし。
rle2 = function(x) {
x = unlist(strsplit(str, ""))
y = x[-1] != x[-n]
i = c(which(y), n)
lengths = diff(c(0, i))
values = x[i]
return(list(lengths=lengths, values=values))
}
両方の言語を知っていれば,移植もそう難しくはないのでは?


R 区間分割処理
  投稿者:明石 2020/01/04(Sat) 19:15 No. 22879
青木先生 様;

新年あけまして、おめでとうございます。

お忙しいところを失礼いたします、明石と申します。
毎々、ご丁寧なご教示をいただき、誠にありがとうございます。

新年早々ですが、青木先生にご教示いただきたいことが出てきました。
年始のお忙しいところ、お手数をおかけいたします。
何卒どうぞよろしくお願いいたします。

----------------------------------------
AIC による,ヒストグラム(度数分布表)の最適階級分割の探索
http://aoki2.si.gunma-u.ac.jp/R/AIC-Histogram.html
の入力データを用いて、ご説明します。
x <- c(28.67, 40.29, 10.61, 33.85, 36.19, 20.63, 9.64, 15.26,
15.53, 73.62, 63.29, 32.77, 32.28, 11.90, 54.16, 4.73, 24.67,
17.66, 25.84, 22.89, 15.68, 5.48, 36.41, 20.33, 44.58, 57.23,
65.89, 57.91, 2.39, 9.15, 10.27, 3.04, 12.35, 32.78, 44.23,
31.14, 6.03, 27.90, 28.73, 42.09, 3.99, 9.74, 6.85, 0.16, 9.26,
7.72, 34.42, 32.77, 6.80, 10.45, 29.80, 5.89, 13.56, 50.55, 0.51,
0.19, 7.19, 5.94, 11.24, 32.32, 15.27, 29.64, 10.03, 2.01, 13.89,
20.83, 27.49, 14.46, 8.22, 27.81, 33.65, 38.57, 8.66, 1.40,
23.97, 15.11, 63.32, 7.76, 1.58, 48.66, 44.46, 0.02, 38.12,
18.51, 101.75, 34.16, 27.99, 5.22, 1.82, 8.22, 4.89, 97.50, 2.10,
26.19, 10.11, 8.39, 25.83, 1.05, 25.63, 18.35)

最適階級の区間幅が、以下のようにマトリクスで得られました。
mx
[,1] [,2]
[1,] -0.03000 10.68895
[2,] 10.68895 37.48632
[3,] 37.48632 64.28368
[4,] 64.28368 101.80000

findInterval(x, c(-0.03000, 10.68895, 37.48632, 64.28368))により、
入力ベクトルデータの各要素が所属する階級番号を得ることができました。
2 3 1 2 2 2 1 2 2 4 3 2 2 2 3 1 2 2 2 2 2 1 2 2 3 3 4 3 1 1 1 1 2 2
3 2 1 2 2 3 1 1 1 1 1 1 2 2 1 1 2 1 2 3 1 1 1 1 2 2 2 2 1 1 2 2 2 2
1 2 2 3 1 1 2 2 3 1 1 3 3 1 3 2 4 2 2 1 1 1 1 4 1 2 1 1 2 1 2 2

【ご教示いただきたい内容】
mxを人間が読み取り、
findInterval(x, c(-0.03000, 10.68895, 37.48632, 64.28368))
をコーディングするのではなく、
x、mxの2つを引数として渡すだけで、
findInterval(x, c(-0.03000, 10.68895, 37.48632, 64.28368))
を自動的に組み立てて、実行して、所属する階級を得ることができたら、大変に助かります。

最適階級化したいデータが多くあるので、
人手を介さないで自動処理ができたらと調べています。

eval()関数が利用できそうな気がして調べていますが、文字列の組み立てができません。

ご教示をいただけましたら大変に助かります。
新年早々、お手数をおかけいたします。
//

Re: R 区間分割処理
  投稿者:aoki 2020/01/05(Sun) 12:34 No. 22880
findInterval(x, mx[,1]) だけでよいのでは?

Re: R 区間分割処理
  投稿者:明石 2020/01/05(Sun) 16:26 No. 22881
青木先生 様;

新年あけまして、おめでとうございます。

お忙しいところを失礼いたします、明石と申します。

新年早々、ありがたいご教示をいただき、誠にありがとうございました。
今年もいい年になりそうな予感がしています。

eval()関数を見つけて、固執して、視野が狭くなっておりました。
//


「重複を除いた数」を意味する熟語
  投稿者:ts 2019/12/27(Fri) 15:07 No. 22869
統計学かどうか微妙な質問なのですが、

「重複を除いた数」を意味する熟語をご存知ないでしょうか。

「延べ人数」に対する「実人数」のような概念を示したいのですが、人数とは限りません。

「実数」と表現すると、自然数に対する実数(real number) と混同してしまいます。

「ユニーク数」と表現する人もいますが、ユニークという言葉は
「個性的な」という印象が先行するらしく、一般の人にうまく伝わりません。

うまい言い換えを知っていましたら、ぜひ教えてください。

Re: 「重複を除いた数」を意味する熟語
  投稿者:aoki 2019/12/28(Sat) 14:07 No. 22872
unique はいろいろな訳語がありますが,そのうちの一つとして「一意」があります。
「重複を除いた数」は「一意な要素数」,そのような要素は「一意な要素」でしょう。

Re: 「重複を除いた数」を意味する熟語
  投稿者:ts 2019/12/30(Mon) 15:50 No. 22878
ありがとうございます! 
「一意」なら、他の意味に解釈しようがないので、使いやすいです。
使わせていただきます。


重回帰分析の結果解釈について
  投稿者:山本 2019/12/28(Sat) 16:18 No. 22873
青木先生

はじめまして。
山本と申します。
統計の初心者で初歩的なご質問で恐縮でございますが、宜しくお願い申し上げます。

がん患者において、服用薬剤数が患者のADLに与える影響を調査しています。
当方の仮説は、入院中の薬剤数の減少は退院時のADLにプラスに働くと考えています。
入院中に薬剤数が減少した群を減少群、維持・増加した群を増加群に対象患者を分類し、単変量解析を行いました。
目的変数を退院時ADL(Bathel Index)、単変量解析の結果から有意因子を説明変数とした重回帰分析を行ったところ、服用薬剤数の変化量と退院時ADLに有意な関係が認められました[β(95%CI):-1.26(-2.21〜-0.32)]。
服用薬剤数の変化量は、退院時の薬剤数から入院時薬剤数を引いた値です。

この結果の解釈として、薬剤数が減少すると退院時ADLにプラスに働くと言えるのでしょうか?
御多忙のところ、申し訳ございませんが、ご教示の程、宜しくお願い申し上げます。

Re: 重回帰分析の結果解釈について
  投稿者:aoki 2019/12/28(Sat) 17:20 No. 22874
> 薬剤数が減少すると退院時ADLにプラスに働くと言えるのでしょうか?

あなたは,どう思うのですか?
そして,それのどこが不安なんですか?

Re: 重回帰分析の結果解釈について
  投稿者:山本 2019/12/29(Sun) 16:59 No. 22876
青木先生

ご返信ありがとうございました。
個人的には、薬剤数の変化量とADLとに負の関連性が認められておりますので、
自分の仮説通りの結果となっているのではないかと考えています。
しかし、自分の結果の解釈が正しいのかを相談できる人がいないため、ご相談させて頂きました。
宜しくお願い申し上げます。

Re: 重回帰分析の結果解釈について
  投稿者:aoki 2019/12/29(Sun) 22:33 No. 22877
> 自分の結果の解釈が正しいのか

分析法の実際のデータでの分析例,およびその分析結果の記述例,さらにはそれを論文という観点で述べた例も数多くあると思いますので,それらを参照されれば良いかと思います。
ネット上の話ではなく,古典的な手法ではあるが学会誌の参照など,同じ分野の同じテーマでの投稿例は参考になる,ということではなく「参考にすべき」ことだと思います。


R 時系列データの変換
  投稿者:明石 2019/12/28(Sat) 12:15 No. 22870
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
毎々、ご丁寧なご教示をいただき、誠にありがとうございます。
改めて、御礼を申し上げます。

青木先生にご教示いただきたいことが出てきました。
年末のお忙しいところ、お手数をおかけいたします。
何卒どうぞよろしくお願いいたします。

----------------------------------------
時系列データで、Rに組み込みのAirPassengersがあります。
以下のようになります。

> class(AirPassengers)
[1] "ts"

> AirPassengers
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1949 112 118 132 129 121 135 148 148 136 119 104 118
1950 115 126 141 135 125 149 170 170 158 133 114 140
1951 145 150 178 163 172 178 199 199 184 162 146 166
1952 171 180 193 181 183 218 230 242 209 191 172 194
1953 196 196 236 235 229 243 264 272 237 211 180 201
1954 204 188 235 227 234 264 302 293 259 229 203 229
1955 242 233 267 269 270 315 364 347 312 274 237 278
1956 284 277 317 313 318 374 413 405 355 306 271 306
1957 315 301 356 348 355 422 465 467 404 347 305 336
1958 340 318 362 348 363 435 491 505 404 359 310 337
1959 360 342 406 396 420 472 548 559 463 407 362 405
1960 417 391 419 461 472 535 622 606 508 461 390 432

これを、単純にデータフレーム形式に変換すると、以下のようになります。
日付データが消失してしまいます。

> head( as.data.frame(AirPassengers) )
x
1 112
2 118
3 132
4 129
5 121
6 135

例えば、以下のイメージ例のように、
日付データを保持したまま、
データフレームに変換できる方法があれば、
ご教示をいただけましたら、大変に助かります。

(出来上がりイメージ例)

date AirPassengers
1 1948-02-01 112
2 1949-02-01 118
3 1949-03-01 132
4 1949-04-01 129
5 1949-05-01 121
6 1949-06-01 135


年末のお忙しいところ、お手数をおかけいたします。
//明石

Re: R 時系列データの変換
  投稿者:aoki 2019/12/28(Sat) 13:39 No. 22871
何かあるはずと,seq のヘルプを眺めて,以下のようにすれば良いとわかりました。
> data.frame(date = seq(as.Date("1949/01/01"), as.Date("1960/12/01"), by="month"), AirPassengers = AirPassengers)
date AirPassengers
1 1949-01-01 112
2 1949-02-01 118
3 1949-03-01 132
4 1949-04-01 129
:
139 1960-07-01 622
140 1960-08-01 606
141 1960-09-01 508
142 1960-10-01 461
143 1960-11-01 390
144 1960-12-01 432

御礼(Re: R 時系列データの変換)
  投稿者:明石 2019/12/28(Sat) 18:26 No. 22875
青木先生 様;

お忙しいところを失礼いたします、明石と申します。

大変にありがたいご教示をいただき、誠にありがとうございました。

Rコードだけでなく、着眼点は大変に良い勉強となりました。

拡張パッケージに頼らなくても、本体に、ちゃんとあるのですね。

おかげさまで、良い年を迎えることができます。
//


サーストンの一対比較法で求めた間隔尺度から有意差の有無を調べる方法
  投稿者:Nakamori 2019/12/26(Thu) 02:46 No. 22866
青木先生

初めまして,大学生の中森と申します.
表題の件ですが,どのように検定をすればよいか分からないため,
ご教示いただけたらと思います.

--以下事例--
現在制御手法の有効性について調べており,硬さの異なる5種類のばねを
4つの制御手法も用いて,どの制御手法が最も硬さを判別できるか検証したいと考えております.

サーストンの一対比較法を用いて,制御手法1つずつばねの硬さの間隔尺度を算出し,
どの制御手法が一番理想的(100%の判別率)に近いかまでは算出出来ました(ユーザn=7).

しかし,制御手法に対してどのようにすれば有意差が示せるかが分かりません.

お忙しいところ恐縮ですが,ご教授頂けたら幸いです.

Re: サーストンの一対比較法で求めた間隔尺度から有意差の有無を調べる方法
  投稿者:aoki 2019/12/26(Thu) 13:59 No. 22867
サーストンの一対比較法は検定手法ではないので,検定は出来ません。
実際にどのようなデータを取ったのか今ひとつはっきりしないのですが,二元配置分散分析とか乱塊法が適用できるか検討してみればいいかもしれません。

Re: サーストンの一対比較法で求めた間隔尺度から有意差の有無を調べる方法
  投稿者:Nakamori 2019/12/26(Thu) 20:20 No. 22868
青木先生

ご返信ありがとうございます.
要領を得ない質問で申し訳ありませんでした.
先生のおっしゃる通り,二元配置分散分析や乱塊法を検討してみます.

その時はまたお力になっていただけると幸いです.
重ねてお礼申し上げます.


AIC による,ヒストグラム(度数分布表)の最適階級分割の探索
  投稿者:明石 2019/12/09(Mon) 07:36 No. 22863
青木先生 様;

お忙しいところを失礼いたします、明石と申します。
毎々、ご丁寧なご教示をいただき、誠にありがとうございます。
改めて、御礼を申し上げます。

青木先生にご教示いただきたいことが出てきました。
何卒どうぞよろしくお願いいたします。

----------------------------------------

AIC による,ヒストグラム(度数分布表)の最適階級分割の探索
http://aoki2.si.gunma-u.ac.jp/R/AIC-Histogram.html

について、お聞きしたいことがございます。

> floor(2*sqrt(length(x))-1)
[1] 19

最初は、19階級です。

19階級が併合されて、
最適階級数は 4 となり、
その時のAICは、487.53 となります。

19 → 4 と階級数が大きく下がったので、
途中の階級数、ためしに、明示的に、階級数を7にして実行しました。

ans <- AIC.Histogram(x, 0.01, 7)

その時のAICは、297.84 となります。

こちらの方がAICが低いのが、気になります。

ans <- AIC.Histogram(x, 0.01, 7)などのような使い方は、間違った使い方でしょうか。

ご教示をいただければ助かります。
お手数をおかけいたします。

Re: AIC による,ヒストグラム(度数分布表)の最適階級分割の探索
  投稿者:aoki 2019/12/10(Tue) 01:19 No. 22864
最初の階級分けがあってのその後の探索ですので,出発点が異なれば異なった結果になる事は避けられないでしょう。
たとえば,極端な場合(サンプルサイズにもよりますが)出発点が100階級なんかに設定されていたら,そもそもそんな階級分けが不適切なら,両端の階級をまとめるという手順を踏むだけですから,結果も不適切になるのではないでしょうか?

Re: AIC による,ヒストグラム(度数分布表)の最適階級分割の探索
  投稿者:明石 2019/12/10(Tue) 09:36 No. 22865
青木先生 様;

お忙しいところを失礼いたします、明石と申します。

ご教示をいただき、ありがとうございました。
勉強になりました。

つまらない質問で申し訳ございませんでした。
今後、十分に気をつけます。

失礼いたします。

[1] [2] [3] [4] [5] [6] [7] [8] [9]

- J o y f u l  N o t e -
Modified by i s s o