빅 데이터를 이용한 가설 테스트


12

빅 데이터로 가설 검정을 어떻게 수행합니까? 혼란을 강조하기 위해 다음 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

가설 테스트는 null 모델을 거부하는 것입니다. 더 많은 데이터를 사용하면 더 많은 공변량을 가지거나 여러 가설을 테스트하여 "더 큰 null 모델"을 거부 할 수 있습니다.
momeara


2
방에있는 코끼리는 "빅 데이터"의 대표성입니다. 인터넷에서 수집 된 많은 거대한 데이터 세트는 편의상 샘플입니다. 샘플에서 더 많은 인구 또는 진행중인 프로세스로 일반화하려는 노력에 숨겨져 있지만 잘 알려진 위험이 있습니다.
whuber

1
"일부 사람들은 '빅 데이터'를 사용하면 효과 크기를 보는 것이 더 중요하다고 말했다." 'Small Data'를 사용하면 효과 크기도 보는 것이 중요합니다.
Ari B. Friedman

답변:


11

Peter가 제안한 바와 같이, 나는 "빅 데이터"시대에 중요한 것 중 하나는 p- 값에 중점을 두는 것이 아니라 효과의 크기에 대한 추정에 더 중점을 둔다고 생각합니다.

내 자신의 작업 중 일부는 빅 데이터보다 더 교활하다고 생각하는 방식 으로이 문제로 어려움을 겪습니다. 확률 적 계산 모델의 경우 귀하의 힘은 전적으로 인내와 컴퓨팅 리소스의 기능입니다. 인공 구조물입니다.

따라서 효과 추정치로 돌아가십시오. 그것의 의미가 크다고하더라도 현실 세계에서 0.0001 % 증가하는 것이 중요한가?

또한 연구력을보고하는 아이디어의 일부를 뒤집어 놓고 놀았습니다. 연구가 관찰 된 효과를 감지하는 데 필요한 힘을보고하는 대신 연구가 찾은 최소 효과 크기를 보고합니다 . 그렇게하면 독자가 의미가 본질적으로 보장되는지 알 수 있습니다.


7

원하는 통찰력은 p- 값이 아니라 신뢰 구간에서 나옵니다. 표본 크기가 매우 크면 통계적 가정이 정확할 경우 매우 정확한 신뢰 구간을 얻게됩니다.


고마워 마이크. 이러한 상황에서 신뢰 구간을 조사하면 추정치의 정확한 값을 실제로 신뢰해서는 안될 정도로 넓다는 것을 알 수 있습니까?
JoeDanger

흥미로운 점은 질문이 큰 데이터에 대한 문제 (어떤 것이 0이 될 가능성이 거의 없음을 알려주는 가설 테스트가 의미가 없음)로 표현되었고 작은 데이터에 대한 문제가 아니라 (매개 변수 추정치가 매우 부정확 한) 문제라는 점입니다. 종종 매개 변수가 정확히 0이 될 가능성은 거의 없습니다.
jona

6

데이터가 크든 작든 상관없이 효과 크기를 보는 것이 중요합니다.

순전히 임의의 데이터를 사용하면 5 %의 상당한 결과를 얻을 수 있습니다. 이것이 바로 p- 값의 의미입니다. 샘플 크기에 관계없이 마찬가지입니다. 샘플 크기에 따라 달라지는 것은 효과 크기가 얼마나 작아야 하는가입니다. 그러나 순수한 노이즈 샘플이 크면 작은 차이 만있을 수 있습니다. 표본이 작을수록 더 큰 차이가 더 자주 발생합니다. 동전을 10 번 뒤집는 것을 생각하십시오. 그러나 동전을 1000 번 던지면 900 또는 1000보다 훨씬 적은 800 개의 머리를 얻는 것이 정말 이상합니다 (정확한 숫자는 계산할 수는 있지만 요점은 아닙니다.). 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 인 두 벡터로

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
Florn, 나는 이것의 초안을 잘 보았는데, 비슷한 지적을할만한 학술 논문 / 통계 교과서가 있습니까?
SAFEX

1
어떤 점 이요? 효과 크기를 보는 방법은 무엇입니까? 아니면 어떤 무작위입니까?
Peter Flom

"샘플 크기에 따라 달라지는 것은 효과 크기의 크기가 얼마나 작아야 하는가"입니다. 이것은 텍스트에서 매우 직관적이지만 이 점 을 증명 하는 학문적 인 작업 이 있습니다
SAFEX

1
나는 그것을 명시 적으로 증명하는 책을 모른다. 만약 당신이 어떤 종류의 수학 통계 책을 원한다면, 나는 물어볼 사람이 아니다. 나는 여기 누군가가 알 것이라고 확신하지만, 그들은이 주석 스레드를 보지 못할 수 있습니다. 아마도 "무엇이 달라지는 명백한 증거 ..."와 같은 별도의 질문을 할 수도 있습니다.
Peter Flom

1
직관적 인 설명 ( stats.stackexchange.com/questions/412643/… ) 에 다시 한 번 감사드립니다
SAFEX

2

이미 언급했듯이 가설 검정에서 실제로 귀무 가설을 조사하고 있습니다. 일반적으로 귀무 가설을 기각 할 수 있기를 바랍니다. 다른 답변 외에도 다소 다른 접근법을 제안하고 싶습니다.

일반적으로 데이터에서 어떤 일이 일어나고 있는지에 대한 이론이 있다면 확인 분석 (예 : 확인 요인 분석 과 같은)을 수행 할 수 있습니다. 그러기 위해서는 모델이 필요합니다. 그런 다음 모델이 데이터에 얼마나 적합한 지 확인할 수 있습니다. 이 방법을 사용하면 서로 다른 모델을 테스트 할 수도 있습니다. 빅 데이터의 장점은 실제로 이러한 모델 테스트를 수행 할 수 있다는 것입니다. 대조적으로, 심리학에서, 예를 들어, 샘플 크기가 이러한 종류의 방법에 비해 너무 작은 경향이 있기 때문에, 실제로 그렇게 할 수없는 경우가 종종 있습니다.

나는 일반적으로 빅 데이터에서는 이론이 없기 때문에 탐색 적 접근 방식이 사용된다는 것을 알고 있습니다. 또한, 정확히 당신이 관심있는 것을 알지 못하기 때문에 이것은 실제로 옵션이 아닐 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.