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

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


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

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


重回帰分析の従属変数の正規性について
  投稿者:睡眠専門医 2016/07/27(Wed) 23:03 No. 22083
いつもお世話になっております。
お尋ねしたいのですが、重回帰分析の従属変数として用いたい変数が分布に偏りがあります。そこで、変数変換をしたところ、3乗根変換にて正規分布(Kolmogorov-Smirnov の正規性の検定による)に近い形となりました。
重回帰分析の従属変数は、正規分布である必要があるのでしょうか。
また、独立変数についても同様でしょうか。
以上につきましてご教示いただけましたら幸いです。

Re: 重回帰分析の従属変数の正規性について
  投稿者:青木繁伸 2016/07/28(Thu) 09:21 No. 22084
従属変数は正規分布する必要はありません。たとえば,ロジスティック回帰の場合,従属変数は二項分布(0/1の二値データ)です。このように,従属変数が二値データの場合には普通の重回帰分析は適用できません。また,y = ax^b のような場合は,たとえ x が正規分布でも,y は正規分布しませんね。両辺の対数をとって,log(y)=log(a)+b*log(x) のようにすれば,直線回帰(重回帰)に持ち込めます(もっとも,これも,非線形回帰を行う方がよいですけど)。

独立変数も正規分布する必要はないです。たとえば,ダミー変数(これも 0/1 の二値データ)など,正規分布するわけでもないし,データから検量線を引くような場合(単回帰...重回帰に発展)にも独立変数は任意に選ばれた(きれいな整数値)ですしね。

変数変換をするときは,闇雲にやるのではなく理論的根拠に従うべきです。

従属変数と独立変数の間に理論式(のようなもの)があるなら,非線形回帰を試みるのも一法でしょう。


同一サンプルによる統計処理について
  投稿者:アルビー 2016/07/20(Wed) 10:05 No. 22080
青木先生、みなさま

 アルビーです。現在、同一サンプルを用いたオムニバス科目の授業評価について分析を進めており、この関係で質問をしたく書き込ませていただきました。

 オムニバス講義を行った4人の教員に対する授業評価をx個の評価項目を用いてn人の学生が個別に行いました。個々の教員の授業に対する授業評価ではなく、授業科目に対する授業評価(満足度)を検討したかったため、収集された結果を、x個×4n人のデータ行列を作成して、授業評価に影響する授業要素(教材や教室環境)の関係をロジスティック回帰分析により分析しました。
 得られた結果を先行研究と比較したところ、妥当な予測が見出されました。
 しかしながら、刺激対象(教員)は独立していますが、同一サンプルの反応ということからすると、何らかの不都合が起こるとも考えられます。例えば、当該サンプルの特徴が過度に誇張されると推察されます。
 また、サンプル構造そのものに問題があるとしたら、どのようなことなのかお教えいただけませんでしょうか?

Re: 同一サンプルによる統計処理について
  投稿者:青木繁伸 2016/07/20(Wed) 21:03 No. 22081
完全に学生が把握されているなら,「x個×4n人のデータ行列」ではなく「4x個×n人のデータ行列」で扱うべきでしょう。なんといっても,サンプルサイズは4nではなくnなのですから(サンプルサイズの水増しは厳禁。検定はサンプルサイズにも影響されるんだから。そもそも,データは独立でないといけない)。「個々の教員の授業に対する授業評価ではなく」というのなら,xについて4人の教員への評価点の合計(または平均)として「x個×n人のデータ行列」で扱うのが妥当ではないですか?

Re: 同一サンプルによる統計処理について
  投稿者:アルビー 2016/07/21(Thu) 19:41 No. 22082
青木先生

お返事感謝申し上げます。
「4x個×n人のデータ行列」で扱うべき」とのご指摘、改めて、反省いたしました。
学生数がどうしても少ない授業でしたので、苦肉の策として考えた方法ではありますが、再度練り直したいと思います。4名の教員の授業の評価得点を他の手法で作成してみたいと思います。
本当に、ありがとうございました。


R ファイルの突合せ
  投稿者:明石 2016/07/18(Mon) 08:55 No. 22077
青木先生、
いつもお世話になり、ありがとうございます、明石と申します。

Rプログラムについて、ご教示いただきたいことが出てきました。
どうぞ、よろしくお願いいたします、

------
添付の画像をご覧ください。

お示しをしました例題は、グラフネットワークのファイルです。

da1 は、ノードリストです。
id,label,score の3列からなります。

da2 は、エッジリストです。
node1,node2,weight の3列からなります。

やりたいことは、
dat2 の node1,node2 を、
dat1 と突合せをして、label を id に置き換えた dat3 を生成出力することです。

動くプログラムはできましたが、
ノードリスト、エッジリストのサイズが膨大なので、
処理効率、R言語の良さ(ベクトル化処理、論理ベクトルなど)の観点から、
もっと良いプログラムを勉強したいと思っています。

良いお手本をお示しいただけると、大変に助かります。
どうぞ、よろしくお願いいたします。

【プログラム例】

dat1 <- read.table("dat1.csv",header=T, sep="," ,stringsAsFactors=F)

dat2 <- read.table("dat2.csv",header=T, sep="," ,stringsAsFactors=F)

v <- dat1$label

dat3 <- dat2

for(i in 1:nrow(dat2)) {

n1 <- which(is.element(v, dat2$node1[i]))
dat3$node1[i] <- dat1$id[n1]

n2 <- which(is.element(v, dat2$node2[i]))
dat3$node2[i] <- dat1$id[n2]

}

dat3

> dat3
node1 node2 weight
1 1 2 0.70
2 1 3 0.64
3 1 6 0.55
4 1 9 0.44
5 2 3 0.88
6 2 5 0.50
7 2 8 0.41
8 3 4 0.66
9 3 7 0.60
10 3 8 0.55
11 3 9 0.39
12 4 8 0.38
13 4 9 0.33


Re: R ファイルの突合せ
  投稿者:青木繁伸 2016/07/18(Mon) 13:56 No. 22078
もとのプログラムも十分早いと思いますが,
data.frame(node1=apply(outer(dat1$label, dat2$node1, "=="), 2, which),
node2=apply(outer(dat1$label, dat2$node2, "=="), 2, which),
weight=dat2$weight)

data.frame(node1=outer(dat2$node1, dat1$label, "==") %*% seq_along(dat1$label),
node2=outer(dat2$node2, dat1$label, "==") %*% seq_along(dat1$label),
weight=dat2$weight)

data.frame(node1=charmatch(dat2$node1, dat1$label),
node2=charmatch(dat2$node2, dat1$label),
weight=dat2$weight)
のようなものも。
どれがどれくらい速いか試してみてください。

【御礼】Re: R ファイルの突合せ
  投稿者:明石 2016/07/18(Mon) 18:36 No. 22079
青木先生、
いつもお世話になり、ありがとうございます、明石と申します。

良いお手本を3つもお示しくださり、大変に助かりました。

apply関数を使う方法を期待していましたので、とても勉強になります。

まだ使ったことのないouter関数があり、良い勉強になります。

お休みのところ、大変に有難いご教示をいただき、誠にありがとうございました。


多重クロス表(参加者内計画をふくむ)について
  投稿者:ふくしま 2016/07/12(Tue) 20:07 No. 22069 HomePage
初めて投稿させていただきます。
参加者内計画を含む多重クロス表の分析方法について質問させていただきます。
2011年にも似たような質問をされていた方がいらっしゃいましたが(お家のマークより,URLをご参照ください),添付させていただいた図のような多重クロス表分析には,階層対数線形分析を使えば良いのではないかと指導教員の指摘を受けましたので,階層対数線形分析で分析ができないか,もしご存知の方がいらっしゃればご教授願えますでしょうか。それとも,以前の質問に対するご回答にあったように,やはり分散分析を用いたほうが良いのでしょうか?

実験デザインは,手がかりの有無(手がかりあり vs. 手がかりなし:参加者間計画)× 刺激呈示方法の種類(A vs.B:参加者間計画)× 試行の繰り返し(1回/2回:参加者内計画)の3要因混合計画です。数値はそれぞれの試行で「誤答」,「正棄却」,「わからない」反応をした人数です。

すべての独立変数が参加者間計画である場合の分析方法はわかったのですが,対数線形分析では参加者間計画を前提とした分析手法しか見当たらず,参加者内要因を含む分析手法について参考にできるものがありませんでしたので,こちらに質問させていただきました。

拙い説明で申し訳有りませんが,不十分な点は捕捉させていただきますので,どうぞ宜しくお願い致します。


Re: 多重クロス表(参加者内計画をふくむ)について
  投稿者:鈴木康弘 2016/07/14(Thu) 07:16 No. 22073
 頼りにならない意見ですが..

 分散分析はできないんじゃないでしょうか。
 引用された発言では「高い」「低い」の2値を0,1と見なして分散分析ができたわけですが、ふくしまさんの反応は「誤答」「正棄却」「わからない」の3つあるので。

 対数線形モデルのことはなおさらわからないのですが..

 階層対数線形混合モデルというのがあればいいんでしょうけれど。
 参加者内計画を参加者間計画と強引にみなして、階層対数線形分析をして有意であれば
参加者内計画でも有意であると言っていいんじゃないでしょうか。

Re: 多重クロス表(参加者内計画をふくむ)について
  投稿者:ふくしま 2016/07/14(Thu) 13:06 No. 22074
鈴木様

ご意見をありがとうございます。
なるほど,参加者内計画を参加者間計画とみなして分析してみるというのは,試みたことがなかったなのでやってみたいと思います。

もう一つ追加でご意見をいただけるとありがたいのですが,今回の参加者内要因である「試行の繰り返し(1回/2回)」の効果は表を見る限り,ないだろうと推測しています。
そこで,すべての条件(手がかりあり×呈示方法A,手がかりなし×呈示方法A.手がかりあり×呈示方法B,手がかりなし×呈示方法B.の4条件)で「試行の繰り返しによる効果はない→判断を試行間で変える人は,変えない人よりも少ない」ということを何らかの方法で示したうえで(判断を2試行間で変えた人数と,変えなかった人数に対して比率の差の検定をしてみる・・とかでしょうか),「手がかりの有無」× 「刺激呈示方法の種類」(2×2)の参加者間要因のみの分析にしてしまうというのは,やはり分析上問題でしょうか?乱暴な方法だとは承知しているのですが・・

追加で申し訳有りませんが。ご意見をいただけると幸甚です。
どうぞ宜しくお願い致します。

Re: 多重クロス表(参加者内計画をふくむ)について
  投稿者:鈴木康弘 2016/07/15(Fri) 07:11 No. 22075
 データを1回目のだけにするなら、それでよいと思います。
同じ人に2回やってデータを増やしました、というのは反則でしょうね。

Re: 多重クロス表(参加者内計画をふくむ)について
  投稿者:ふくしま 2016/07/15(Fri) 13:12 No. 22076
鈴木様

早速のご回答ありがとうございました。
階層対数線形分析ですべての変数を参加者間としてみなして分析してみたところ,やはり繰り返しの効果は最終モデルに含まれませんでした。

