• ベストアンサー
  • すぐに回答を!

割合データの比較

  • 質問No.1704943
  • 閲覧数4192
  • ありがとう数2
  • 回答数2

お礼率 42% (3/7)

 エクセルで,数値の全データ(母集団)の中から,ある数値の範囲に入っているデータの数を割合(百分率)で求めています.
 この方法で求めた結果が2つあり,その2つの割合の結果に有意差があるか検定したい場合は,どのようにすれば良いでしょうか?
(例)・データ1
    母集団のデータ数6000
    →指定した数値の範囲に入っているデータ数
     600個(10%)
   ・データ2
    母集団のデータ数5500
    →指定した数値の範囲に入っているデータ数
     880個(16%)
この2つの結果(10%と16%)に有意差があるか検定したい.
例では母数が変えてありますが,母数が同じ場合での検定方法もできれば教えて下さい.
 説明が下手で分かりにくいかもしれませんが,是非教えて下さい.お願いします. 
 

質問者が選んだベストアンサー

  • 回答No.1
  • ベストアンサー

ベストアンサー率 62% (785/1258)

こんにちは。KenKen_SP です。

有意差検定の考え方を理解してしまえば、計算方法自体はさほど難しいない
と思います。WEB で検索してみましょう。

参考 URL をあげておきます。有意差検定について分かりやすい解説と、WEB
ページ上で Java Script による簡易検定が行える WEB ツールがあります。

http://www.blufi.co.jp/
お礼コメント
hikensyaG

お礼率 42% (3/7)

KenKen_SPさん
参考URLを教えて頂きありがとうございます.Java Script による簡易検定は,私がやりたいと考えていた事にピッタリだったのでとても役立ちます.
ただ,Javりa Script による簡易検定をエクセル上の関数を使用して行う事は,やはり難しいのでしょうか?よければ教えて下さい.
投稿日時:2005/10/11 00:35

その他の回答 (全1件)

  • 回答No.2

ベストアンサー率 62% (785/1258)

> エクセル上の関数を使用して行う事は,やはり難しいのでしょうか?

ご紹介した WEB サイト内に有意検定の考え方と検定方法が記載されて
います。それを Excel の数式に直していくだけですが、、、

SQRT:平方根を求める
ABS:絶対値を求める
ROUND:四捨五入で数値を丸める

などの関数を使えば統計量を求める数式はできると思います。

参考までに、VBA で簡易的な有意差検定を行うプログラムを書いておき
ます。各要素のセルをクリックしてゆけば、検定結果が表示され、
最後に統計量を求める数式をセルに書き込むようになっています。

ただし、取り急ぎで作ったので、「取りあえず動けばよし」ですが。

母数が同じ場合の検定方法については、省略しますが、ご紹介した
WEB サイト内に検定方法の記載があります。先にあげた、関数を使えば
Excel で十分やれますよ。

では。

Sub 異なるサンプル間の有意差検定()

  Dim s1v As Range, s1p As Range
  Dim s2v As Range, s2p As Range
  Dim a$, x$, b$, y$
  Dim aa#, xx#, bb#, yy#, cc#, dd#, ee#, ff#
  Dim strMes$, strResult$
  
  On Error GoTo Terminate
  
  'データ取得
  strMes = "該当データのセルをひとつ選択し、[OK]をクリックします。"
  With Application
    Set s1v = .InputBox(strMes, Title:="サンプル1", Type:=8)
    Set s1p = .InputBox(strMes, Title:="サンプル1比率", Type:=8)
    Set s2v = .InputBox(strMes, Title:="サンプル2", Type:=8)
    Set s2p = .InputBox(strMes, Title:="サンプル2比率", Type:=8)
  End With
  a = s1v.AddressLocal(False, False): aa = s1v.Value
  x = s1p.AddressLocal(False, False): xx = s1p.Value
  b = s2v.AddressLocal(False, False): bb = s2v.Value
  y = s2p.AddressLocal(False, False): yy = s2p.Value
  
  '有意判定
  cc = (aa * xx + bb * yy) / (aa + bb)
  dd = cc * (1 - cc)
  ee = (1 / aa) + (1 / bb)
  ff = Round(Abs(xx - yy) / Sqr(dd * ee), 3)
  Select Case ff
    Case Is >= 2.576: strResult = "有意水準1%で有意差あり"
    Case Is >= 1.96: strResult = "有意水準5%で有意差あり"
    Case Is >= 1.645: strResult = "有意水準10%で有意差あり"
    Case Is < 1.645: strResult = "有意差なし"
  End Select
  strMes = ""
  strMes = strMes & "サンプル1: " & vbTab & aa & vbCrLf
  strMes = strMes & "サンプル1比率: " & vbTab & Format(xx, "0%") & vbCrLf
  strMes = strMes & "サンプル2: " & vbTab & bb & vbCrLf
  strMes = strMes & "サンプル2比率: " & vbTab & Format(yy, "0%") & vbCrLf
  strMes = strMes & "統計量: " & vbTab & vbTab & ff & vbCrLf & vbCrLf
  strMes = strMes & "【検定結果】: " & vbTab & strResult
  MsgBox strMes, vbInformation
  
  strMes = "=Round(ABS(" & x & "-" & y & ")/SQRT((((" & a & "*" & x & "+" & b _
    & "*" & y & ")/(" & a & "+" & b & "))*(1-((" & a & "*" & x & "+" & b _
    & "*" & y & ")/(" & a & "+" & b & "))))*((1/" & a & ")+(1/" & b & "))),3)"
 
  Set s1v = Application.InputBox( _
    Prompt:="統計量を求める数式を書き込むセルを選択し、[OK]をクリック", Type:=8)
  s1v.Formula = strMes

Terminate:
End Sub
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