ビッグデータを使用した仮説検定


12

ビッグデータを使用して仮説検定をどのように実行しますか?私の混乱を強調するために、次のMATLABスクリプトを作成しました。それが行うことは、2つのランダムな系列を生成し、1つの変数を他の変数に対して単純な線形回帰を実行することだけです。異なるランダム値を使用してこの回帰を数回実行し、平均を報告します。発生する傾向があるのは、サンプルサイズを大きくすると、平均してp値が非常に小さくなることです。

検定の検出力はサンプルサイズと共に増加するため、十分な大きさのサンプルが与えられた場合、pデータは、仮説検定を拒否するのに十分なほど小さくなります。私は周りに尋ねました、そして、何人かの人々は「ビッグデータ」で効果サイズを見ることはより重要であると言いました、すなわち。テストが重要であり、かつ気になるほどの効果があるかどうか。これは、サンプルサイズが大きい場合、ここで説明するように、p値が非常に小さな差異を拾うためです

ただし、効果のサイズはデータのスケーリングによって決定できます。以下では、説明変数を十分に小さな大きさにスケーリングして、十分に大きなサンプルサイズを指定すると、従属変数に大きな影響を与えます。

これらの問題が存在する場合、どのようにしてビッグデータから洞察を得ることができるのでしょうか。

%make average
%decide from how many values to make average
obs_inside_average = 100;

%make average counter
average_count = 1;

for average_i = 1:obs_inside_average,






%do regression loop
%number of observations
n = 1000;

%first independent variable (constant term)
x(1:10,1) = 1; 

%create dependent variable and the one regressor
for i = 1:10,

    y(i,1) = 100 + 100*rand();

    x(i,2) = 0.1*rand();

end