繰り返しの効果を潰して,「手がかりの有無」× 「刺激呈示方法の種類」(2×2) の分析を1回目,2回目それぞれで行うかどうか,それとも1回目だけ(あるいは2回目だけ)のデータに行うか,分析方法の妥当性も含めて,再度指導教員と相談してみたいと思います。

匙を投げられることが多かったので,聞いていただき大変助かりました。
ありがとうございました。


多重ロジスティックの解析について
  投稿者:安達 2016/07/11(Mon) 22:28 No. 22067
多重ロジスティック回帰分析を行うにあたり、投入する独立変数の選択方法についてご質問させて頂きます。
独立変数を選択するにあたり、『2群間比較を行い、有意差を認めた変数間において多重共線性を考慮して独立変数とするか検討すべき。』という方と、『ロジスティック回帰分析は前述の内容を踏まなくても自動的に処理されるから関係ありそうな変数全てをいきなり独立変数としても良い。』という方がいます。
二人とも指導教官であり、どちらが正解なのか分からなくなりました。
根拠と共に正解をご教授頂けますと幸いです。
宜しくお願い致します。

Re: 多重ロジスティックの解析について
  投稿者:青木繁伸 2016/07/12(Tue) 09:00 No. 22068
この掲示板にも,何回となく繰り返し出てきています。

医学系学会誌に投稿されている論文でお手本のように採用されている「単変量ロジスティック回帰分析で有意な変数を選んで,それらを使って多重ロジスティック回帰分析をする」とうやりかたは,大間違いです。
単変量ロジスティック回帰分析の代わりに,「2群間比較を行い、有意差を認めた変数」はもっと悪い(分析手法が一貫していない)。

根拠?
多変量解析は,分析に用いた変数セットの中での結果である。単変量解析の結果を積み上げても,多変量解析の結果にはならない(だって,単変量解析で済むなら,多変量解析は不要でしょ)

たとえば,「2 群で平均値が全く同じである変数は判別に役立つだろうか。」の答えは,
http://aoki2.si.gunma-u.ac.jp/lecture/Discriminant/ans2.html

> 二人とも指導教官であり

困ったものです。片方の人は,指導教員の資格なしですね。もう一方も,自分の方が正しいと相手を説得できないのかな?

Re: 多重ロジスティックの解析について
  投稿者:安達 2016/07/12(Tue) 20:28 No. 22070
早速のご回答ありがとうございます。
自分なりにも調べ、多重ロジスティックを行うにあたり、いきなり関係しそうな因子を独立変数として投入しても問題ないと確信できました。
あと一点ご質問です。多重共線性に関しましては、多重ロジスティクの中で自動で処理されているため、改めて何か確認であったりする事は必要ないのでしょうか?医学論文では当たり前のようにこちらで除外などの処理をしており、行う事が正解なのか分からなくなりまして…
ご教授宜しくお願い致します。

Re: 多重ロジスティックの解析について
  投稿者:青木繁伸 2016/07/13(Wed) 06:09 No. 22071
> 多重ロジスティクの中で自動で処理されているため

適切な分析プログラムでは「完全な多重共線性」の場合は,問題のある変数を除去してくれますが,そこまでに至らない場合には自動処理はされません。
結果を見て,正しい判断を下す必要があるでしょう。

Re: 多重ロジスティックの解析について
  投稿者:安達 2016/07/13(Wed) 06:34 No. 22072
ご回答頂き、ありがとうございました。
先生のおかげですっきりする事ができました。
今後とも宜しくお願い致します。


重回帰分析の独立変数について
  投稿者:睡眠専門医 2016/07/08(Fri) 23:28 No. 22058
お世話になっております。
お尋ねですが、重回帰モデルに、互いに相関が比較的強い(r=0.5)2つの変数AとBを投入したところ、Bの標準化回帰係数が負となり、単相関(r=0.5)とは符号が異なりました。
ちなみにBは有意な独立変数とはなりませんでした。
符号が逆転したことは、AとBの多重共線性の問題の由来するものなのでしょうか。
VIFでの共線性診断では、AとBともに1.4前後と問題はないようでした。
さらに、Bの部分寄与率を計算したいのですが、標準化回帰係数×単相関係数で計算すると負となります。これは部分寄与率としておかしいようにみえるのですがいかがでしょうか。
以上につきましてご教示いただけましたら幸いです。

Re: 重回帰分析の独立変数について
  投稿者:青木繁伸 2016/07/09(Sat) 07:23 No. 22059
A,B と従属変数の,相関係数行列(三行三列,小数点以下五桁)とサンプルサイズ(n)を教えてください。

Re: 重回帰分析の独立変数について
  投稿者:睡眠専門医 2016/07/09(Sat) 13:48 No. 22062
お世話になります。
重回帰モデルにはA、Bの2つ以外に、C,Dという独立変数が投入されております。それも含めた相関行列をお示しします。(相関係数は小数点以下3桁となっています)
サンプルサイズは109です。
よろしくお願い申し上げます。
		      A     B   C    D	従属変数
A Pearson相関係数 1 .480** .041 .174 .378**
有意確率 (両側) .000 .670 .070 .000
N 109 109 109 109 109

B Pearson相関係数 .480** 1 .176 .251** .235*
有意確率 (両側) .000 .067 .008 .014
N 109 109 109 109 109

C Pearson相関係数 .041 .176 1 .134 .224*
有意確率 (両側) .670 .067 .165 .019
N 109 109 109 109 109

D Pearson相関係数 .174 .251** .134 1 .395**
有意確率 (両側) .070 .008 .165 .000
N 109 109 109 109 109

従属変数Pearson相関係数 .378** .235* .224* .395** 1
有意確率 (両側) .000 .014 .019 .000
N 109 109 109 109 109
**. P<0.01
*. P<0.05


Re: 重回帰分析の独立変数について
  投稿者:睡眠専門医 2016/07/09(Sat) 13:58 No. 22063
数字がずれてしまい申し訳ございません。
A対B  r=0.480
A対従属変数 r=0.378
B対従属変数 r=0.235
でいずれも有意な相関を認めました。

ご教示のほどよろしくお願い申し上げます。

Re: 重回帰分析の独立変数について
  投稿者:青木繁伸 2016/07/10(Sun) 06:12 No. 22064
A,B,C,D を使った分析であると理解しましたが。

確かに,A と B の偏回帰係数の符号が違いますが,
               t 値       P 値 標準化偏回帰係数 トレランス
A 3.4955e+00 0.00069678 0.331929 0.76408
B -3.6786e-01 0.71372401 -0.035928 0.72227
C 2.0443e+00 0.04344687 0.173429 0.95733
D 3.7416e+00 0.00029981 0.323023 0.92436
Y と B の偏相関係数を見ると -0.03604836 となっておりますね。
C と D を一緒にした場合に,B は抑制変数となっているという状況です。
            A           B          C         D         Y
A 0.56236117 0.48000000 0.04100000 0.1740000 0.3780000 上三角行列:単相関係数
B 0.44676154 0.52788829 0.17600000 0.2510000 0.2350000 下三角行列:偏相関係数
C -0.11627986 0.16153367 0.28223074 0.1340000 0.2240000 対角成分:重相関係数
D -0.05115057 0.17671263 0.02228465 0.4304721 0.3950000
Y 0.32424705 -0.03604836 0.19655316 0.3444393 0.5324173
かといって,A, B だけを使った重回帰分析では,A,B の符号は一致するものの,B の偏回帰係数は有意ではなくなりますね。

A があれば B はいらないようなので,A,C,D の3変数を使えば良いように思いますが。
             t 値       P 値 標準化偏回帰係数 トレランス
A 3.7621e+00 0.00027771 0.31585 0.96941
C 2.0198e+00 0.04594799 0.16851 0.98172
D 3.7503e+00 0.00028947 0.31746 0.95360

Re: 重回帰分析の独立変数について
  投稿者:睡眠専門医 2016/07/11(Mon) 00:23 No. 22066
詳細にご教示いただきありがとうございました。
Bについては、その抑制変数としての意味をよく考えた上で対処したいと思います。


偏寄与率
  投稿者:心療内科医 2016/07/04(Mon) 19:42 No. 22053
SPSS で重回帰分析の各説明変数の偏寄与率 partial R2 を出力するにはどうすればよいでしょうか?また各説明変数の目的変数に対する影響を比較するにはこの偏寄与率 partial R2 の大きさを比較するのが適当でしょうか?ご教授よろしくお願い申し上げます。

Re: 偏寄与率
  投稿者:青木繁伸 2016/07/05(Tue) 06:49 No. 22054
偏寄与率?知りませんでしたが,検索すると色々出てきますが,二つめにあった
http://www.niph.go.jp/soshiki/jinzai/download/etc/hotetsu2009.pdf
の 3 ページ左下のスライドに「偏相関係数...重回帰分析の編寄与率の平方根に符号を付けたもの」という記述があるので,偏相関係数を二乗すれば偏寄与率ですね...偏相関は SPSS でも求まったはず。

ただし,一つめに出てきた
http://www.snap-tck.com/room04/c01/stat/stat07/stat0702.html
の (2) 各説明変数の寄与率 という項で,「説明変数全体としての影響力は評価できても、個々の説明変数が目的変数にどれ程の影響を与えているのかということは正確には評価できない」とも書かれています(長いけど,このページは全部読んでおくと吉)

Re: 偏寄与率
  投稿者:scdent 2016/07/05(Tue) 10:12 No. 22055
重回帰分析における要因の影響を比較したいときは、各変数を標準化(平均を0、標準偏差を1に変数変換 → (x-μ)/σ)して、その値を用いて重回帰分析を行った経験があります。

そうして求まった各偏回帰係数は、各変数の1標準偏差あたりの影響度を表すので、要因間の比較が可能となります。

詳しくは、杉本先生の下記「我楽多頓陳館」を参照ください。
http://www.snap-tck.com/room04/c01/stat/stat07/stat0702.html

Re: 偏寄与率
  投稿者:青木繁伸 2016/07/05(Tue) 13:23 No. 22056
> 重回帰分析における要因の影響を比較したいときは、各変数を標準化(平均を0、標準偏差を1に変数変換 → (x-μ)/σ)して、その値を用いて重回帰分析を行った経験があります。

これによって求まるのは「標準化偏回帰係数」です。
各変数を標準化して重回帰分析をやりなおさなくても,もとの変数を使って得られた偏回帰係数と各変数の標準偏差を使って,簡単な計算で標準化偏回帰係数を求めることができます。
http://aoki2.si.gunma-u.ac.jp/lecture/Regression/mreg/mreg2.html
独立変数iの標準化偏回帰係数=独立変数iの偏回帰係数×独立変数iの標準偏差÷従属変数の標準偏差
http://www.snap-tck.com/room04/c01/stat/stat07/stat0702.html
の 注1 にも書いてありますが

Re: 偏寄与率
  投稿者:心療内科医 2016/07/10(Sun) 08:52 No. 22065
お礼が遅くなりましてすみません。各要因の影響度の比較には結局「標準化偏回帰係数」が一般的ですかね。


複数回答とカテゴリー数
  投稿者:コロン 2016/07/07(Thu) 13:38 No. 22057
