従属変数または独立変数、あるいはその両方のログを取得すると、モデルのエラーに影響があり、したがって推論の妥当性に影響しますか?


7

私はよく人々(統計家や実務家)が再考せずに変数を変換しているのを見ます。エラーの分布が変更されて無効な推論につながる可能性があるので、私は常に変換を怖がっていますが、何かを誤解しなければならないのはよくあることです。

アイデアを修正するために、モデルがあるとします

Y=β0expXβ1+ϵ, ϵN(0,σ2)

これは原則としてNLSに適合します。しかし、ほとんどの場合、私は人々が丸太を取り、フィッティング

logY=logβ0+β1logX+???Z=α0+β1W+???

これはOLSで適合できることはわかっていますが、パラメーターの信頼区間を計算する方法がわかりません。今のところ、予測区間や許容区間はもちろんです。


そして、それは非常に単純なケースでした:かなり複雑な(私にとって)ケースを考えてください。 Y そして X アプリオリですが、GAMなどを使用してデータから推測しようとします。次のデータについて考えてみましょう。

library(readr)
library(dplyr)
library(ggplot2)

# data
device <- structure(list(Amplification = c(1.00644, 1.00861, 1.00936, 1.00944, 
1.01111, 1.01291, 1.01369, 1.01552, 1.01963, 1.02396, 1.03016, 
1.03911, 1.04861, 1.0753, 1.11572, 1.1728, 1.2512, 1.35919, 1.50447, 
1.69446, 1.94737, 2.26728, 2.66248, 3.14672, 3.74638, 4.48604, 
5.40735, 6.56322, 8.01865, 9.8788, 12.2692, 15.3878, 19.535, 
20.5192, 21.5678, 22.6852, 23.8745, 25.1438, 26.5022, 27.9537, 
29.5101, 31.184, 32.9943, 34.9456, 37.0535, 39.325, 41.7975, 
44.5037, 47.466, 50.7181, 54.2794, 58.2247, 62.6346, 67.5392, 
73.0477, 79.2657, 86.3285, 94.4213, 103.781, 114.723, 127.637, 
143.129, 162.01, 185.551, 215.704, 255.635, 310.876, 392.231, 
523.313, 768.967, 1388.19, 4882.47), Voltage = c(34.7732, 24.7936, 
39.7788, 44.7776, 49.7758, 54.7784, 64.778, 74.775, 79.7739, 
84.7738, 89.7723, 94.772, 99.772, 109.774, 119.777, 129.784, 
139.789, 149.79, 159.784, 169.772, 179.758, 189.749, 199.743, 
209.736, 219.749, 229.755, 239.762, 249.766, 259.771, 269.775, 
279.778, 289.781, 299.783, 301.783, 303.782, 305.781, 307.781, 
309.781, 311.781, 313.781, 315.78, 317.781, 319.78, 321.78, 323.78, 
325.78, 327.779, 329.78, 331.78, 333.781, 335.773, 337.774, 339.781, 
341.783, 343.783, 345.783, 347.783, 349.785, 351.785, 353.786, 
355.786, 357.787, 359.786, 361.787, 363.787, 365.788, 367.79, 
369.792, 371.792, 373.794, 375.797, 377.8)), .Names = c("Amplification", 
"Voltage"), row.names = c(NA, -72L), class = "data.frame")

ログ変換せずにデータをプロットした場合 X、結果のモデルと信頼限界はそれほど美しく見えません。

# build model
model <- gam(Voltage ~ s(Amplification, sp = 0.001), data = device)

# compute predictions with standard errors and rename columns to make plotting simpler 
Amplifications <- data.frame(Amplification = seq(min(APD_data$Amplification), 
                                           max(APD_data$Amplification), length.out = 500))
predictions <- predict.gam(model, Amplifications, se.fit = TRUE)
predictions <- cbind(Amplifications, predictions)
predictions <- rename(predictions, Voltage = fit) 

# plot data, model and standard errors
ggplot(device, aes(x = Amplification, y = Voltage)) +
  geom_point() +
  geom_ribbon(data = predictions, 
              aes(ymin = Voltage - 1.96*se.fit, ymax = Voltage + 1.96*se.fit), 
              fill = "grey70", alpha = 0.5) +
  geom_line(data = predictions, color = "blue")

ここに画像の説明を入力してください

しかし、ログ変換のみ X、それは信頼限界のようです Y はるかに小さくなる:

log_model <- gam(Voltage ~ s(log(Amplification)), data = device)
# the rest of the code stays the same, except for log_model in place of model

ここに画像の説明を入力してください 明らかに何か怪しいことが起こっています。これらの信頼区間は信頼できますか? EDITこれは単にそれが答えで提案されたように、平滑化の程度の問題ではありません。対数変換がない場合、平滑化パラメーターは

> model$sp
s(Amplification) 
     5.03049e-07 

対数変換を使用すると、平滑化パラメーターが実際にはるかに大きくなります。

>log_model$sp
s(log(Amplification)) 
         0.0005156608 

しかし、これが信頼区間が非常に小さくなる理由ではありません。実際のところ、さらに大きな平滑化パラメーターを使用しますがsp = 0.001、対数変換を回避すると、振動は減少しますが(対数変換の場合のように)、標準エラーは対数変換の場合に比べて非常に大きくなります。

smooth_model <- gam(Voltage ~ s(Amplification, sp = 0.001), data = device)
# the rest of the code stays the same, except for smooth_model in place of model

ここに画像の説明を入力してください

