লগ-ট্রান্সফর্মড রেসপন্স ভেরিয়েবলের জন্য LM এবং GLM এর মধ্যে নির্বাচন করা


55

আমি জেনারালাইজড লিনিয়ার মডেল (জিএলএম) বনাম লিনিয়ার মডেল (এলএম) ব্যবহার করার পিছনে দর্শনটি বোঝার চেষ্টা করছি। আমি নীচে সেট করে একটি উদাহরণ ডেটা তৈরি করেছি যেখানে:

log(y)=x+ε

উদাহরণটির মধ্যে ত্রুটি নেই এর এর ফাংশন হিসাবে , তাই আমি ধরে নেব যে লগ-ট্রান্সফর্মড y এর লিনিয়ার মডেলটি সেরা হবে। নীচের উদাহরণে, প্রকৃতপক্ষে এটি ক্ষেত্রে (আমার মনে হয়) - যেহেতু লগ-রূপান্তরিত ডেটাতে এলএম এর এআইসি সবচেয়ে কম lowest লগ-লিঙ্ক ফাংশন সহ গামা বিতরণ জিএলএমের এআইসির স্কোয়ারগুলি কম পরিমাণে (এসএস) থাকে, তবে স্বাধীনতার অতিরিক্ত ডিগ্রি কিছুটা বেশি এআইসির ফলে আসে। আমি অবাক হয়েছিলাম যে গাউসীয় বিতরণ এআইসি এত বেশি (যদিও এসএস মডেলগুলির মধ্যে সবচেয়ে কম)।yεy

আমি কখন জিএলএম মডেলগুলির সাথে যোগাযোগ করা উচিত সে সম্পর্কে কিছু পরামর্শ নেওয়ার প্রত্যাশা করছি - অর্থাৎ আমার এলএম মডেলের ফিট রিসিডুয়ালগুলিতে এমন কিছু আছে যা আমাকে বলতে হবে যে অন্য বিতরণটি আরও উপযুক্ত? এছাড়াও, একটি উপযুক্ত বিতরণ পরিবার নির্বাচন করার ক্ষেত্রে কীভাবে এগিয়ে যাওয়া উচিত।

আপনার সাহায্যের জন্য অগ্রিম ধন্যবাদ.

[সম্পাদনা]: আমি এখন সারাংশের পরিসংখ্যানগুলি সমন্বয় করেছি যাতে লগ-ট্রান্সফর্মড লিনিয়ার মডেলের এসএস লগ-লিংক ফাংশনের সাথে জিএলএম মডেলের সাথে তুলনীয় হয়। পরিসংখ্যানগুলির একটি গ্রাফ এখন দেখানো হয়েছে।

উদাহরণ

set.seed(1111)
n <- 1000
y <- rnorm(n, mean=0, sd=1)
y <- exp(y)
hist(y, n=20)
hist(log(y), n=20)

x <- log(y) - rnorm(n, mean=0, sd=1)
hist(x, n=20)

df  <- data.frame(y=y, x=x)
df2 <- data.frame(x=seq(from=min(df$x), to=max(df$x),,100))


#models
mod.name <- "LM"
assign(mod.name, lm(y ~ x, df))
summary(get(mod.name))
plot(y ~ x, df)
lines(predict(get(mod.name), newdata=df2) ~ df2$x, col=2)

mod.name <- "LOG.LM"
assign(mod.name, lm(log(y) ~ x, df))
summary(get(mod.name))
plot(y ~ x, df)
lines(exp(predict(get(mod.name), newdata=df2)) ~ df2$x, col=2)

mod.name <- "LOG.GAUSS.GLM"
assign(mod.name, glm(y ~ x, df, family=gaussian(link="log")))
summary(get(mod.name))
plot(y ~ x, df)
lines(predict(get(mod.name), newdata=df2, type="response") ~ df2$x, col=2)

mod.name <- "LOG.GAMMA.GLM"
assign(mod.name, glm(y ~ x, df, family=Gamma(link="log")))
summary(get(mod.name))
plot(y ~ x, df)
lines(predict(get(mod.name), newdata=df2, type="response") ~ df2$x, col=2)