いつも大変お世話になっております。

「Q あなたは○○の状況で,下のどの言葉を使いますか?」という質問があり,選択肢が5つあったとします。

15年前にも同じ調査がありますので,15年前と今の使用の仕方を比較したいと思います。

ただ15年前のデータは「複数回答」OKとなっているため,被験者数よりもケースの合計は多くなっています。

質問は2点あります。

(1)複数回答は気にせず(つまり集計されている数をそのまま利用して),15年前と今の比較を5つのカテゴリーで,2×5のχ二乗検定で分析して問題ありませんか?

(2)カテゴリーの(選択肢)数ですが,理論上はいくつくらいまで用意することは可能でしょうか?先行研究のある問題には選択肢が13個あり,2×13の検定となるのかなと思うのですが,このような表を分析する際に気を付かなければならないことがあれば合わせて教えていただけますでしょうか。

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

Re: 複数回答とカテゴリー数
  投稿者:鈴木康弘 2016/07/09(Sat) 07:47 No. 22060
頼りにならない意見ですが..

(1)だめじゃないのかな?そんなことができるなら青木先生がすぐ答えてると思うし。
(2)いくつでもOKでしょうが、増やせば増やすほど統計的に有意な結果は出なくなる。

Re: 複数回答とカテゴリー数
  投稿者:コロン 2016/07/09(Sat) 07:51 No. 22061
鈴木先生

回答がつかないので,私の聞き方がまずかったのか,あるいはとんちんかんな質問をしているのか悩んでおりました。先行研究はその先行研究としてさらに遡った研究データを使用して,複数回答があるにも関わらず,χ二乗検定をしていましたので,「あれ?いいのかな」と考えた次第です。

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


消去された質問
  投稿者:青木繁伸 2016/06/28(Tue) 19:12 No. 22052
用が済んだらあとは証拠隠滅か...なんだかな

質疑応答の概要

質問:句読点の使用頻度など,文章の特性が文章作成指導法によって変化するかどうか,被検者にたいして,指導前と指導後に14000字程度の文章を書かせ,特徴をデータ化。例えば,
    読点使用有り 読点使用なし
指導前 回数     回数
指導後 回数     回数
のようになっている。どのような検定を使えば良いか。

回答1:フィッシャーの正確確率検定を使えば良いのではないか。

再質問:フィッシャーの正確確率検定は,データが少ないときと書いてあるが,多くても使って良いのか。
査読者には,マクネマー検定を使うべきではないかといわれているが,そうなのか?

回答2:データが多いときでも使える(どんなときにも正確なんだから)。マクネマー検定は対応のあるデータの場合なので,今のデータは対応がないんだから,マクネマー検定なんかつかえない。
ところで,被検者は一人なのか?

それに対する回答:一人だ。

回答3:被検者一人じゃ統計学で扱うには不適切。サンプルサイズを決めることもできない。検定ではなく,何が何パーセント増えた(減った)で十分なんじゃないか?

それに対する回答:一人だけど,何らかの方向性をいうことはできるだろう。
でも,回答ありがとう。これを参考に査読者に回答,再投稿する。

そして,きょうの夕方,発端の投稿が消去されたので,それに端を発する質疑応答が,全部消えた。

このデータにマクネマー検定を提案するようなヘボ査読者は,この実験デザインの問題点には全く気づかないということなんだろうか。なんという学会だろうね?


偏F値によるステップワイズ変数選択の参考資料をご教示願います。
  投稿者:米谷 2016/06/23(Thu) 17:12 No. 22040
お世話になっております。
以下のウェブサイトにある偏F値によるステップワイズ変数選択について質問があり、投稿をさせていただきました。
http://aoki2.si.gunma-u.ac.jp/R/sreg.html

こちらにある関数のうち、fmax、fmin、step.outの各関数内で使われている理論式を説明がある参考資料がございましたらご教示いただきたく存じます。

特にfmax、fminのsweep処理や、step.out関数のF値や偏回帰係数の標準偏差等について、参考資料がございましたら、そちらから内容を理解したく、ご教示いただければ幸いです。どうぞよろしくお願いいたします。

米谷

Re: 偏F値によるステップワイズ変数選択の参考資料をご教示願います。
  投稿者:青木繁伸 2016/06/23(Thu) 18:13 No. 22042
古い本になりますが,奥野忠一他「正・続 多変量解析法」日科技連,に書かれていたと思います。

Re: 偏F値によるステップワイズ変数選択の参考資料をご教示願います。
  投稿者:米谷 2016/06/23(Thu) 19:19 No. 22044
青木先生

お忙しいところご教示いただき誠にありがとうござました。

偏F値を使った変数選択の理論的な流れを紹介する資料がなかなか見つからず困っておりました。その本で確認させていただきます。

米谷


Shirley-Williams検定
  投稿者:赤岳 2016/06/23(Thu) 16:38 No. 22039
いつもご指導ありがとうございます。
さて、Shirley-Williams検定をRで実行するスクリプトを青木先生のサイトで見つけました。
source("http://aoki2.si.gunma-u.ac.jp/R/src/Shirley-Williams.R", encoding="euc-jp")
出力結果をみると
> Shirley.Williams(data, group, method="up")
4 3 2
2.189899 1.091791 1.243468
となっていますが、ここに表示されている2.189899等は対照群を1としたときの大きさだと思われますが、統計量やP値は、出力されないのでしょうか。
どうかP値の出し方を教えてください。よろしくお願いします。

Re: Shirley-Williams検定
  投稿者:青木繁伸 2016/06/23(Thu) 18:11 No. 22041
ページに書いてあるように
永田靖・吉田道弘(1997)「統計的多重比較法の基礎」サイエンティスト社
を参考にプログラムを書いたのですが,P 値の求め方は,書いてなかったと思います。
付表を参照だったかな?
出力される数値が何を表すかを含め,前述の本を見てください。

Re: Shirley-Williams検定
  投稿者:赤岳 2016/06/23(Thu) 18:33 No. 22043
青木先生
早速お返事いただきありがとうございました。
参考本を確認してみます。


非正規分布の検定について
  投稿者:下山 2016/06/18(Sat) 18:43 No. 22030
度々お世話になります。

ある要素Aの有無に対してスコアB(%)、スコアC(%)というN=150程度の表が有ります。
A B C
有 10% 17%
無 15% 18%
有 20% 28%
・・・

A-B、A-Cについてそれぞれ要素Aの有無とスコアの間に差が有るか、有るとすればどちらが大きいかを検定したいと考えています。B、Cの分布は正規性検定ではどちらも非正規という結果でしたので、U検定をしようかと思いました。U検定ではBもCもP<0.01でした。分散分析を行ったところA-Bは有無の2群間で分散は等しくなく、A-Cは等分散という結果になりました。

A-Cは中央値で評価しようかと思いましたが、A-Bについては有群と無群どちらがスコアが高いかをどう評価しようか、と壁に当たりました。
どのような方法がありますでしょうか?中央値を用いても良いのでしょうか?

もし正規性の検定以降の手順についても、間違っているところがありましたらご指摘いただけましたら大変ありがたく存じます。どうぞよろしくお願いいたします。

Re: 非正規分布の検定について
  投稿者:青木繁伸 2016/06/18(Sat) 20:32 No. 22031
そもそも,

> A B C
> 有 10% 17%
> 無 15% 18%
> 有 20% 28%
> ・・・・

というデータの見方がわかりません。

それと,検定に必要なのは,% ではなく,実数です。
本当のデータ(実数)が明らかになって困るとは思えないので,それぞれが何を表すかは言う必要はないのだから,ちゃんと説明する方がよいと思いますけど?
じゃないと,返答のしようがない。

Re: 非正規分布の検定について
  投稿者:下山 2016/06/19(Sun) 08:38 No. 22032
青木先生、失礼いたしました。
BとCはそれぞれ異なる計算式から算出した予測死亡率で、どちらもいくつかの調査項目から計算しています。ですので%単位になっています。

取り急ぎお返事させていただきました。

Re: 非正規分布の検定について
  投稿者:青木繁伸 2016/06/19(Sun) 17:49 No. 22033
検定できないでしょう

Re: 非正規分布の検定について
  投稿者:下山 2016/06/19(Sun) 20:39 No. 22034
青木先生 ご回答ありがとうございます。
このデータに関しては検定できない、ということで分析から外す方向で考えます。

後学のために以下のような場合にどう評価していくかも教えていただけましたらありがたく存じます。

N=150
A=某塾に通っているかどうか
B=期末試験の点数(通塾の有無で分けた場合等分散ではない)
C=統一模試の点数(通塾の有無で分けた場合等分散である)

として、点数がどちらも正規分布していない場合、通塾の有無で期末試験の点数に差があるか、あるとすればどちらが点数が高い傾向があるのか、および通塾の有無で統一模試の点数に差があるか、あるとすればどちらが点数が高い傾向があるのかを評価したい。この場合であればデータは実数となるかと思いますが、ご教授いただけましたらありがたく存じます。
大変恐縮でございますが、どうぞよろしくお願いいたします。

Re: 非正規分布の検定について
  投稿者:青木繁伸 2016/06/19(Sun) 21:04 No. 22035
この例と,前のと,どのような関係があるのですか?
本当は関係がないのに,別の問題だとして回答したことを(つまり,新たに提示されたデータについてはこれこれの検定が適切でしょうということを),あなたが勝手に(状況は全く違う)この問題にも適用するかもしれないという懸念があるのに,回答できないでしょう?

抽象的なことばかり言っていないで,データの性質も含めて記述しないと,なんの回答もできません(私のせいにされるのは心外で,そんなことこわくて,できません)。

Re: 非正規分布の検定について
  投稿者:下山 2016/06/20(Mon) 14:06 No. 22036
青木先生

検定を根本的に理解しておらず多々考え違いをしていることを痛感いたしました。ご気分を害してしまいましたことお詫びいたします。

理解が乏しい中で自分なりに解釈すると、正規分布が仮定できる場合にしろ分割表にしろ非正規分布の場合にしろ、実際のデータを吟味しないといけなくて、初心者向けの統計本に記載されているような、パラメトリックなら対応の有無を考慮してt検定やANOVAで、分割表ならχ二乗で、ノンパラメトリックなら・・・で、というように馬鹿の一つ覚えで1対1に決めてできるものではないということかと考えました。

必要十分なデータの性質についての情報を記載できる自信はありませんが(データの性質といわれても自分には分布や分散、外れ値くらいしか思いつかない程度の理解で)、添付の画像のようなデータです。Logitはそれぞれ異なる論文に記載されていた回帰式より計算しております。

はじめに先生がご回答されたように、こういうデータは検定できないのでしょうか(あるいは検定を行う意味・意義がない、検定すべきではない)。


Re: 非正規分布の検定について
  投稿者:鈴木康弘 2016/06/22(Wed) 07:15 No. 22037
 せっかく具体的なデータを出していただいたのに、一般論ですが、
 正規分布し分散も等しい2変数を利用して、2群に差があるかを検定するなら、多変量分散分析を使うはずです。

 でもこの条件に合わなければこれは使えない。
 だから2変数を一度に使うことはあきらめざるをえない(と思う)。

 正規分布もしてないし分散も異なる2群を単変量で検定するのだったら、Brunner-Munzel検定というのがあるようです。

