s3meansd.html 平均・標準偏差

統計学入門(P.24)

   平 均・標準偏差 (Mean and SD)



粗データより、平均・標準偏差を求める。
また、粗データより歪度、尖度、p 次の積率を求めることもできる。

さらに、度数分布表データから、平均・標準偏差を計算する関数も用意されている。


プログラム

// mean sd ---------------------
document.write("<br>Mean and SD<br>")

function mean(x) {
  sum=0
  for (i=0; i<x.length; i++) sum=sum+x[i]
  mean=sum / x.length
  return mean }
  
function xsd(x) {
  sum=0; ssum=0
  for (i=0; i<x.length; i++) {
  sum=sum+x[i]; ssum=ssum + x[i] * x[i] }
  mean=sum / x.length
  sd=Math.sqrt(ssum / x.length - mean*mean);
  return sd }

function pmom(x,p) {
  n=x.length; sum=0
  for (i=0; i<n; i++) sum=sum+x[i];
  mean=sum / n
  sum=0
  for (i=0; i -->


// Freq Mean SD ---------------------
// shincho freq, n=60

function sum(f)
{ sum=0
  for (i=0; i<x.length; i++) sum=sum+f[i]
  return sum }

function freqmean(x,f)
{ xm=0; n=0
  for (i=0; i<x.length; i++) {
    xm=xm + x[i]*f[i]; n=n+f[i] }
  xm=xm/n
  return xm }

function freqsd(x,f)
{ xm=0; xsd=0; n=0
  for (i=0; i<x.length; i++) {
    xm=xm + x[i]*f[i]; xsd=xsd + x[i]*x[i]*f[i]; n=n+f[i] }
  xm=xm/n; xsd=Math.sqrt(xsd/n - xm*xm)
  return xsd }

// main
  xm=freqmean(x,f); sd=freqsd(x,f); n=sum(f)
  document.write("Mean=",xm,"<br>SD=", sd, "<br>n=", n, "<p>")
  document.write("End<br>")
  
// End of Program  


実行結果




出力結果整形
  xf
0146 1
1149 2
2152 8
3155 17
4158 13
5161 8
6164 7
7167 3
8170 1
 60
Mean157.6
SD4.913



課題

  • 体重、通学時間の粗データから、平均、標準偏差、歪度、尖度を計算せよ。
    
      weight=new Array(
      46,45,42,44,48,50,50,50,55,48,
      51,51,60,45,49,52,56,43,49,51,
      48,53,58,49,48,50,47,55,46,54,
      53,51,58,52,43,49,46,52,53,43,
      53,47,52,46,54,46,44,50,52,44,
      47,49,53,55,45,48,54,56,70,44)
      
      
      comute=new Array(
      20,30,20,10,90,120,20,30,65,10,30,110,30,90,15,5,110,90,30,75,
      100,20,80,30,150,90,120,95,50,65,60,40,115,20,100,35,40,55,80,70,
      100,130,100,80,25,10,15,85,30,15,25,125,100,15,45,20,90,25,85,15,
      65,25,10,40,70,45,50,10,70,85,60,45,80,20,30,5,30,90,10,45)