#Results
model.names <- list("LM", "LOG.LM", "LOG.GAUSS.GLM", "LOG.GAMMA.GLM")

plot(y ~ x, df, log="y", pch=".", cex=3, col=8)
lines(predict(LM, newdata=df2) ~ df2$x, col=1, lwd=2)
lines(exp(predict(LOG.LM, newdata=df2)) ~ df2$x, col=2, lwd=2)
lines(predict(LOG.GAUSS.GLM, newdata=df2, type="response") ~ df2$x, col=3, lwd=2)
lines(predict(LOG.GAMMA.GLM, newdata=df2, type="response") ~ df2$x, col=4, lwd=2)
legend("topleft", legend=model.names, col=1:4, lwd=2, bty="n") 

res.AIC <- as.matrix(
    data.frame(
        LM=AIC(LM),
        LOG.LM=AIC(LOG.LM),
        LOG.GAUSS.GLM=AIC(LOG.GAUSS.GLM),
        LOG.GAMMA.GLM=AIC(LOG.GAMMA.GLM)
    )
)

res.SS <- as.matrix(
    data.frame(
        LM=sum((predict(LM)-y)^2),
        LOG.LM=sum((exp(predict(LOG.LM))-y)^2),
        LOG.GAUSS.GLM=sum((predict(LOG.GAUSS.GLM, type="response")-y)^2),
        LOG.GAMMA.GLM=sum((predict(LOG.GAMMA.GLM, type="response")-y)^2)
    )
)

res.RMS <- as.matrix(
    data.frame(
        LM=sqrt(mean((predict(LM)-y)^2)),
        LOG.LM=sqrt(mean((exp(predict(LOG.LM))-y)^2)),
        LOG.GAUSS.GLM=sqrt(mean((predict(LOG.GAUSS.GLM, type="response")-y)^2)),
        LOG.GAMMA.GLM=sqrt(mean((predict(LOG.GAMMA.GLM, type="response")-y)^2))
    )
)

png("stats.png", height=7, width=10, units="in", res=300)
#x11(height=7, width=10)
par(mar=c(10,5,2,1), mfcol=c(1,3), cex=1, ps=12)
barplot(res.AIC, main="AIC", las=2)
barplot(res.SS, main="SS", las=2)
barplot(res.RMS, main="RMS", las=2)
dev.off()

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন


Log.lm এ পূর্বাভাসিত মানটির সূত্রটি ভুল। এর মাঝারি দেয় । প্রত্যাশিত মান পেতে, যোগ মধ্যে এক্সপোনেন্টexp(Xbeta^)y1/2×sigma2
pauljohn32

1
আর একটি মডেল, যার জন্য আর কোনও পরিবার সরবরাহ করে না, এটি লগনরমাল বিতরণ। এসএএস এটি মাপসই করবে, কেন জানি না কেন আর গ্ল্যাম নেই। কেউ কেউ tgat এর জন্য আর প্যাকেজ গ্যাম্লস দেওয়ার পরামর্শ দেয় তবে এটি কখনই আমার পক্ষে বোধগম্য হয় না। আপনার ভাগ্য ভাল হতে পারে।
pauljohn32

উত্তর:


23

এই ইস্যুটির মাধ্যমে চিন্তা করার জন্য ভাল প্রচেষ্টা। এখানে একটি অসম্পূর্ণ উত্তর, কিন্তু পরবর্তী পদক্ষেপের জন্য কিছু সূচনা।

প্রথমত, সম্ভাবনার উপর ভিত্তি করে এআইসি স্কোরগুলি বিভিন্ন বিতরণ এবং লিঙ্ক ফাংশনগুলির কারণে বিভিন্ন স্কেলে হয়, সুতরাং তুলনীয় নয়। আপনার স্কোয়ারের সমষ্টি এবং গড় স্কোয়ারের যোগফলকে মূল স্কেলতে গণনা করা হয়েছে এবং তাই একই স্কেলে রয়েছে, তাই তুলনা করা যায়, যদিও এটি মডেল নির্বাচনের জন্য একটি ভাল মানদণ্ড কিনা অন্য প্রশ্ন (এটি হতে পারে, বা নাও হতে পারে) - এর কিছু ভাল আলোচনার জন্য মডেল নির্বাচনের উপর ক্রস বৈধতাযুক্ত সংরক্ষণাগারগুলি অনুসন্ধান করুন)।