Re: 非正規分布の検定について
  投稿者:下山 2016/06/22(Wed) 20:12 No. 22038
鈴木先生

御助言ありがとうございます。Brunner-Munzel検定は初めて聞きました。
調べてみたいと思います。


手法について
  投稿者:コロン 2016/06/12(Sun) 12:02 No. 22026
いつもお世話になっております。

早速ではございますが、統計手法についてご教授ください。

やりたいことは、○○の性格の学習者は△△の単語学習ストラテジーを取るようだ、を見たいと思います。

以下は案です。

性格については心理学の質問紙法を用いて被験者集団を分類することとします。また単語の学習ストラテジーについても単語学習のストラテジー質問項目を作成して、因子分析を行って分類します。

ただこれらをどのように関連付けて分析すべきなのかよくわかりません。因果の分析なのか、単純に、例えば、3×4の表を作成して、偏りの検定なのか?。

ご教授お願い致します。

Re: 手法について
  投稿者:青木繁伸 2016/06/12(Sun) 22:01 No. 22027
まずは,「○○の性格の学習者は△△の単語学習ストラテジーを取るようだ」ということについてある程度の客観性のある事実を確認する必要があるというのは置いておくとして。
「単語学習のストラテジー質問項目を作成」は重要なポイントでしょう。
「性格については心理学の質問紙法を用いて被験者集団を分類」というのも,適切に被検者集団が分類できるのかというのも。
これらについて,適切な測定ができれば,そのデータの分析方法というのは決まるでしょう。適切な測定ではないデータであれば,どんな分析をしても異論が出ることでしょう。

Re: 手法について
  投稿者:コロン 2016/06/13(Mon) 09:58 No. 22028
青木先生

早速のお返事ありがとうございます。

性格については,あくまで「例」ではありますが,4つくらいに分けられるようなものを使う予定です。これによって,「この学習者はタイプA,この学習者はタイプB」というように,カテゴリカルな値を被験者に与えます。

語彙学習ストラテジーですが,語彙学習ストラテジーに関するアンケート項目は,これまでにもたくさんされており,それらを効率的に使用し,今回の調査のための質問項目を作成いたします。それを因子分析して,例えば,4因子構造だとなった場合,それぞれの因子得点を利用したいと考えています。

「客観性ある事実を確認する必要がある」というのはその通りだと思います。また性格も4通りだけに分けることが可能なのかといった異論は出てくると思います。あくまで例えばということで,ご理解いただき,上述のデザインへのコメント,そして分析手法についてアドバイスをいただければと思っております。

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

Re: 手法について
  投稿者:青木繁伸 2016/06/15(Wed) 20:34 No. 22029
多変量解析手法をすべてを統合した,共分散構造分析(構造方程式モデリング、SEM)とか?


2X3分割表のFisher検定の結果の記述について
  投稿者:下山 2016/06/04(Sat) 12:51 No. 22018
青木先生、お忙しいところ恐れ入ります。

ある患者層で特定の薬の処方の有無と性別や年齢層などとの関連を調べるような調査を行いました。
性別は2x2の分割表、年齢層は2x3の分割表を作成しそれぞれについてFisher検定を行いました。2x2表の結果についてはP値、Odds比、95%信頼区間を記載し、2x3表についてはOdds比や信頼区間はそもそも計算できないのではないかと考えP値のみ記載し、OR、CIはnot availableとした表を結果として提出したところ、

・単変量解析はフィッシャーの正確確率検定を行ったと記載がありますが、通常この検定は2×2表に適応されると思われます。年齢層の項目は3つに分かれておりますがこれもフィッシャーの正確確率検定が行われたのでしょうか?
・年齢層のORがnot availableであることや、p valueが一つしか無い点が、なぜか解りませんでした。variableのどれかがreference groupとなり、そのreferenceに対するodds ratio、その95%CI,p valueがそれぞれ出るはずです。間違った分析をされているか、方法論の説明が不十分かのどちらかと思います。

という査読コメントをいただきました。2x3表でp=0.4でしたので各群間での比較は行わずn/aと記載しておいたのですが、このような場合には最初から各群間比較を行うものなのでしょうか?それとも指摘されたとおり間違った分析を行ってしまったのでしょうか。
(なお、有意差が有りそうな場合は、有意水準の調整をした上で個々の群間で総当りのFisher検定を追加で行うことを考えていました)

初歩的な内容の質問で大変恐縮でありますが、何卒よろしくお願いいたします。

Re: 2X3分割表のFisher検定の結果の記述について
  投稿者:青木繁伸 2016/06/05(Sun) 07:59 No. 22019
> 単変量解析はフィッシャーの正確確率検定を行ったと記載がありますが、通常この検定は2×2表に適応されると思われます。

不勉強な査読者もいるものだと,驚きますね。どこの学会ですか。

> 年齢層のORがnot availableであることや、p valueが一つしか無い点が、なぜか解りませんでした。

「2x3表でp=0.4でしたので各群間での比較は行わずn/aと記載しておいた」ということをはっきり書いてやらないと,この馬鹿査読者には通じないのでしょう。

しかたないので,よく説明してやってください。

> 有意差が有りそうな場合は、有意水準の調整をした上で個々の群間で総当りのFisher検定を追加で行う

この場合には,検定の多重性に注意してくださいね。

Re: 2X3分割表のFisher検定の結果の記述について
  投稿者:下山 2016/06/05(Sun) 08:17 No. 22020
青木先生

ご回答くださりありがとうございます。分析に自信を失いかけて凹んでおりましたが、おかげさまで本文への追加記載とコメントへの返信を自信を持ってできます。

Re: 2X3分割表のFisher検定の結果の記述について
  投稿者:鈴木康弘 2016/06/06(Mon) 06:53 No. 22021
 年齢層で2X3分割表を作ったということは、分割表に順序があるんですよね?
 そういう場合にFisherの検定をしていいのかどうか?

 一人一人の年齢データが入手できるなら、t検定をしておしまい。(オッズ比がほしければロジスティック回帰。)
 それが入手できず、分割表データにせざるをえないんだったら、カテゴリーごとに1点2点3点と点数をつけて、マン・ホイットニーをするのがオーソドックスな方法では?

Re: 2X3分割表のFisher検定の結果の記述について
  投稿者:下山 2016/06/08(Wed) 13:06 No. 22022
鈴木先生

ご指摘ありがとうございます。確かに年齢は順序尺度という扱いでした。年齢についての生データは生後数日、数か月、○歳と単位がバラバラなのでカテゴライズするのが妥当と考えております。
もし年齢ではなくて主要疾患(呼吸器、循環器、消化器)というような順序がないようなものならFisherの検定でも構わない、という理解でよろしいでしょうか。

Re: 2X3分割表のFisher検定の結果の記述について
  投稿者:鈴木康弘 2016/06/09(Thu) 10:21 No. 22023
その通りと思います。

Re: 2X3分割表のFisher検定の結果の記述について
  投稿者:scdent 2016/06/10(Fri) 09:43 No. 22024
年齢層の2x3分割表についてですが、年齢層が順序尺度だからといって安易にマン・ホイットニーにするというのは問題があります。

中心位置の相違を検出しようとするならそれでよいのですが、分布の違いを見る場合はχ2(あるいはFisher)検定の方が適していたりします。

例をあげますと、薬剤群では低年齢層と高年齢層で副作用発現率が高く、プラセボ群では中年齢層で副作用発現率が高い場合、マン・ホイットニーではその違いが検出できないのです。

中年齢層では活性が高いので副作用発現率が高いのですが、薬剤の影響で低年齢や高年齢層に副作用が多発するという可能性は十分あります。

安全性を扱うものとして、こういう特性を見逃すことがないようにしなくてはなりません。

Re: 2X3分割表のFisher検定の結果の記述について
  投稿者:鈴木康弘 2016/06/10(Fri) 13:52 No. 22025
なるほど。


R 文字列の生成
  投稿者:明石 2016/05/27(Fri) 22:10 No. 22015
青木先生、
いつもお世話になり、ありがとうございます、明石と申します。

Rプログラムについて、ご教示いただきたいことが出てきました。
どうぞ、よろしくお願いいたします。

------
添付の画像をご覧ください。

お示しをしました例題は、説明のためにサイズを小さくしてあります。

実際のデータは大規模であり、0要素が多くあるスパースなデータです。

入力データ("in.csv")を読み込み、以下のルールで、
テキストファイル("out.txt")を生成出力するRプログラムを作成しています。

【ルール】

・表のセルの数値(非負の整数)を読み取り、
 数値が1以上の場合には、
 セルの列名("aaa", "bbb", "ccc", "ddd", "eee")を、
 セルの数値の回数分を繰り返した文字列に置き換える。

・表のセルの数値(非負の整数)を読み取り、
 0の場合には、空文字に置き換える

・文字列のセパレータは、半角スペースとする。

以下のRプログラムを作成しましたが、2つの問題が残ります。
私の力では、解決できません。

良いお手本をお示しいただけると、大変に助かります。
どうぞ、よろしくお願いいたします。

【問題点】

・実際に利用するデータは大規模であることから、
 多重ループの処理を回避して、性能向上を図りたい。

・実際に利用するデータは0要素が多いことから、
 生成出力したテキストファイルには、区切り記号の半角スペースが多く混入します。

 この冗長な半角スペースを、gsub()関数で置換して削除しようと試みましたが、
 私の知識では、できませんでした。

以下、プログラムです。

dat <- read.table("in.csv",header=T, sep=",")

nr <- nrow(dat)
nc <- ncol(dat)

# セルの数字を文字列に置き換える

for(i in 1:nr) {
for(j in 1:nc) {

r <- dat[i,j]

if (r >= 1) {
v <- rep(colnames(dat)[j], r)
v <- paste(v , collapse=" ")
dat[i,j] <- v
}

if (r == 0) {
dat[i,j] <- ""
}
}
}

gsub(" ", "", dat)

write.table(dat, "out.txt", col.names = F, row.names = F, quote = F, sep = " " )


Re: R 文字列の生成
  投稿者:青木繁伸 2016/05/27(Fri) 23:12 No. 22016
テストデータを「生成する」プログラムも付けてくれるといいのだけど。
# テストデータ生成
dat = matrix(0, 300, 52)
colnames(dat) = c(LETTERS, letters)
set.seed(123)
idx = cbind(sample(300, 300*26, replace=TRUE),
sample(52, 300*26, replace=TRUE))
dat[idx] = sample(6, 300*26, replace=TRUE)
dat = data.frame(dat)
# 処理プログラム
names = colnames(dat)
fn = "out.txt"
if (file.exists(fn)) invisible(file.remove(fn))
invisible(apply(dat, 1, function(x) cat(rep(names, x), "\n", file=fn, append=TRUE)))
20倍くらいは速い。ただし,行末に1つ空白が付く。これを回避するには若干の追加処理が必要。

【御礼】 Re: R 文字列の生成
  投稿者:明石 2016/05/28(Sat) 06:52 No. 22017