一般的に、変換をログに記録すると X および/または Y、信頼区間はどうなりますか?一般的なケースで定量的に答えることができない場合、私は最初のケース(指数モデル)に対して定量的な(つまり、式を示す)答えを受け入れ、少なくとも2番目のケースについては手を振る引数を与えます(GAMモデル)。


変数を「変換」すると、完全に異なるモデルに適合します。関連する信頼区間は、変換されたモデルが有効な場合(たとえば、最初の例では、エラーが元のスケールで実際に乗法的である場合)に有効ですが、モデルが異なるため、違います。変換を反転する必要がある場合は注意が必要です。β^0X~β1^ 新しいの公平な予測ではありません Y(しかし、それは中央値に偏りがない)。
Chris Haug、2017年

私はgamを知りません、そしてドキュメントは私が持っていない本を参照しています。ただし、モノの動作に基づいて、多項式を使用して未知の関数を近似しようとしていると思います。多項式は、y = ln(x)のような形状を近似するという不十分な仕事をします。これは、おそらく、ここでのgamの不十分なパフォーマンスを説明しています。ヒュー・パーキンス氏が言及しているリンギングは、ステップ関数や不十分な平滑化(ここでも疑わしい)ではなく、対数関数を近似するときに多項式がリンギングするという事実から来ています。あなたのデータは私には多項式ではなく、対数的に見えます。Vuongのテストでテストできます。
ビル

@Billは、入力に感謝します。GAMは多項式を使用しませんが、多項式のすべての問題がないペナルティ付き回帰スプラインを使用します(たとえば、Jamesらによる「統計学習の概要」を参照)。実際には、によって利用可能なスプライン基準の1つmgcvは、タイプの項の合計として表すことができます。x2log(x)-やってみます。Voungのテストとは何ですか?詳細を教えてください。Rパッケージに実装されているかどうか知っていますか?
DeltaIV 2017年

1
クリス・ハウグのポイントは、再変換問題と呼ばれています。サイト上のそのトピックに関する多くの質問と回答があります。私はそのトピックに一般的にいくつかの質問に答えました、あなたはここにものを見つけることができます。stats.stackexchange.com/questions/55692/...
ビル

1
ここ(私は思う)は私がリンクしたものです: herc.research.va.gov/include/page.asp?id
Bill

回答:


2

リンギングが見られます。これは、ローパスフィルター(GAM)を通過する高周波変化(ステップ関数)の結果です。

対数変換を適用する場合は、左側のグラフの垂直に近い部分の勾配を変更します。これにより、急勾配がやや少なくなり、暗黙の高周波が少なくなり、リンギング効果がなくなります。

編集:ここで鳴っているいくつかの写真:https : //electronics.stackexchange.com/questions/79717/what-c​​an-reduce-overshoot-and-ringing-on-a-simple-square-wave-pulse-generator

Edit2:スムージングは​​本質的にリンギングを引き起こしているローパスフィルターであるため、スムージングを増やすとリンギングが増えることに注意してください。何が左側に上昇崖のエッジの点を削除し、そして修理され、または2 1.例えばあろうリンギングを減少させるであろう低減平滑化のカットオフ周波数を上げる/平滑化を、または3周波数/増加波長を減少させます。

クリフエッジビットを削除すると、グラフの残りの部分がほぼ直線になることがわかります。それで、GAMがこれらのポイントを介して正弦波をフィッティングするのはなぜですか。これは完全に、クリフエッジパーツが非常に高い勾配を強制しているため、その後にオーバーシュートが発生するためです。

Edit3:それが私なら、グラフをほぼ直線に変換する変換を見つけようと思います。その変換がどうなるかはよくわかりませんが、グラフが平坦な線に非常に近く、約380程度に漸近するように見えます。これは、たとえばlog、フラットっぽくなりますが、それほど速くはないと思いますが、より強い非線形性です。多分逆シグモイドのようなものですか?シグモイドは:

y=11+exp(x)

...のようになります(wikipedia https://en.wikipedia.org/wiki/Sigmoid_functionから)

ここに画像の説明を入力してください

逆シグモイドはlogit関数ですhttps://en.wikipedia.org/wiki/Logit

f(x)=log(11x)

たぶん、これに関連する変換、またはこれのパラメータ化されたバージョンにより、グラフが直線に近くなり、標準の統計的手法の影響を受けやすくなりますか?


あなたが言っていることが正しい場合、gam交差検証によってGAMの平滑化パラメーターを選択させるのではなく、GAMの平滑化パラメーターを手動で増やすだけで同じ結果を得ることができます。興味深い:私はそれをテストします。私は洞察に感謝します(+1)が、対数変換が信頼区間に及ぼす影響の元の質問には答えません。
DeltaIV 2017年

あなたの答えは正しくないか、少なくとも不完全です。私の実験で証明したように、信頼区間に対する対数変換の影響は平滑化の増加によるものではありません。対数変換を行わないが、さらに平滑化を適用すると、はるかに大きな信頼区間が得られます。編集した質問を参照してください。
DeltaIV 2017年

リンギングに対するスムージングの変更の影響についての考えを追加しました。logitグラフを直線に近いものに変換するためのの使用の可能性
Hugh Perkins

私の実験では、スムージングを減らすことでリンギングが増加しました。しかし、それでも、私の問題は回帰曲線ではなく信頼区間にあります。あなたの答えはそれらをカバーしていません。
DeltaIV 2017年

ウィキペディアのen.wikipedia.org/wiki/Simple_linear_regressionセクションの「モデルベースのプロパティ」に、OLSの信頼区間を取得する方法の説明があります。これはどういう意味ですか?
ヒューパーキンス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.