-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathonesamptint.m
38 lines (33 loc) · 936 Bytes
/
onesamptint.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function[interval, varargout] = onesamptint(C, inputs, varargin)
if inputs == "data"
x = varargin{1};
xbar = mean(x);
s = stdev(x);
n = length(x);
varargout{1} = xbar;
varargout{2} = s;
varargout{3} = n;
elseif inputs == "stats"
xbar = varargin{1};
s = varargin{2};
n = varargin{3};
end
se = s / sqrt(n);
df = n - 1;
T = -invt((1 - C) / 2, df);
lower = xbar - T * se;
upper = xbar + T * se;
interval = [lower, upper];
end
function[t] = invt(area, df)
B = integral(@(x)(x .^ (1 / 2 - 1) .* (1 - x) .^ (df / 2 - 1)), 0, 1);
T = @(x)((1 + x .^ 2 / df) .^ (-(df + 1) / 2) / (sqrt(df) * B));
t = fzero(@(x)(area - integral(T, -inf, x)), 0);
end
function[ans] = stdev(x)
ans = sqrt(variance(x));
end
function[ans] = variance(x)
n = length(x);
ans = sum((x - mean(x)) .^ 2) / (n - 1);
end