青木先生、
お忙しいところを失礼いたします、明石と申します。

ご丁寧なご教示をいただき、誠にありがとうございました。
また、助けていただきました。

投稿に際して、テストデータの件、不手際がございましたこと、お詫びいたします。

今後、投稿させていただく際には、お手を煩わせることが少なくなるように注意をいたします。

ご教示くださいました技は、あまりにも研ぎ澄まされていて、にわかには理解できませんので、
この土日、楽しみながら、じっくりと勉強させていただきます。

また、先生がお書きになられたように、確かに、体感的には数十倍の速度があります。

大変に良いお手本を示してくださり、心から御礼を申し上げます。
ありがとうございました。


母平均の区間推定における標準正規分布表の利用について
  投稿者:hase 2016/05/17(Tue) 12:57 No. 22010
青木先生・皆様

統計学を勉強し直しているhaseと申します.

母平均の区間推定における標準正規分布表の利用についてご教示下さい.
なお,手元の教科書付属の正規分布表にはPr(0 ≦ z)の値が小数第4位まで載っております.

99%信頼区間(=有意水準0.01)のとき,0.99 = 0.4950 * 2ということで,表中の0.4950に対応するzを探したところ,0.4950丁度はなく,0.4949(z=2.57)と0.4951(z=2.58)の2つが最も近い値として見つかりました.

Rでqnorm(0.005, lower.tail=FALSE)とすると,2.575829となることから,より値の近い0.4951(z=2.58)を使うべきでしょうか?

それとも,
0.4951(z=2.58)では区間推定した母平均が過大な推定値となることから,0.4949(z=2.57)を使うべきでしょうか?

この例に限らず,信頼区間から出てくる(0.4950に相当する)値に最も近い表中の値を用いるべきなのか,それとも,その値以下の最も大きい値を用いるべきなのか,統計学としてはどちらの考え方が正しいのでしょうか?

※以下のURLでの議論のように,精度の良い正規分布表を使う,あるいはRなどコンピュータを使って計算することが出来ない場合での疑問です.
http://aoki2.si.gunma-u.ac.jp/lecture/mb-arc/arc033/06569.html

以上,よろしくお願いいたします.

Re: 母平均の区間推定における標準正規分布表の利用について
  投稿者:太郎 2016/05/17(Tue) 16:41 No. 22011
「正規分布表」、「補間」でググるとこの答えに近いものがでてきました。

Re: 母平均の区間推定における標準正規分布表の利用について
  投稿者:hase 2016/05/17(Tue) 18:49 No. 22012
太郎さん,ありがとうございます.

滋賀大学の熊澤先生の資料で線形補間法についてはよく分かりました(昔習ったような気もします).
http://www.biwako.shiga-u.ac.jp/sensei/kumazawa/toukeigaku/06/0623k.pdf
線形補間法の結果は0.2575となるので,qnorm(0.005, lower.tail=FALSE)から求めた2.575829と比較しても,過大ではありません.
ただ,線形補間には過大推計の可能性があるので,少し怖い気もします.

一方,
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1233951557
のscairflaimさんの回答にある,
> 表にはP(X<x)≦0.1になる値がないときは、0.1より小さい方の(以下なので、大きくなってはいけない)0.1に近い値を選んでもほぼ問題ないです。なぜなら0.1以下なら条件を満たすし、0.1との差はすごく小さいので、確率に出てくる影響は小さいのでその差は無視できるからです。
> そもそも表を使いなさいと言われたら、そこまでの精度は求められていません。
という考え方なら,少なくとも過大推計とはなりません.

どちらの(あるいは別の)考え方が適切なのでしょうか?
引き続きご教示いただければ幸いです.

Re: 母平均の区間推定における標準正規分布表の利用について
  投稿者:hase 2016/05/18(Wed) 10:05 No. 22013
> どちらの(あるいは別の)考え方が適切なのでしょうか?
この記述が分かりづらいので補足いたします.

1.線形補間法が一般に使われることは分かりましたが,過大推計の恐れがあるように思います.これは気にしないで良いものでしょうか?

2.scairflaimさんの回答の考え方は,適切なものでしょうか?

3.もし,1.と2.どちらも選択できる場合は,どちらを取るのが適切なのでしょうか?

4.あるいは,他により適切な方法があるのでしょうか?

Re: 母平均の区間推定における標準正規分布表の利用について
  投稿者:青木繁伸 2016/05/19(Thu) 11:00 No. 22014
実際問題として,母分散が既知と(仮定)した時点で推計値の精度は落ちているわけで,Z=2.57, 2.58 のいずれを取るとしても,標準誤差(σ/√n)の 0.39 % ほどしか推計値の違いはないわけで,どっちをとっても過大推計・過少推計の問題は生じないでしょう。
試験やレポートの場合であっても,どちらに基づいて答えを書いても○になると思いますが。


ばらつき補正係数
  投稿者:すーさん 2016/05/14(Sat) 18:16 No. 22003
青木先生

重要顧客の担当者から下記質問をメールで受けて困っていたところ、このサイトにたどり着きました。どうぞよろしくお願いします。

少ないデータ数で求めたばらつきは、全体の集団(母集団:n=∞)のσより小さくなるため、データ数を考慮し、ばらつきを補正する必要があることは理解できるのですが、下記の補正係数(1.45、1.17)はどのようにして求めたものか? 質問を受けています。

正規分布の場合、
  n=10で算出したσの1.45倍が母集団のばらつき、
   n=20で算出したσの1.17倍が母集団のばらつき

 n=30、100・・・などの場合、補正係数はどうやって求めるのか?
何卒、ご教示をよろしくお願いいたします。

Re: ばらつき補正係数
  投稿者:青木繁伸 2016/05/14(Sat) 21:39 No. 22004
2010 年頃の質疑応答の記録があります。当方の掲示板の参照もありますが,結論としては「よくわからない」ということになっていますかね。

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1436950684

Re: ばらつき補正係数
  投稿者:すーさん 2016/05/15(Sun) 11:08 No. 22007
青木先生

早速のご回答を頂き大変ありがとうございます。

記載頂いたサイトは私も2日前にチェックさせて頂いたのですが良く判りませんでした。
補足:先方からは添付の資料を頂いておりますが、この図の出処が不明です。

 カイ2乗分布から求めた90%信頼区間の上限値?、不偏分散と標本分散から求めたシグマの比?、補正係数として1/c4で計算しても一致しません。
(エクセルで乱数を発生させシミュレーションもして見たのですが、標本標準偏差であっても不偏推定量である(=stdev関数)を用いることで、n=100以上であれば、おおよそ母標準偏差に近い値となっている)

1)結論はやはり「よくわりません」という事になりますでしょうか?
2)サンプル数は100以上であれば補正の必要なしと考えて良いでしょうか?

ご面倒をお掛けしますが宜しくお願いいたします。

Re: ばらつき補正係数
  投稿者:青木繁伸 2016/05/15(Sun) 11:14 No. 22008
「出典は某工業製品メーカー作成の統計教育テキスト」ということなのですが,そちらへ問いあわせる...にしても,「某工業製品メーカー」では無理ですね?

Re: ばらつき補正係数
  投稿者:すーさん 2016/05/15(Sun) 19:01 No. 22009
これ以上は調査不可能といった所ですね。
このような質問にお付き合い頂き大変有難うございました。
また何か出てきましたら質問させて頂くかも知れませんが宜しくお願いします。


R str()関数の結果の取り出し、整形出力
  投稿者:明石 2016/05/13(Fri) 21:51 No. 22000
青木先生 様;

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

データフレームの構造は、str()関数で取得することができます。

以下に簡単な例でお示しをしますように、
str()関数の結果から、列の名前と型を、2列のデータフレームとして出力したいと思います。

str()関数の結果の取り出し方法が分からないため、作成することができません。

何卒、ご教示をよろしくお願いいたします。
失礼いたします。

> str(dat)

'data.frame': 1000 obs. of 9 variables:
$ sid : chr "X100111" "X100115" "X100123" "X100143" ...
$ name : chr "安田博美" "木村克己" "桜井真二" "入江優秀" ...
$ gender : Factor w/ 2 levels "女","男": 1 2 2 2 1 2 1 1 1 2 ...
$ BirthDay : Date, format: "1999-12-09" "1981-07-21" ...
$ BloodType: Factor w/ 4 levels "A","AB","B","O": 3 1 3 4 4 4 2 1 4 3 ...
$ class : Factor w/ 3 levels "1","2","3": 3 2 2 3 2 1 3 1 1 1 ...
$ score1 : num 3.3 4.1 3 1.9 3.6 2.6 4.5 4 2 3.2 ...
$ score2 : num 3.3 4.1 2.5 3 4.4 2.8 3.9 3.8 3.1 4.8 ...
$ score3 : num 2.5 3.8 3.9 3.3 3 3.1 4.4 4.1 2.8 4.8 ...

⇒ 以下のような、データフレームを作成したいと思います。

名前,型
sid,chr
name,chr
gender,Factor
BirthDay,Date
BloodType,Factor
class,Factor
score1,num
score2,num
score3,num

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

Re: R str()関数の結果の取り出し、整形出力
  投稿者:青木繁伸 2016/05/14(Sat) 05:12 No. 22001
a = data.frame(names(iris), sapply(iris, class))
colnames(a) = c("名前", "型")
print(a, row.names=FALSE)
などはどうでしょうか

Re: R str()関数の結果の取り出し、整形出力
  投稿者:明石 2016/05/14(Sat) 05:40 No. 22002
青木先生 様;

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

いつもながら、研ぎ澄まされたエッセンス!

勉強になりました。

sapply についても、勉強させていただきます。

心から御礼を申し上げます。


単変量と多変量で結果の違う説明変数の解釈
  投稿者:りんご 2016/05/04(Wed) 19:57 No. 21993
青木先生
お世話になります。
どうぞよろしくお願い申し上げます。

縦断研究でリスク因子を求めたいと思い、ロジスティック回帰分析を行いました。
単変量のロジスティック回帰分析では有意にならない変数が、多変量で行うと有意になりました。
このような説明変数はどのように解釈すればよいのでしょうか。
何か他の因子との組み合わせでたまたま重要に見える見かけ上の有意な変数で、意味のないものと考えればよいでしょうか。

Re: 単変量と多変量で結果の違う説明変数の解釈
  投稿者:青木繁伸 2016/05/05(Thu) 06:26 No. 21994
この掲示板でも何回も取り上げましたが,単変量のロジスティック回帰分析で有意な変数だけ集めても,多変量ロジスティック回帰分析にはなりません。

回帰分析に限らず,データ解析は分析に用いた変数セットにおける分析結果になります。単回帰分析で有意であっても,他に重要な変数があった場合,その重要な変数と一緒に多変量回帰分析すれば,単回帰で有意であった変数が,取るに足らない変数として捨てられてしまうのは当然でしょう。重要な変数が欠落した多変量解析の結果は,重大な欠陥があるでしょう(単回帰分析はまさにそのような危険性のある分析法。そんな分析結果を重要視する意味がわからない)。
逆の例もあります。例えば,2群で平均値の同じ説明変数だけを使ってを使った判別関数で,は,そんな変数が無意味であるのは自明でしょう。しかし,その平均値が同じになる説明変数を使った方が判別率が高くなる例があるのです。説明図

