Diversity prediction theorem: Difference between revisions

m
→‎{{header|Phix}}: added syntax colouring, marked p2js compatible
m (→‎{{header|R}}: Improved syntax.)
m (→‎{{header|Phix}}: added syntax colouring, marked p2js compatible)
Line 949:
 
=={{header|Phix}}==
<!--<lang Phix>function mean(sequence sphixonline)-->
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
return sum(s)/length(s)
<span style="color: #008080;">function</span> <span style="color: #000000;">mean</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">)</span>
end function
<span style="color: #008080;">return</span> <span style="color: #7060A8;">sum</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">)/</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">)</span>
 
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
function variance(sequence s, atom d)
return mean(sq_power(sq_sub(s,d),2))
<span style="color: #008080;">function</span> <span style="color: #000000;">variance</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">atom</span> <span style="color: #000000;">d</span><span style="color: #0000FF;">)</span>
end function
<span style="color: #008080;">return</span> <span style="color: #000000;">mean</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">sq_power</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">sq_sub</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #000000;">d</span><span style="color: #0000FF;">),</span><span style="color: #000000;">2</span><span style="color: #0000FF;">))</span>
 
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
function diversity_theorem(atom reference, sequence observations)
atom average_error = variance(observations,reference),
<span style="color: #008080;">function</span> <span style="color: #000000;">diversity_theorem</span><span style="color: #0000FF;">(</span><span style="color: #004080;">atom</span> <span style="color: #000000;">reference</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">sequence</span> <span style="color: #000000;">observations</span><span style="color: #0000FF;">)</span>
average = mean(observations),
<span style="color: #004080;">atom</span> <span style="color: #000000;">average_error</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">variance</span><span style="color: #0000FF;">(</span><span style="color: #000000;">observations</span><span style="color: #0000FF;">,</span><span style="color: #000000;">reference</span><span style="color: #0000FF;">),</span>
crowd_error = power(reference-average,2),
<span style="color: #000000;">average</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">mean</span><span style="color: #0000FF;">(</span><span style="color: #000000;">observations</span><span style="color: #0000FF;">),</span>
diversity = variance(observations,average)
<span style="color: #000000;">crowd_error</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">power</span><span style="color: #0000FF;">(</span><span style="color: #000000;">reference</span><span style="color: #0000FF;">-</span><span style="color: #000000;">average</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">),</span>
return {{"average_error",average_error},
<span style="color: #000000;">diversity</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">variance</span><span style="color: #0000FF;">(</span><span style="color: #000000;">observations</span><span style="color: #0000FF;">,</span><span style="color: #000000;">average</span><span style="color: #0000FF;">)</span>
{"crowd_error",crowd_error},
<span style="color: #008080;">return</span> <span style="color: #0000FF;">{{</span><span style="color: #008000;">"average_error"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">average_error</span><span style="color: #0000FF;">},</span>
{"diversity",diversity}}
<span style="color: #0000FF;">{</span><span style="color: #008000;">"crowd_error"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">crowd_error</span><span style="color: #0000FF;">},</span>
end function
<span style="color: #0000FF;">{</span><span style="color: #008000;">"diversity"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">diversity</span><span style="color: #0000FF;">}}</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
procedure test(atom reference, sequence observations)
sequence res = diversity_theorem(reference, observations)
<span style="color: #008080;">procedure</span> <span style="color: #000000;">test</span><span style="color: #0000FF;">(</span><span style="color: #004080;">atom</span> <span style="color: #000000;">reference</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">sequence</span> <span style="color: #000000;">observations</span><span style="color: #0000FF;">)</span>
for i=1 to length(res) do
<span style="color: #004080;">sequence</span> <span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">diversity_theorem</span><span style="color: #0000FF;">(</span><span style="color: #000000;">reference</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">observations</span><span style="color: #0000FF;">)</span>
printf(1," %14s : %g\n",res[i])
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">res</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
end for
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" %14s : %g\n"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">res</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">])</span>
end procedure
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
test(49, {48, 47, 51})
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
test(49, {48, 47, 51, 42})</lang>
<span style="color: #000000;">test</span><span style="color: #0000FF;">(</span><span style="color: #000000;">49</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">48</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">47</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">51</span><span style="color: #0000FF;">})</span>
<span style="color: #000000;">test</span><span style="color: #0000FF;">(</span><span style="color: #000000;">49</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">48</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">47</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">51</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">42</span><span style="color: #0000FF;">})</span>
<!--</lang>-->
{{out}}
<pre>
7,805

edits