আপনার আরও সাধারণ প্রশ্নের জন্য, সমস্যার দিকে মনোনিবেশ করার একটি ভাল উপায় হল LOG.LM (লগ (y) হিসাবে প্রতিক্রিয়া সহ আপনার লিনিয়ার মডেল) এর মধ্যে পার্থক্য বিবেচনা করা; এবং LOG.GAUSS.GLM, y হিসাবে প্রতিক্রিয়া সহ একটি লগ লিঙ্ক ফাংশন। প্রথম ক্ষেত্রে আপনি যে মডেলটিকে ফিট করছেন তা হ'ল:

log(y)=Xβ+ϵ ;

এবং গ্ল্যাম () ক্ষেত্রে এটি:

log(y+ϵ)=Xβ

এবং উভয় ক্ষেত্রেই বিতরণ করা হয় ।ϵN(0,σ2)


3
Glm এর চরিত্রায়ন সঠিক দেখাচ্ছে না: বাম দিকের একটি র্যান্ডম পরিবর্তনশীল যখন ডান দিকে শুধুমাত্র ডেটা এবং পরামিতি কিন্তু কোন র্যান্ডম ভেরিয়েবল রয়েছে। ϵ
whuber

4
এটা নির্বাণ একটি বিজোড় আমি @whuber জানি কিন্তু থেকে আসে হয়ে । লিঙ্কটি ফাংশনটি কাছাকাছি যায়E(Y)=g1(Xβ)g(E(Y))=XβE(Y)
পিতর এলিস

: আমি এই খুব সহায়ক বলে চিহ্নিত করেছেন christoph-scherber.de/content/PDF%20Files/...
আদিত্য

16