> 単変量のロジスティック回帰分析では有意にならない変数が、多変量で行うと有意になりました。

まず,単変量の結果を述べて,次に,多変量の結果を述べるというのが医学論文のお手本としてよく取られる筋書きですが,統計学的に問題があるのは明らかなので,駆逐されるべきと思っております。

Re: 単変量と多変量で結果の違う説明変数の解釈
  投稿者:りんご 2016/05/05(Thu) 11:35 No. 21997
青木先生

ご回答いただき、誠にありがとうございます。
単変量の結果を述べて、次に多変量の結果を述べるということがあまり意味がないということについてとても勉強になりました。

今回の質問について、併せて教えていただきたいのですが、
多変量である変数が有意になった場合、単変量で有意でなかったという結果を無視して、多変量の変数セットの中ではその変数が重要な意味を持つとシンプルに解釈してよいでしょうか。

このような単変量:有意でない⇔多変量:有意 という乖離が起きるのは、多変量の変数セットの中に重要な変数が欠落していることを示唆していると考えるべきでしょうか。

すみませんが、ご教示いただけますと幸いです。
どうぞよろしくお願い申し上げます。

Re: 単変量と多変量で結果の違う説明変数の解釈
  投稿者:青木繁伸 2016/05/05(Thu) 17:19 No. 21998
> 多変量である変数が有意になった場合、単変量で有意でなかったという結果を無視して、多変量の変数セットの中ではその変数が重要な意味を持つとシンプルに解釈してよいでしょうか。

> このような単変量:有意でない⇔多変量:有意 という乖離が起きるのは、多変量の変数セットの中に重要な変数が欠落していることを示唆していると考えるべきでしょうか。

繰り返しますが,「データ解析は分析に用いた変数セットにおける分析結果になります」ということに尽きます。

分析に用いた変数セットが妥当かどうかは,あなた以外の第 3 者にはわからない。

Re: 単変量と多変量で結果の違う説明変数の解釈
  投稿者:りんご 2016/05/05(Thu) 20:54 No. 21999
青木先生

ご教示いただき、どうもありがとうございました。
多変量解析の限界について、とても勉強になりました。
ご回答に深謝致します。


Rのソート(複数キー)
  投稿者:奈々瀬 2016/05/04(Wed) 10:26 No. 21992
青木先生、
お世話になります、奈々瀬と申します。
どうぞよろしくお願いいたします。

−−−
複数キーを指定する、Rのソートについてご教示をいただけたら助かります。

ネットで調べましたら、sort.list関数を利用する例が幾つかありました。
私が所望する記載がありませんでしたので、投稿させていただきます。

添付ファイルに、簡単なサンプルデータをお示しをします。

このデータで、例えば、以下の3つの項目
「経済力」「性格」「容姿」の優先順に降順ソートした場合の
Rプログラムを例示していただけると助かります。

つまり、
まずは「経済力」で降順ソートし、
「経済力」の値が同じ場合には、「性格」で降順ソートし、
さらに、「性格」の値が同じ場合には、「容姿」で降順ソートします。

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


Re: Rのソート(複数キー)
  投稿者:青木繁伸 2016/05/05(Thu) 06:57 No. 21995
order 関数を使います(詳しい説明は ? order で)

order の引数で,優先順に指定します。降順でソートする変数は - を付けてやればよいですね。
d = data.frame(
経済力=c(2,1,2,3,2,1,1,4,4,1,3,2,2,1,2),
性格 =c(5,4,5,5,5,5,4,5,5,3,5,5,4,4,5),
容姿 =c(5,2,4,4,3,5,3,2,4,4,4,4,3,4,5))
d[order(-d$経済力, -d$性格, -d$容姿),]
結果
経済力 性格 容姿
9 4 5 4
8 4 5 2
4 3 5 4
11 3 5 4
1 2 5 5
15 2 5 5
3 2 5 4
12 2 5 4
5 2 5 3
13 2 4 3
6 1 5 5
14 1 4 4
7 1 4 3
2 1 4 2
10 1 3 4
plyr パッケージの arrange 関数を使うというのもありますが,わざわざそんなもの使わなくても。

御礼: Re: Rのソート(複数キー)
  投稿者:奈々瀬 2016/05/05(Thu) 08:15 No. 21996
青木先生、
お世話になります、奈々瀬と申します。

お休みのところ、ご教示をいただき、大変に助かりました!

先生がお書きになられたように、plyrパッケージ、dplyrパッケージを
使う記事を検索で見つけましたが、
Rだから、きっとorder関数を利用するだけで対応できるはずだ、
という強い期待感がありましたので、投稿させていただきました。

やはり、Rです。

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

失礼いたします。


御教示下さい。
  投稿者:初心者 2016/05/02(Mon) 10:39 No. 21989
青木先生、よろしくお願い致します。
私は認知症の発症のリスクとして、1000人以上を対象とした疫学調査の結果から、高血圧や糖尿病、うつなどの有無が発症のリスクとなるかどうか、統計学的手法をを用いて結果を出すことを考えています。その場合の統計学的手法ですが、ロジスティック回帰分析を使うのが妥当か、それともハザード比を使えばいいのかで悩んでいます。初歩的な御質問で大変恐縮ですが、御教示の程よろしくお願い致します。

Re: 御教示下さい。
  投稿者:青木繁伸 2016/05/03(Tue) 10:04 No. 21990
「ハザード比」というのは,比例ハザードモデルを使うということでしょうね。

比例ハザードモデルは,イベント発生までの時間が観測されていなければ使えません。
ロジスティック回帰分析は,時間変数は使いません。

Re: 御教示下さい。
  投稿者:初心者 2016/05/03(Tue) 11:40 No. 21991
青木先生、ありがとうございました。
ロジスティックス回帰分析で統計をかけてみます。
今後ともよろしくお願い致します。


R ネットワークグラフのエッジリストの集計
  投稿者:明石 2016/04/29(Fri) 11:46 No. 21986
青木先生 様、
お世話になります、明石と申します。

先日は、Rの、表〜リストの相互変換についてご教示をいただき、
誠にありがとうございました。

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

−−−
今回は、集計について、ご教示をいただければ助かります。
どうぞ、よろしくお願いいたします。

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

右側に、ネットワークグラフがあります。(大規模グラフ)

このネットワークのエッジリストを、左側の3つ組で表しています。
 lhsは、エッジの始点ノード番号
 rhsは、エッジの終点ノード番号
 weightは、エッジの重み

この3つ組(ファイル名は net.csv)を読み込み、
各ノードごとに、接続している全てのエッジの重みの和を計算し、
以下のように出力したいと考えています。


ノード番号 エッジ重み和
1 17.613908
2 26.414958
3 14.171645
4 21.339434
5 22.665279
6 22.433722
7 14.537605
8 10.936302
9 25.582985
10 25.582985
・・・・・・

このRプログラムを作成しましたが、
ご専門家から見れば、Rの利点を活かして、まだまだ改良の余地があると思われます。

ご教示をいただければ、大変に勉強になります。
どうぞ、よろしくお願いいたします。

dat <- read.table("net.csv", header=TRUE, sep=",")

v1 <- unique(dat$lhs)
v2 <- unique(dat$rhs)
v <- union(v1,v2)

n <- length(v)

w <- numeric(n)

for (i in 1:n) {
s1 <- is.element(dat$lhs, v[i])
s2 <- is.element(dat$rhs, v[i])
s3 <- s1 | s2
d <- dat[s3,]
w[i] <- sum(d$weight)
}

df <- data.frame(ノード番号=v, エッジ重み和=w)


Re: R ネットワークグラフのエッジリストの集計
  投稿者:青木繁伸 2016/04/29(Fri) 17:22 No. 21987
lhs と rhs を添え字として,エッジの重みを要素とする行列 mat を作り,行和ベクトルとと列和ベクトルの和が「重み和」になるので,以下のようなプログラムができる
dat = data.frame(lhs=c(3,3,2,5,6), rhs=c(2,5,5,4,2), weight=c(0.1, 0.2, 0.2, 0.3, 0.5))

v = sort(unique(c(dat[, 1], dat[, 2])))
m = max(v)
mat = matrix(0, m, m)
subscript = as.matrix(dat[, 1:2])
mat[subscript] = dat[, 3]
w = colSums(mat) + rowSums(mat)
data.frame(ノード = v, 重み和 = w[v])

mat
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 0 0.0 0 0.0 0.0 0
[2,] 0 0.0 0 0.0 0.2 0
[3,] 0 0.1 0 0.0 0.2 0
[4,] 0 0.0 0 0.0 0.0 0
[5,] 0 0.0 0 0.3 0.0 0
[6,] 0 0.5 0 0.0 0.0 0
結果の出力順は,あなたのプログラムの v <- union(v1,v2) を, v <- sort(union(v1,v2)) とすれば同じになる。

mat 行列の疎の具合によるが,場合によってはかなりの処理速度が得られるはず。

【御礼】 Re: R ネットワークグラフのエッジリストの集計
  投稿者:明石 2016/04/29(Fri) 18:12 No. 21988
青木先生 様、
お世話になります、明石と申します。

お休みのところ、ご丁寧なご教示を頂戴し、誠にありがとうございます。
追試し、調査して、使いこなしたいと思います。

毎々、ありがとうございます。


共分散分析の「等分散」の意味
  投稿者:Kei 2016/04/20(Wed) 13:07 No. 21976
基本的な質問で恐れ入りますが、教えて下さい。
共分散分析の前提条件である「等分散性」とは、F検定などと同じで各群の目的変数の分散が等しいという意味なのでしょうか?よろしくお願いします。

Re: 共分散分析の「等分散」の意味
  投稿者:鈴木康弘 2016/04/23(Sat) 07:21 No. 21977
そのとおりだと思います。

Re: 共分散分析の「等分散」の意味
  投稿者:Kei 2016/04/26(Tue) 14:57 No. 21984
お返事ありがとうございます。これまであまり統計に触れてこなかったもので、調べていくうちに混乱してしまいました。
もう一つ質問をさせて下さい。
共分散分析を進めて全群を合わせた共通の回帰式の傾きを計算した後に、群ごとの回帰式の傾きが共通の回帰式の傾きに合うように各郡内でデータを調整する。次に郡内で調整したデータで群ごとに回帰分析を行う。ここで、その残差の散らばりが均一(等分散性)である必要があると思ったのですが、この理解は間違っているのでしょうか。よろしくお願いします。

Re: 共分散分析の「等分散」の意味
  投稿者:鈴木康弘 2016/04/27(Wed) 08:14 No. 21985
過去の青木先生のご発言
http://aoki2.si.gunma-u.ac.jp/lecture/mb-arc/arc040/03957.html

によれば、SPSSでは回帰直線からの「誤差の分散の等質性検定」をするようですね。

 でも普通に共分散分析の「等分散性」というと、単なる目的変数の分散じゃないのかな..?(だんだん自信がなくなってきた。)


