Hypothesis-Testing

大數據假設檢驗

  • August 13, 2013

您如何使用大數據進行假設檢驗?我編寫了以下 MATLAB 腳本來強調我的困惑。它所做的只是生成兩個隨機序列,並對另一個變量進行簡單的線性回歸。它使用不同的隨機值多次執行此回歸併報告平均值。往往會發生的情況是,當我增加樣本量時,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

正如彼得建議的那樣,我認為在“大數據”時代,重要的事情之一就是更少地強調 p 值,而更多地關注效應大小的估計。

我自己的一些工作以我認為比大數據更陰險的方式來解決這個問題——對於隨機計算模型,你的能力完全取決於耐心和計算資源。這是一種人工構造。

所以回到效果估計。即使它很重要,在現實世界中增加 0.0001% 是否重要?

我也一直在嘗試扭轉報告學習能力背後的一些想法。與其報告您的研究必須檢測到觀察到的效應的功效,不如報告該研究能夠找到的*最小效應量。*這樣,讀者就可以知道重要性是否得到了基本保證。

引用自:https://stats.stackexchange.com/questions/67320

comments powered by Disqus