আরও সাধারণ উপায়ে, এবং এক নয় Also এছাড়াও জিএলএম দ্বারা তৈরি ভিন্নতা অনুমানগুলি ওএলএসের তুলনায় আরও নমনীয় এবং নির্দিষ্ট হিসাবে মডেলিং পরিস্থিতি গণনা বৈকল্পিক হিসাবে পৃথক বিতরণ পরিবার গ্রহণ ভিন্ন হতে পারে।ln ( [ E ( Y | X ] )E[ln(Y|x)]ln([E(Y|X])

আমার মতে বিতরণ পরিবার সম্পর্কে বৈচিত্র এবং গড়ের সাথে এর সম্পর্ক সম্পর্কে একটি প্রশ্ন। উদাহরণস্বরূপ গাউসীয় পরিবারে আমাদের ধ্রুব বৈকল্পিকতা রয়েছে। গামা পরিবারে আমাদের গড়ের চতুষ্কোণ কার্য হিসাবে বৈচিত্র রয়েছে। লাগানো মানগুলিতে বনাম আপনার স্ট্যান্ডার্ডাইজড রেসিডুয়ালগুলি প্লট করুন এবং সেগুলি কীভাবে তা দেখুন।


1
সঠিক পরিবারটি কীভাবে চয়ন করবেন (এবং আমি এখানে আরও কিছু বিস্তৃত থাকার জন্য এখানে জায়গা বলতে পারি) সম্পর্কিত প্রশ্নের সাথে সম্পর্কিত +1
ইটোভ

7

দুর্ভাগ্যক্রমে, আপনার Rকোডটি এমন উদাহরণে নেতৃত্ব দেয় না যেখানে । পরিবর্তে, আপনার উদাহরণ । এখানে ত্রুটিগুলি অনুভূমিক, উল্লম্ব নয়; এগুলি ত্রুটি, ত্রুটি নয় । স্বজ্ঞাতভাবে, মনে হয় এটির মতো কোনও পার্থক্য করা উচিত নয়, তবে তা ঘটে। আপনি আমার উত্তরটি এখানে পড়তে চাইতে পারেন: x এর সাথে x এবং x এর সাথে y এর ক্ষেত্রে লিনিয়ার রিগ্রেশনটির মধ্যে পার্থক্য কী? আপনার সেটআপ "ডান" মডেল কী তা ইস্যুটিকে জটিল করে তোলে। কঠোরভাবে, ডান মডেলটি বিপরীত রিগ্রেশন: x = লগ ( y ) + ε x ylog(y)=x+εx=log(y)+εxy

ly = log(y)
REVERSE.REGRESSION = lm(x~ly)
summary(REVERSE.REGRESSION)
# Call:
# lm(formula = x ~ ly)
# 
# Residuals:
#      Min       1Q   Median       3Q      Max 
# -2.93996 -0.64547 -0.01351  0.63133  2.92991 
# 
# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)    
# (Intercept)  0.01563    0.03113   0.502    0.616    
# ly           1.01519    0.03138  32.350   <2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.984 on 998 degrees of freedom
# Multiple R-squared:  0.5119,    Adjusted R-squared:  0.5114 
# F-statistic:  1047 on 1 and 998 DF,  p-value: < 2.2e-16

এই মডেলটির জন্য মেট্রিকগুলি (এআইসির মতো) আপনার মডেলগুলির সাথে তুলনীয় হবে না। তবে, আমরা জানি যে তথ্য উত্পন্ন করার প্রক্রিয়ার উপর ভিত্তি করে এটি সঠিক মডেল এবং লক্ষ্য করুন যে অনুমান সহগগুলি লক্ষ্যমাত্রায় সঠিক।


আপনার মন্তব্যের জন্য ধন্যবাদ. আমি স্বীকার করি, উদাহরণস্বরূপ ডেটা আরও ভাল হতে পারত, তবে আমি বিশ্বাস করি যে এটি ত্রুটিগুলি কীভাবে তৈরি করেছিল তাতে এটি সঠিক হতে পারে। উদাহরণস্বরূপ, কোনও বিরতি নেই এবং x = log(y) - rnorm(n, mean=0, sd=1)slাল ১। আপনি যদি লাইনটি ঘুরিয়ে নেন তবে আপনি লগ (y) = x + rnorm (এন, গড় = 0, এসডি = 1) পাবেন। যদি @ হুশারদের মন্তব্য আপনার উত্তর তৈরি করেছে (আমি বিশ্বাস করি এটি হয়েছিল) তবে আমি বিশ্বাস করি তিনি ডেটা জেনারেশনটির কথা উল্লেখ করছেন না, বরং @ পিটারেলিস দ্বারা জিএলএম মডেল গঠনের কথা উল্লেখ করছেন।
মার্কে মার্ক করুন

0

পছন্দটি আপনার পরিবর্তনশীলটির উপর ভিত্তি করে আপনার অনুমানের উপর নির্ভর করে।

লগ রূপান্তরটি on উপর ভিত্তি করে

Var(XtE(Xt)=constant

গামা বিতরণ উপর ভিত্তি করে

Var(Xt)E(Xt)=constant

লগ রূপান্তর অনুমান উপর নির্ভর করে যে,

Var(Xt=E(Xt)σ

এইভাবে,

Xt=Xt=E(Xt)XtE(Xt)=E(Xt)XtE(Xt)+E(Xt)E(Xt)=E(Xt)(1+XtE(Xt)E(Xt))

টেলরের নিয়মের ভিত্তিতে,

log(1+x)x

আমরা পেতে

log(1+XtE(Xt)E(Xt))=XtE(Xt)E(Xt)

সুতরাং,

Xt=E(Xt)(1+XtE(Xt)E(Xt))logXt=logE(Xt)+log(1+XtE(Xt)E(Xt))=logE(Xt)+XtE(Xt)E(Xt)E(logXt)logE(Xt)

তবে গামা বিতরণ অনুমানের উপর নির্ভর করে যে,

YΓ(α,β)

{E(yi)=αiβiVar(yi)=αiβi2Var(yi)E(yi)=βi
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.