2012-05-14 212 views
1

有沒有一些簡單的方法來計算matlab中T-Test的P值。如何在MATLAB中計算t檢驗的p值?

我發現了類似的東西,但我認爲ID不會返回正確的值: Pval = 2 *(1-tcdf(abs(t),n-2))。

我想對P值進行測試,以確定迴歸斜率等於0。因此,我計算了StandardError $ SE = \ sqrt {\ frac {\ sum_ {s = iw}^{i + w} { (Y_ {S} - \ widehat {Y} _s})^ 2} {(W-2)\ sum_ {S = IW}^{1 +瓦特} {(X_ {S} - \酒吧{X}})^2}} $其中$ y_s $是時間週期內分析參數的值$ s $,$ \ widehat {y} _s $是分析參數在時間週期$ s $中的估計值,$ x_i $是時間分析參數的觀察值的點,$ \ bar {x} $是分析期間的時間點平均值,然後$ t_ {score} =(a - a_ {0})/ SE $,其中$ a_ {0 } $其中$ a_ {0} = 0 $

任何想法?

+1

檢查從MathWorks的這些鏈接:[1](http://www.mathworks.co.uk/help/toolbox/stats/ttest.html)[2 ](http://www.mathworks.co.uk/help/toolbox/stats/ttest2.html) – 2012-05-14 18:27:52

+0

有人可以確認p值$ P(T \ le t_ {value})$可能用tcdf(t_value ,degrees_of_freedom)或位於http://learnyourselfmatlab.blogspot.com/2011/12/problem-given-t-ratio-and-degrees-of.html下的函數 – Darqer

回答

4

我檢查了P值從TTEST函數和一個使用這個公式計算:

% Let n be your sample size 
% Let v be your degrees of freedom 

% Then: 
pvalues = 2*(1-tcdf(abs(t),n-v)) 

和他們是一樣的!

實施例用Matlab演示數據集:

load accidents 
x = hwydata(:,2:3); 
y = hwydata(:,4); 
stats = regstats(y,x,eye(size(x,2))); 
fprintf('T stat using built-in function: \t %.4f\n', stats.tstat.t); 
fprintf('P value using built-in function: \t %.4f\n', stats.tstat.pval); 
fprintf('\n\n'); 

n = size(x,1); 
v = size(x,2); 
b = x\y; 
se = diag(sqrt(sumsqr(y-x*b)/(n-v)*inv(x'*x))); 
t = b./se; 
p = 2*(1-tcdf(abs(t),n-v)); 
fprintf('T stat using own calculation: \t\t %.4f\n', t); 
fprintf('P value using own calculation: \t\t %.4f\n', p);