%calculate coefficients
beta = (x'*x)\x'*y;

%calculate residuals
u = y - x*beta;

%calcuatate sum of squares residuals
s_2 = (n-2)\u'*u;

%calculate t-statistics
design = s_2*inv(x'*x);

%calculate standard errors
stn_err = [sqrt(design(1,1));sqrt(design(2,2))];

%calculate t-statistics
t_stat(1,1) = sqrt(design(1,1))\(beta(1,1) - 0);
t_stat(2,1) = sqrt(design(2,2))\(beta(2,1) - 0);

%calculate p-statistics
p_val(1,1) = 2*(1 - tcdf(abs(t_stat(1,1)), n-2));
p_val(2,1) = 2*(1 - tcdf(abs(t_stat(2,1)), n-2));






%save first beta to data column 1
data(average_i,1) = beta(1,1);

%save second beta to data column 2
data(average_i,2) = beta(2,1);

%save first s.e. to data column 3
data(average_i,3) = stn_err(1,1);

%save second s.e. to data column 4
data(average_i,4) = stn_err(2,1);

%save first t-stat to data column 5
data(average_i,5) = t_stat(1,1);

%save second t-stat to data column 6
data(average_i,6) = t_stat(2,1);

%save first p-val to data column 7
data(average_i,7) = p_val(1,1);

%save second p-val to data column 8
data(average_i,8) = p_val(2,1);

end

%calculate first and second beta average
b1_average = mean(data(:,1));
b2_average = mean(data(:,2));

beta = [b1_average;b2_average];

%calculate first and second s.e. average
se1_average = mean(data(:,3));
se2_average = mean(data(:,4));

stn_err = [se1_average;se2_average];

%calculate first and second t-stat average
t1_average = mean(data(:,5));
t2_average = mean(data(:,6));

t_stat = [t1_average;t2_average];

%calculate first and second p-val average
p1_average = mean(data(:,7));
p2_average = mean(data(:,8));

p_val = [p1_average;p2_average];

beta
stn_err
t_stat
p_val

仮説検定は、ヌルモデルを拒否することです。より多くのデータを使用すると、たとえば、共変量を増やすか、複数の仮説をテストすることによって、「より大きなnullモデル」を拒否できます。
momeara 2013


2
部屋の中の象は「ビッグデータ」の代表です。インターネット上で収集された多くの巨大なデータセットは(せいぜい)便利なサンプルです。サンプルからより大きな母集団または進行中のプロセスに一般化しようとする努力には、隠れていますがよく知られている危険があります。
whuber

1
「一部の人々は、「ビッグデータ」を使用する場合、効果サイズを確認することがより重要であると述べました。「小さいデータ」では、効果のサイズも確認することが重要です。
アリB.フリードマン

回答:


11

ピーターが示唆したように、「ビッグデータ」の時代の重要なことの1つは、p値ではなく、影響の大きさの推定に重点を置くことです。

私自身の仕事の一部は、ビッグデータよりも油断のならない方法でこれに苦労しています。確率論的計算モデルの場合、あなたの力は完全に忍耐力とコンピューティングリソースの関数です。それは人工的な構造です。

したがって、効果の見積もりに戻ります。たとえそれが重要であっても、現実世界で何かが0.0001%増加することは重要ですか?

私はまた、調査力の報告の背後にあるいくつかの考えを逆転させることにも取り組んできました。研究が観察された効果を検出するために必要であったパワーを報告する代わりに、研究が発見するためにパワーが与えられた最小効果サイズを報告します。そうすれば、読者は重要性が本質的に保証されたかどうかを知ることができます。


7

希望する洞察は、p値からではなく、信頼区間から得られます。非常に大きなサンプルサイズでは、統計的仮定が正しい場合、非常に正確な信頼区間が得られます。


マイクありがとう。これらの状況で、信頼区間を調べると、信頼区間が非常に広いため、見積もりの​​正確な値を実際に信頼すべきではないことがわかりますか?
JoeDanger 2013

興味深いのは、直感的に、質問は大きなデータの問題として表現され(仮説テストが何かが0になる可能性が低いことを通知するのはかなり無意味である)、小さなデータの問題としてではない(パラメーター推定が非常に不正確である)多くの場合、言えることは、パラメーターが正確に0になる可能性が非常に低いということです。
ジョナ2013

6

データが大きいか小さいかに関係なく、エフェクトサイズを確認することが重要です。

純粋にランダムなデータでは、時間の5%で重要な結果が得られます。それがp値の意味です。これは、サンプルサイズに関係なく当てはまります。サンプルサイズによって異なるのは、効果のサイズが有意であることを見つけるためにどれだけ小さい必要があるかです。ただし、純粋なノイズのサンプルが大きい場合は、わずかな違いしかありません。小さなサンプルでは、​​大きな違いがより頻繁に発生します。コインを10回裏返すことを考えてください。8頭、9頭、または10頭でも、ばかげたことはありません。ただし、コインを1000回投げる場合、800頭、つまり900または1000をはるかに下回るのは本当に奇妙です(正確な数値を計算することはできますが、それは重要ではありません。ただし、1000回の投げでは、わずかな偏差でも500から重要になります。

例:ランダムデータのt検定、長さ10の2つのベクトル

set.seed(102811)
samp.size <- 10
t10 <- vector("numeric", 100)
for (i in 1:100){
x <- rnorm(samp.size)
y <- rnorm(samp.size)
t <- t.test(x,y)
t10[i] <- t$p.value
sum(t10 < .05)/100

0.07

サイズ1000の2つのベクトル

set.seed(10291)
samp.size <- 1000
t1000 <- vector("numeric", 100)
for (i in 1:100){
  x <- rnorm(samp.size)
  y <- rnorm(samp.size)
  t <- t.test(x,y)
  t1000[i] <- t$p.value
}  
sum(t1000 < 0.05)/100

0.05を得た。


1
フローン、これはよく起草されていると思いますが、参照できる学術論文/統計の教科書はありますか?
SAFEX

1
どの特定のポイント?エフェクトサイズの見方について?またはランダムとは何ですか?
ピーターフロム-モニカの回復

「サンプルサイズによって異なるのは、効果のサイズがどれだけ小さいかを確認する必要があるということです」これはテキストから非常に直感的ですが、この点を証明する学術的な作業があります
SAFEX

1
それを明示的に証明する本は知りません。ある種の数学的統計の本が必要な場合は、私は尋ねる人ではありません。ここの誰かが知っていると確信していますが、彼らはこのコメントスレッドを見ないかもしれません。おそらく、「何が変化するかを明示的に証明する...」のような別の質問をするかもしれません
ピーター・フロム-モニカを復活させる

1
直感的な説明のために再度行われ、感謝(stats.stackexchange.com/questions/412643/...
SAFEX

2

すでに述べたように、仮説検定では、通常はそれを拒否できることを期待して、帰無仮説を実際に調査しています。他の回答に加えて、少し異なるアプローチを提案したいと思います。

一般的に言って、データで何が起こっているかについてある種の理論がある場合、確認分析を行うことができます(確認要因分析など)。そのためにはモデルが必要です。これで、モデルがデータにどの程度適合しているかを確認できます。このアプローチでは、異なるモデルを相互にテストすることもできます。ビッグデータの優れた点は、これらのモデルテストを実際に実行できることです。対照的に、たとえば心理学では、サンプルサイズがこれらの種類のメソッドには小さすぎる傾向があるため、実際にはそうすることができないことがよくあります。

まだ理論がないため、通常、ビッグデータでは探索的アプローチが使用されていることに気づきました。また、あなたが何に興味を持っているのか正確にはわからないので、これは本当にオプションではないかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.