【R】 表 〜 リスト の相互変換
  投稿者:明石 2016/04/24(Sun) 10:50 No. 21978
青木先生、
お忙しいところを失礼いたします、明石と申します。

過日は、Rについて、丁寧にご教示をいただきまして、誠にありがとうございました。

添付の画像ファイルについて、ご教示をいただきたく、よろしくお願いいたします。

左側は、2部グラフ(人〜本)の、表データです。

人(行)が本(列)を5段階で評価した値(セル)であり、大規模データです。

この表で、評価値(セル)が0でない、人(行)と本(列)の組み合わせを取り出して、
右側の、2部リスト(人〜本)を作成する処理を(1)とします。

逆に、
右側の2部リスト(人〜本)から、左側の2部グラフ(人〜本)を作成する処理を(2)とします。

(1)、(2)の処理プログラムを作成しましたが、
ご専門家から見れば、まだまだ改良の余地が多いにあると思われますので、
改良の観点、プログラム例をお示しいただけると、勉強になります。

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

#------------------------------------------------
# (1) 2部グラフ → 2項リスト
#------------------------------------------------

dat <- read.table("hito_book_table.csv", header=TRUE, sep="," , row=1)

dat <- as.matrix(dat)

m <- nrow(dat)
n <- ncol(dat)

hito <- numeric(m*n)
book <- numeric(m*n)
score <- numeric(m*n)

cnt <- 0

for (i in 1:m) {
for (j in 1:n) {
if (dat[i,j] != 0) {
cnt <- cnt + 1
hito[cnt] <- rownames(dat)[i]
book[cnt] <- colnames(dat)[j]
score[cnt] <- dat[i,j]
}
}
}

length(hito) <- cnt
length(book) <- cnt
length(score) <- cnt

df <- data.frame(hito, book, score)

write.csv(df, "hito_book_list.csv")

#------------------------------------------------
# (2) 2項リスト → 2部グラフ
#------------------------------------------------

dat <- read.table("hito_book_list.csv", header=TRUE, sep=",", stringsAsFactors=F)

r <- nrow(dat)

hito <- dat$hito
s1 <- unique(hito)
m <- length(s1)

book <- dat$book
s2 <- unique(book)
n <- length(s2)

mx <- matrix(0, nrow=m, ncol=n)

rownames(mx) <- s1
colnames(mx) <- s2

for (i in 1:r) {
x <-which(is.element(s1, dat$hito[i]))
y <-which(is.element(s2, dat$book[i]))
mx[x, y] <- dat$score[i]
}

write.csv(mx, "hito_book_table.csv")


Re: 【R】 表 〜 リスト の相互変換
  投稿者: 2016/04/24(Sun) 19:58 No. 21979
#------------------------------------------------
# (1) 2部グラフ → 2項リスト
#------------------------------------------------

data.frame(
hito = rep(rownames(dat), each = ncol(dat)),
book = rep(colnames(dat), nrow(dat)),
hyouka = as.vector(dat)
)

#------------------------------------------------
# (2) 2項リスト → 2部グラフ
#------------------------------------------------

xtabs(hyouka ~ hito + book, data = dat)

でいかがでしょうか?

Re: 【R】 表 〜 リスト の相互変換
  投稿者:明石 2016/04/24(Sun) 20:28 No. 21980
荒 様;

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

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

コードは、あまりにも研ぎ澄まされているため、にわかには理解できないでおります。

追試しながら、調べながら、理解させていただきます。

まずは、御礼まで。
ご親身にありがとうございました。

Re: 【R】 表 〜 リスト の相互変換
  投稿者: 2016/04/24(Sun) 20:48 No. 21981
明石さん

1番目のコードですが、行と列を入れ替えないと駄目でした。

data.frame(
hito = rep(rownames(dat), each = ncol(dat)),
book = rep(colnames(dat), nrow(dat)),
hyouka = as.vector(t(dat)) # <= t(dat) に修正
)

評価が0の行が不必要な場合にはこの後にsubset関数で除去して下さい。

rep関数の使用方法さえ分かれば理解できると思います。
また、datの行と列の両方ともラベルがついていないと失敗します。
おそらく他にもっと簡単なやり方があるかもしれません。

Re: 【R】 表 〜 リスト の相互変換
  投稿者:青木繁伸 2016/04/25(Mon) 19:02 No. 21982
(1) 2部グラフ → 2項リスト は,以下のようにも書けますね。
速いかどうかは見ていません。

dat2 = t(dat)
index = which(dat2 > 0, arr.ind=TRUE)
data.frame(人=colnames(dat2)[index[,2]], 本=rownames(index), 評価=dat2[index])

【御礼】 Re: 【R】 表 〜 リスト の相互変換
  投稿者:明石 2016/04/25(Mon) 21:33 No. 21983
青木先生 様、荒 様;

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

今回も、親身に、ご相談にのってくださり、誠にありがとうございました。

荒様からご教示いただきました内容は、追試し、調査して、理解できました。
今後、使いこなしができます。
ありがとうございました。

青木先生からご教示いただきました内容は、にわかには理解できませんので、
じっくりと勉強させていただき、技をマスターしたいと思います。
ありがとうございました。


R-TipsのHPについて
  投稿者:さくらとお城 2016/04/18(Mon) 12:59 No. 21975
こことは直接関係のない内容ですが,もしご存じの方がいれば,ぜひ教えてください。

R-Tipsの下記URLにアクセスできなくなったようです。
http://cse.naro.affrc.go.jp/takezawa/r-tips/r.html

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


Rのメモリ空間のサイズを明示的に設定するコマンド
  投稿者:奈々瀬 2016/04/16(Sat) 10:47 No. 21972
青木先生、
奈々瀬と申します、
Rに関する投稿が多く見られますので、ご教示を頂戴できれば助かります。

Rの64bit版(Windows)を利用しています。
メモリは32GBを積んでいますので、実メモリは十分にあると思いますが、
メモリ不足のエラーが出ることがあります。

Rでも、Javaのように、メモリサイズを明示的に指定できればよいなと
思って調べていますが、見つかりません。

知人に聞いても、誰も知りません。

Rのメモリ空間のサイズを明示的に設定するコマンドをご存知でしたら、
ご教示を頂戴できれば助かります。

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

Re: Rのメモリ空間のサイズを明示的に設定するコマンド
  投稿者:青木繁伸 2016/04/17(Sun) 09:12 No. 21973
Windows は使用できないので,よくわかりませんが,「R windows メモリ」で検索すると色々出てくるようですね。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1474631834
などはいかが?

Re: Rのメモリ空間のサイズを明示的に設定するコマンド
  投稿者:奈々瀬 2016/04/17(Sun) 18:06 No. 21974
青木先生、
奈々瀬と申します、ご教示を頂戴し、誠にありがとうございます。

コマンドを探すというだけでなく、
問題を広げることで色々な観点があることも分かりました。

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

私が、メモリエラーに遭遇するのは、
NMF(非負行列分解)という手法を適用する場合です。

大規模な行列を利用することが根本原因ですが、
手法の性格上、行列を分割して計算し、その計算結果を統合するという
ことはできませんので、苦慮しております。

ご教示をありがとうござました。


Spearman順位相関係数
  投稿者:Kazuki 2016/04/03(Sun) 12:26 No. 21963
いつも丁寧にご回答いただきありがとうございます。
非常に助かっております。

Spearmanの順位相関係数に関してなのですが、どこを探しても順位相関係数に関する検定力分析の方法が見当たりません。
そもそも存在しないものなのか、同じ相関分析と仮定してPearsonの積率相関係数と同様に算出すべきなのかご教授いただければ幸いです。
効果量は「ロー」であろうとは思うのですが...

お忙しいところ恐れ入りますがよろしくご教授下さい。

Re: Spearman順位相関係数
  投稿者:青木繁伸 2016/04/03(Sun) 19:27 No. 21965
spearman correlation coefficient power で検索すると色々出てきます

最初に出ているのは
https://www.statisticssolutions.com/spearman-correlation-2-tailed/

Re: Spearman順位相関係数
  投稿者:Kazuki 2016/04/04(Mon) 13:14 No. 21966
青木先生、お忙しい中、お返事ありがとうございます。
青木先生にご指定いただきましたサイトの他にpearsonとspearmanでは係数に9%ほどの差があるという趣旨の記述があるサイト(下記2つ目)も検索されたのですが、種々意見があるということでしょうか?

https://www.statisticssolutions.com/spearman-correlation-2-tailed/

The power analysis was conducted in G-POWER using an alpha of 0.05, a power of 0.80, and a large effect size (ρ = 0.5) for a two-tailed test. Because Spearman’s rank correlation coefficient is computationally identical to Pearson product-moment coefficient, power analysis was conducted using software for estimating power of a Pearson’s correlation.

https://www.statstodo.com/CorReg_Exp.php

StatToDo to date cannot find a calculation for sample size or power for Spearman's correlation. However, according to Siegal's book of non parametric statistics, Spearman's is about 91% as efficient as Pearson's in terms of power. In other words, for the same power of 0.8 in a Pearson's correlation, the sample size required for Spearman must use a power of 0.8 / 0.91 = 0.88 to calculate sample size. Similarly, after analysis, the power, as calculated for Pearson, must be multiplied by 0.91 to obtain the power for Spearman.

Re: Spearman順位相関係数
  投稿者:青木繁伸 2016/04/04(Mon) 18:42 No. 21967
所詮,近似・見積なので,どこまで正確に細かくやるかはあまり重要ではなくなってしまうということでしょう。たとえば,サンプルサイズが100か1000かは意味があるけど,100か110かの差は意味がないとかいうことでしょう。

Re: Spearman順位相関係数
  投稿者:Kazuki 2016/04/05(Tue) 19:51 No. 21971
青木先生

お返事ありがとうございます。
また、わかりやすい例えで説明していただき感謝致します。
精進して勉強させていただきます。
今後もまたどうぞよろしくお願い致します。


対数正規分布の期待値
  投稿者:Saito 2016/04/05(Tue) 13:11 No. 21970
お世話になっております。
対数正規分布の期待値が理論解とあわないのですが、どこが間違っているかご指摘頂けないでしょうか。

> ###データの生成###
> set.seed(3)
> a <- 0.2
> b <- -0.2
> id <- 100
>
> x <- seq(1, 10, length=id)
> y <- exp(a + b*x + rnorm(id, 0, sd=4))
>
> ###対数正規分布を仮定して回帰してみる###
> func <- function(par, x, y) {
+ a <- par[1]
+ b <- par[2]
+ sig <- par[3]
+ return(
+ -1*sum(
+ log(
+ (1/(sqrt(2*pi*sig^2)*(y)))*exp(-((a+b*x)-log(y))^2/(2*sig^2))
+ )
+ )
+ )
+
+ }
> res_l <- optim(func, par=c(-0.2, -0.2, 4), x=x, y=y)
>
> ###対数正規分布なのでexp(u+s^2/2)で期待値となるはずだがならない?###
> mean(exp(res_l$par[1] + res_l$par[2]*x + res_l$par[3]^2/2))
[1] 130.4608
> mean(y)
[1] 15.99745

