Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,26 @@
# Compute the standard deviation of the observations
# seen so far, given the current state as input:
def standard_deviation: .ssd / .n | sqrt;
def update_state(observation):
def sq: .*.;
((.mean * .n + observation) / (.n + 1)) as $newmean
| (.ssd + .n * ((.mean - $newmean) | sq)) as $ssd
| { "n": (.n + 1),
"ssd": ($ssd + ((observation - $newmean) | sq)),
"mean": $newmean }
;
def initial_state: { "n": 0, "ssd": 0, "mean": 0 };
# Given an array of observations presented as input:
def simulate:
def _simulate(i; observations):
if (observations|length) <= i then empty
else update_state(observations[i])
| standard_deviation, _simulate(i+1; observations)
end ;
. as $in | initial_state | _simulate(0; $in);
# Begin:
simulate

View file

@ -0,0 +1,9 @@
$ jq -s -f Dynamic_standard_deviation.jq observations.txt
0
1
0.9428090415820634
0.8660254037844386
0.9797958971132711
0.9999999999999999
1.3997084244475302
1.9999999999999998

View file

@ -0,0 +1,6 @@
# requires jq version > 1.4
def simulate(stream):
foreach stream as $observation
(initial_state;
update_state($observation);
standard_deviation);

View file

@ -0,0 +1,38 @@
#!/bin/bash
# jq is assumed to be on PATH
PROGRAM='
def standard_deviation: .ssd / .n | sqrt;
def update_state(observation):
def sq: .*.;
((.mean * .n + observation) / (.n + 1)) as $newmean
| (.ssd + .n * ((.mean - $newmean) | sq)) as $ssd
| { "n": (.n + 1),
"ssd": ($ssd + ((observation - $newmean) | sq)),
"mean": $newmean }
;
def initial_state: { "n": 0, "ssd": 0, "mean": 0 };
# Input should be [observation, null] or [observation, state]
def standard_deviations:
. as $in
| if type == "array" then
(if .[1] == null then initial_state else .[1] end) as $state
| $state | update_state($in[0])
| standard_deviation, .
else empty
end
;
standard_deviations
'
state=null
while read -p "Next observation: " observation
do
result=$(echo "[ $observation, $state ]" | jq -c "$PROGRAM")
sed -n 1p <<< "$result"
state=$(sed -n 2p <<< "$result")
done

View file

@ -0,0 +1,7 @@
$ ./standard_deviation_server.sh
Next observation: 10
0
Next observation: 20
5
Next observation: 0
8.16496580927726