異分散データの分散の予測


15

私は、誤差分散と線形モデルの観点からの平均値を予測しようとする異分散データの回帰を試みています。このようなもの:

y(x,t)=y¯(x,t)+ξ(x,t),ξ(x,t)N(0,σ(x,t)),y¯(x,t)=y0+ax+bt,σ(x,t)=σ0+cx+dt.

言い換えると、データは、さまざまな値のxおよびtでのの反復測定で構成さy(x,t)れています。私は、これらの測定は、「真の」平均値から成ると仮定ˉ YX T の線形関数であり、X及びT加法ガウス雑音で、ξ X T 私は持っていない、その標準偏差(または分散また、x tに線形に依存します。(xにより複雑な依存関係を許可し、xty¯(x,t)xtξ(x,t)x,txt –線形形式の強力な理論的動機付けはありませんが、この段階で物事を複雑にしすぎないようにしたいです。)

私は「不均一」ここでは検索用語がある知っているが、すべては私がこれまでよりよく予測することがそれを削除/削減する方法の議論されている見つけることができましたy¯、しかししようという点では何もすることが予測しない σの観点から独立変数。私は推定したいと思いy0,a,b,σ0,c及びd信頼区間(またはベイジアン当量)で、そしてとても良くSPSSでそれを行うための簡単な方法があるかどうか!私は何をすべきか?ありがとう。


、いくつかの参照のために、この関連の質問を参照してくださいパラメータの関数として分散を
アンディ・Wに

GARCHを試しましたか?
アクサカル

一般化線形モデルは、問題に対処するブランチです。同じタイトルの本がありますが、非常にお勧めです。
ディエゴ

回答:


1

あなたの最初の問題は、はもはや正規分布ではなく、データをホモセダスティックに変換する必要がある方法は、σ x t が何であるかに正確に依存することだと思います。たとえば、σ x t = a x + b tの場合、誤差は比例型であり、回帰の前にyデータの対数を取るか、回帰を通常の最小二乗(OLS)から加重に調整する必要があります付き最小二乗1N(0,σ(x,t))σ(x,t)σ(x,t)=ax+bt重み(回帰を最小化した比例型エラーに変更します)。同様に、 σ x t = e a x + b tの場合、対数の対数を取り、それを回帰する必要があります。1/y2σ(x,t)=eax+bt

エラータイプの予測が十分にカバーされていない理由は、最初に古い回帰(うなり声、通常は通常の最小二乗、OLS)を行うためだと思います。そして、残差プロット、すなわちから、残差形状を観察し、データの頻度ヒストグラムをプロットして、それを調べます。次に、残差が右に開くファンビームである場合、比例データモデリングを試みます。ヒストグラムが指数関数的減衰のように見える場合は、平方根、平方、累乗について、往復、1 / yなどを試行します。、指数yを取ります。modely1/y

さて、それはほんの短い話です。長いバージョンには、Theil中央値回帰、デミング2変量回帰、最小化される伝播エラーとの適合度の関係が特にない不適切な問題のエラーを最小化する回帰など、非常に多くの種類の回帰が含まれます。最後はとてつもない大ぼらですが、それを参照してくださいこれを例として。答えが得ようとしているものが大きな違いを生むように。通常、変数間の関係を確立したい場合、ルーチンOLSは選択方法ではなく、Theil回帰はその上で迅速で汚い改善になります。OLSはy方向でのみ最小化されるため、勾配は浅すぎ、変数間の基本的な関係を確立するには切片が大きすぎます。これを別の言い方をすると、OLSはxが与えられたayの最小誤差推定値を与えますが、x がyとともにどのように変化するかの推定値を与えませ。r値が非常に高い(0.99999+)場合、使用する回帰はほとんど変わらず、yのOLSはxのOLSとほぼ同じですが、r値が低い場合、yのOLSはxのOLS。

要約すると、多くのことは、そもそも回帰分析を行う動機付けとなった推論が何であるかによって異なります。それは必要な数値的方法を決定します。その選択が行われた後、残差は回帰の目的に関連する構造を持ち、その大きなコンテキストで分析する必要があります。


0

STATS BREUSCH PAGAN拡張コマンドは、残差の不均一分散をテストし、それを一部またはすべてのリグレッサの関数として推定できます。


0

The general approach to problems of this kind is to maximize the (regularized) likelihood of your data.

LL(y0,a,b,σ0,c,d)=i=1nlogϕ(yi,y0+axi+bti,σ0+cxi+dti)
where
ϕ(x,μ,σ)=12πσe(xμ)22σ2

You can code this expression into a function in your favorite statistical package (I would prefer Python, R or Stata, for I never did programming in SPSS). Then you can feed it to a numerical optimizer, which will estimate optimal value θ^ of your parameters θ=(y0,a,b,σ0,c,d).

If you need confidence intervals, this optimizer can also estimate Hessian matrix H of θ (second derivatives) around the optimum. Theory of maximum likelihood estimation says that for large n covariance matrix of θ^ may be estimated as H1.

Here is an example code in Python:

import scipy
import numpy as np

# generate toy data for the problem
np.random.seed(1) # fix random seed
n = 1000 # fix problem size
x = np.random.normal(size=n)
t = np.random.normal(size=n)
mean = 1 + x * 2 + t * 3
std = 4 + x * 0.5 + t * 0.6
y = np.random.normal(size=n, loc=mean, scale=std)

# create negative log likelihood
def neg_log_lik(theta):
    est_mean = theta[0] + x * theta[1] + t * theta[2]
    est_std = np.maximum(theta[3] + x * theta[4] + t * theta[5], 1e-10)
    return -sum(scipy.stats.norm.logpdf(y, loc=est_mean, scale=est_std))

# maximize
initial = np.array([0,0,0,1,0,0])
result = scipy.optimize.minimize(neg_log_lik, initial)
# extract point estimation
param = result.x
print(param)
# extract standard error for confidence intervals
std_error = np.sqrt(np.diag(result.hess_inv))
print(std_error)

Notice that your problem formulation can produce negative σ, and I had to defend myself from it by brute force replacement of too small σ with 1010.

The result (parameter estimates and their standard errors) produced by the code is:

[ 0.8724218   1.75510897  2.87661843  3.88917283  0.63696726  0.5788625 ]
[ 0.15073344  0.07351353  0.09515104  0.08086239  0.08422978  0.0853192 ]

You can see that estimates are close to their true values, which confirms correctness of this simulation.

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.