###普通のGLMでやっても合わない###
> res <- glm(log(y) ~ x)
> mean(exp(predict(res)+summary(res)$dispersion/2))
[1] 146.5174

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


Rパッケージ
  投稿者:赤岳 2016/04/01(Fri) 14:54 No. 21958
いつもお世話になっています。
このサイトでRのバグを聞くのはお門違いとは思いますが、ご容赦ください。
MCMCpackをインストールしたいのですが、「graphが利用できない」とか、「MCMCregressを見つけられない」といったメッセージが出て、うまく動きません。
どなたか解決方法を教えていただけませんでしょうか。
使用のR Versionは、R version 3.2.4 Revisedです。
OSは、Windows7です。

> install.packages("MCMCpack")
警告: 依存対象 (dependency) ‘graph’, ‘Rgraphviz’ が利用できません
URL 'https://cran.ism.ac.jp/bin/windows/contrib/3.2/MCMCpack_1.3-5.zip' を試しています
Content type 'application/zip' length 3014557 bytes (2.9 MB)
downloaded 2.9 MB
パッケージ ‘MCMCpack’ は無事に展開され、MD5 サムもチェックされました
ダウンロードされたパッケージは、以下にあります
C:\Users\・(省略)・・\downloaded_packages
> library(MCMCpack)
Error in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) :
‘graph’ という名前のパッケージはありません
エラー: ‘MCMCpack’ に対するパッケージもしくは名前空間のロードが失敗しました

> y <- c(1,3,3,3,5)
> x1 <- c(1,2,3,5,5)
> x2 <- c(2,3,1,5,2)
> x <- matrix(c(x1,x2),ncol=2,nrow=5)
>
> result3.sim <- MCMCregress(y~x, data = parent.frame(), burnin = 1000, mcmc = 10000)
エラー: 関数 "MCMCregress" を見つけることができません

よろしくお願いします。

Re: Rパッケージ
  投稿者:鈴木康弘 2016/04/03(Sun) 08:37 No. 21962
 MCMCpackなるものは知らないのですが、エラーメッセージからすると、Rgraphvizというパッケージも必要みたいですね。

http://d.hatena.ne.jp/Tanakky/20070727

などを見ると、そのパッケージインストールも一筋縄ではいかないみたい?

Re: Rパッケージ
  投稿者:赤岳 2016/04/03(Sun) 12:34 No. 21964
鈴木先生
レスいただきありがとうございます。
CRANを探してみましたが、見当たらず、下記の文章がありました。
Package ‘Rgraphviz’ was removed from the CRAN repository.
まだ、解決していませんが、取り急ぎお礼申し上げます。

Re: Rパッケージ
  投稿者:青木繁伸 2016/04/04(Mon) 18:49 No. 21968
解決するかどうかはわからないし,古い記事もあるのだけれど,
「Rgraphviz インストール」で検索すると,たくさん出てきますけど
(ちなみに,Mac だと,何の問題もなく動くようだが??)

Re: Rパッケージ
  投稿者:赤岳 2016/04/05(Tue) 12:54 No. 21969
青木先生、鈴木先生
できました!
ありがとうございます。
「Rgraphvizインストール」で検索し、
source("http://bioconductor.org/biocLite.R");biocLite("Rgraphviz")
でインストールできました。
また、MCMCpackも下記のようにバグることなく動きました。
ほんとうに感謝します。ありがとうございました。

> library(MCMCpack)
##
## Markov Chain Monte Carlo Package (MCMCpack)
## Copyright (C) 2003-2016 Andrew D. Martin, Kevin M. Quinn, and Jong Hee Park
##
## Support provided by the U.S. National Science Foundation
## (Grants SES-0350646 and SES-0350613)


Rの論理ベクトル
  投稿者:明石 2016/03/31(Thu) 21:33 No. 21955
青木先生 様;

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

過日は、Rプログラミングについて丁寧なご教示をいただき、誠にありがとうございました。
改めて御礼を申し上げます。

今回は、Rの論理ベクトルについて、ご教示をいただきたいと思います。
どうぞよろしくお願いいたします。

−−−

以下の2つのファイルを用いた、条件抽出の問題です。

"dat.csv"  ;データファイル

 m 行 n 列のデータフレーム
 行; 事例
 列; 項目(カテゴリカル変数)
    項目名; item_1, item_2, item_3, , , , , item_n
    項目値; "C_1", "C_2", "C_3" などの文字列

"rule.csv"  ;条件抽出ルールを記述したファイル

 r 行 1 列のデータフレーム

 ルールの記述例;
 item_1="C_1" & item_2="C_4"
  item_3="C_2" & item_5="C_4" & item_8="C_8"
 ...............

処理手順は、以下の通りです。

(1) データファイル "dat.csv" の読み込み

dat <- read.table("dat.csv", header=TRUE, sep="," , row=1)

(2) ルールファイル "rule.csv" の読み込み、条件抽出

ループを回して、1つづつルールを取り出し、条件抽出式に変換します。

最終的に、データファイルの各事例に、 r 個のルールを適用した結果の論理ベクトルを得ます。
(「星取表」と呼びます)

(3) 結果ファイル

上記の星取表を出力します。

 m 行 r 列のデータフレーム
 行; 事例
 列; ルール名

先生にお聞きしたいことは、(2) のプログラムです。

(Q1)

以下にお示ししますように、ルールから条件抽出式を組み立てる際に、
どのような文字列操作を行えばよいのか。

ルールに含まれている "" を、どのように扱えばよいのか、苦慮しています。

【ルール】
item_1="C_1" & tem_2="C_4"

【条件抽出式】
dat$item_1=="C_1" && item_2=="C_4"

(Q2)

文字列操作により、条件抽出式を得たとします。

このままでは文字列ですので、論理ベクトルを得ることはできません。

"dat$item_1=="C_1" && item_2=="C_4""

文字列 "dat$item_1=="C_1" && item_2=="C_4"" を、
条件抽出式とした扱うためには、どのようにすればよいのか、苦慮しています。

以上2点、ご教示をいただければ助かります。

どうぞ、よろしくお願いいたします。
//明石

Re: Rの論理ベクトル
  投稿者:青木繁伸 2016/04/01(Fri) 00:59 No. 21956
dat.csv のテストデータ
item_1,item_2,item_3,item_4,item_5
C_2,C_5,C_5,C_5,C_1
C_4,C_1,C_2,C_5,C_4
C_3,C_4,C_4,C_4,C_3
C_1,C_3,C_5,C_4,C_2
C_5,C_1,C_4,C_1,C_1
C_1,C_4,C_4,C_3,C_1
C_3,C_2,C_3,C_4,C_2
C_5,C_1,C_3,C_2,C_3
C_3,C_2,C_2,C_2,C_2
C_3,C_5,C_1,C_2,C_5
rule.csv のテストデータ
item_1="C_1" & item_2="C_4"
item_3="C_2" & item_5="C_4" & item_2="C_1"
のように
& は && ではなく 1 文字
= も == ではなく 1 文字
で入力されているとする

プログラム
dat <- read.table("dat.csv", header=TRUE, sep=",") # row 引数とは?
m <- nrow(dat)
rule <- readLines("rule.csv") # ベクトルとして読み込む
r <- length(rule)
result <- matrix(logical(m*r), m)
for (i in seq_len(r)) {
r <- gsub("=", "==", rule[i])
result[,i] <- with(dat, eval(parse(text=r)))
}
result
出力
> result
[,1] [,2]
[1,] FALSE FALSE
[2,] FALSE TRUE
[3,] FALSE FALSE
[4,] FALSE FALSE
[5,] FALSE FALSE
[6,] TRUE FALSE
[7,] FALSE FALSE
[8,] FALSE FALSE
[9,] FALSE FALSE
[10,] FALSE FALSE
with(dat, eval(parse(text=r))) が,肝!

【御礼】 Re: Rの論理ベクトル
  投稿者:明石 2016/04/01(Fri) 06:06 No. 21957
青木先生 様;

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

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

大変に勉強になりました。
技を勉強させていただきます。

心から御礼を申し上げます。

Re: Rの論理ベクトル
  投稿者:明石 2016/04/01(Fri) 21:28 No. 21959
青木先生 様;

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

ご丁寧にご教示いただき、誠にありがとうございました。
追試を行い、理解できました。

"rule.csv" のテストデータは、以下のようでした。
item_1="C_1" & item_2="C_4"
item_3="C_2" & item_5="C_4" & item_2="C_1"

別の形式として、
Rの連関ルール(aRuleパッケージ)の出力
lhs(条件部) → rhs(結論部)
のlhs(条件部)の場合を読み込んだ場合の検討をしています。

item_1=C_1, item_2=C_4
item_3=C_2, item_5=C_4, item_2=C_1

これを、"rule2.csv" とします。

"rule2.csv" を読み込んで、青木先生のプログラムが利用できるように、
前処理のプログラムを作成しました。

動作は確認できましたが、文字列操作の改善の余地があると思われます。

シンプルに書ける方法をご教示いただければ、勉強になります。
どうぞ、よろしくお願いいたします。

# データファイルの読み込み

dat <- read.table("dat.csv", header=TRUE, sep=",")
m <- nrow(dat)

# ルールファイルの読み込み(連関ルールの lhs部)

v <- readLines("rule2.csv") # ベクトルとして読み込む

r <- length(v)

# 青木先生のプログラムが利用できるように、前処理の追加

qr <- NULL

for(i in 1:r) {
  b <- strsplit(v[i], ", ")
  b <- unlist(b)
  n <- length(b)
  for(k in 1:n) {
    a <- b[k]
    d <- strsplit(a, "=")
   d <- unlist(d)
   d1 <- d[1]
   d2 <- d[2]
   d <- paste(d1, "=", "\"", d2, "\"", sep="")
    b[k] <- d
  }
b <- paste(b, sep="", collapse=" & ")
qr <- rbind(qr, b)
}

rule <- as.vector(qr)

# 青木先生〜

r <- length(rule)

result <- matrix(logical(m*r), m)

for (i in seq_len(r)) {
r <- gsub("=", "==", rule[i])
result[,i] <- with(dat, eval(parse(text=r)))
}

result

# 〜青木先生

result <- result + 0

write.csv(result, "星取表2.csv")

Re: Rの論理ベクトル
  投稿者:青木繁伸 2016/04/02(Sat) 09:11 No. 21960
結果として,動けばどのようにプログラムしてもよいのですが,調べることも含めてプログラムを書く時間が短く,結果としてのプログラムが短ければうれしいでしょうね。

ということで,for の中の r を定義する部分を書き換えます(gsub を使えばよいことが示唆されていましたね)。

r <- gsub("=", "==", gsub('(C_[0-9])', '"\\1"', gsub(",", " &", rule[i])))

, を &
C_* を "C_*" にしてから(* は 0~9)
= を == にします。
gsub ごとに 3 行に分けて書くとわかりやすいかも。

【御礼】 Re: Rの論理ベクトル
  投稿者:明石 2016/04/02(Sat) 12:25 No. 21961
青木先生 様;

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

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

大変に勉強になりました。
正規表現を使う技を勉強させていただきます。

心から御礼を申し上げます。

[1] [2]

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