- Group 1: mean = m1, std = s1, n = n1
- Group 2: mean = m2, std = s2, n = n2
ttest - no data
4 views (last 30 days)
Show older comments
Hi,
Is there a way in Matlab to perform t-test (where we check for variance first and then perform the test and find the p-value) using means and std (no data)?
Thanks
0 Comments
Answers (1)
Samayochita
on 24 Apr 2025
Edited: Samayochita
on 24 Apr 2025
Hi Seldeeno,
I understand that the goal is to perform a t-test without raw data, using just the means, standard deviations, and sample sizes of two independent samples. Since MATLAB’s ttest2 function needs the actual data vectors, here's how one can do it manually:
Step 1: Gather the summary statistics (means, standard deviations, and sample sizes)
For example:
Step 2: Test for equality of variances, F-test could be used to compare variances:
F = (s1^2) / (s2^2);
df1 = n1 - 1;
df2 = n2 - 1;
p_var = 2 * min(1 - fcdf(F, df1, df2), fcdf(F, df1, df2));
Here, p_var is the p-value for the F-test. If p_var < 0.05, variances are significantly different.
Step 3: Calculate t-test
Case 1: Equal variances (pooled t-test used if p_var > 0.05)
sp2 = ((n1-1)*s1^2 + (n2-1)*s2^2) / (n1 + n2 - 2);
se = sqrt(sp2 * (1/n1 + 1/n2));
t = (m1 - m2) / se; % t-statistic
df = n1 + n2 - 2; % degrees of freedom
p = 2 * (1 - tcdf(abs(t), df)); % two-tailed p-value
Case 2: Unequal variances (Welch's t-test, used if p_var is not greater than 0.05)
se = sqrt(s1^2/n1 + s2^2/n2);
t = (m1 - m2) / se; % t-statistic
df = (se^4) / ((s1^2/n1)^2/(n1-1) + (s2^2/n2)^2/(n2-1)); % degrees of freedom
p = 2 * (1 - tcdf(abs(t), df)); % two-tailed p-value
Step 4: Display the results
fprintf('t = %.3f, df = %.2f, p = %.4f\n', t, df, p);
For more information on the functions used above please refer to the following documentation links:
0 Comments
See Also
Categories
Find more on Hypothesis Tests in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!