Làm thế nào để bạn thực hiện kiểm tra giả thuyết với dữ liệu lớn? Tôi đã viết kịch bản MATLAB sau đây để nhấn mạnh sự nhầm lẫn của tôi. Tất cả những gì nó làm là tạo ra hai chuỗi ngẫu nhiên và chạy hồi quy tuyến tính đơn giản của một biến trên biến kia. Nó thực hiện hồi quy này nhiều lần bằng các giá trị ngẫu nhiên khác nhau và báo cáo trung bình. Điều có xu hướng xảy ra là khi tôi tăng kích thước mẫu, giá trị p trung bình trở nên rất nhỏ.
Tôi biết rằng vì sức mạnh của thử nghiệm tăng theo kích thước mẫu, được cung cấp một mẫu đủ lớn, giá trị p sẽ trở nên đủ nhỏ, ngay cả với dữ liệu ngẫu nhiên, để từ chối mọi thử nghiệm giả thuyết. Tôi đã hỏi xung quanh và một số người nói rằng với 'Dữ liệu lớn', điều quan trọng hơn là xem xét kích thước hiệu ứng, tức là. liệu xét nghiệm có ý nghĩa VÀ có ảnh hưởng đủ lớn để chúng ta quan tâm hay không. Điều này là do ở kích thước mẫu lớn, giá trị p sẽ nhận được những khác biệt rất nhỏ, giống như được giải thích ở đây .
Tuy nhiên, kích thước hiệu ứng có thể được xác định bằng cách chia tỷ lệ của dữ liệu. Dưới đây tôi chia tỷ lệ biến giải thích thành một cường độ đủ nhỏ với kích thước mẫu đủ lớn, nó có ảnh hưởng lớn đến biến phụ thuộc.
Vì vậy, tôi tự hỏi, làm thế nào để chúng ta có được cái nhìn sâu sắc từ Dữ liệu lớn nếu những vấn đề này tồn tại?
%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