অস্বাভাবিকভাবে সীমাবদ্ধ প্রতিক্রিয়ার ভেরিয়েবলের রিগ্রেশন নিয়ে কাজ করা


11

আমি এমন একটি প্রতিক্রিয়া পরিবর্তনশীল মডেল করার চেষ্টা করছি যা তাত্ত্বিকভাবে -225 এবং +225 এর মধ্যে আবদ্ধ। পরিবর্তনশীল হ'ল একটি গেম খেলার সময় সাবজেক্টের মোট স্কোর। যদিও তাত্ত্বিকভাবে বিষয়গুলির পক্ষে +225 স্কোর করা সম্ভব। এটি সত্ত্বেও যে স্কোরটি কেবলমাত্র বিষয়গুলির ক্রিয়াগুলির উপর নির্ভর করে না তবে অন্য যে কোন ক্রিয়াকলাপের উপর নির্ভর করে সর্বাধিক যে কেউ স্কোর করেছিল 125 (এটি সর্বোচ্চ 2 খেলোয়াড় একে অপরের সাথে খেলে উভয়ই স্কোর করতে পারে) এটি খুব উচ্চ ফ্রিকোয়েন্সি সহ ঘটেছিল। সর্বনিম্ন স্কোর ছিল +35।

125 এর এই সীমানা লিনিয়ার রিগ্রেশন সহ সমস্যা সৃষ্টি করছে causing কেবলমাত্র আমি যা করতে ভাবতে পারি তা হল 0 এবং 1 এর মধ্যে থাকা প্রতিক্রিয়াটিকে আবার স্কেল করা এবং বিটা রিগ্রেশন ব্যবহার করা। যদি আমি এটি করি তবে আমি নিশ্চিত না যে আমি 1252 শীর্ষস্থানীয় বাউন্ডারি (বা 1 রূপান্তরকরণের পরে) বলে সঠিকভাবে প্রমাণ করতে পারছি কারণ এটি +225 স্কোর করা সম্ভব is তদুপরি, আমি যদি এটি করি তবে আমার নীচের সীমানাটি কী হবে?

ধন্যবাদ,

জনাথন


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

উত্তর:


10

যদিও লিনিয়ার রিগ্রেশন নিয়ে আপনার সমস্যাটি সম্পর্কে আমি সম্পূর্ণরূপে নিশ্চিত নই তবে আমি সীমাবদ্ধ ফলাফলগুলি কীভাবে বিশ্লেষণ করব সে সম্পর্কে একটি নিবন্ধ শেষ করছি। যেহেতু আমি বিটা রিগ্রেশনটির সাথে পরিচিত নই হয়ত অন্য কেউ সেই বিকল্পটির উত্তর দেবে।

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

একটি পরিবর্তনশীল রূপান্তর প্রায়ই লিনিয়ার রিগ্রেশন নেভিগেশন মজার প্রভাব সৃষ্টি করতে পারে , উদাহরণস্বরূপ আপনার লজিস্টিক রূপান্তর মধ্যে একটি তাত্পর্য আছে কিন্তু এটি নিয়মিত মান হিসাবে অনুবাদ করে না। কোয়ান্টাইলগুলির ক্ষেত্রে এটি হয় না , রূপান্তর কার্যকারিতা নির্বিশেষে মিডিয়ান হ'ল সর্বদা মিডিয়ান। এটি আপনাকে কোনও কিছুই বিকৃতি না করে পিছনে পিছনে রূপান্তর করতে দেয়। অধ্যাপক বোট্টাই সীমিত ফলাফল 2 এ এই পদ্ধতির পরামর্শ দিয়েছিলেন , এটি একটি দুর্দান্ত পদ্ধতি যদি আপনি স্বতন্ত্র ভবিষ্যদ্বাণী করতে চান তবে এটির কিছু সমস্যা রয়েছে যখন আপনি বিটার দিকে তাকাতে এবং অ-লজিস্টিক উপায়ে সেগুলি ব্যাখ্যা করতে চান না it সূত্রটি সহজ:

আমিটি(Y)=(Y+ +εমিএকটিএক্স(Y)-Y+ +ε)

Yε

এখানে একটি উদাহরণ যা আমি কিছুক্ষণ আগে করেছি যখন আমি আর-তে এটি পরীক্ষা করতে চেয়েছিলাম:

library(rms)
library(lattice)
library(cairoDevice)
library(ggplot2)

# Simulate some data
set.seed(10)
intercept <- 0
beta1 <- 0.5
beta2 <- 1
n = 1000
xtest <- rnorm(n,1,1)
gender <- factor(rbinom(n, 1, .4), labels=c("Male", "Female"))
random_noise  <- runif(n, -1,1)

# Add a ceiling and a floor to simulate a bound score
fake_ceiling <- 4
fake_floor <- -1

# Simulate the predictor
linpred <- intercept + beta1*xtest^3 + beta2*(gender == "Female") + random_noise

# Remove some extremes
extreme_roof <- fake_ceiling + abs(diff(range(linpred)))/2
extreme_floor <- fake_floor - abs(diff(range(linpred)))/2
linpred[ linpred > extreme_roof|
    linpred < extreme_floor ] <- NA

#limit the interval and give a ceiling and a floor effect similar to scores
linpred[linpred > fake_ceiling] <- fake_ceiling
linpred[linpred < fake_floor] <- fake_floor

# Just to give the graphs the same look
my_ylim <- c(fake_floor - abs(fake_floor)*.25, 
             fake_ceiling + abs(fake_ceiling)*.25)
my_xlim <- c(-1.5, 3.5)

# Plot
df <- data.frame(Outcome = linpred, xtest, gender)
ggplot(df, aes(xtest, Outcome, colour = gender)) + geom_point()

এটি নিম্নলিখিত ডেটা স্ক্র্যাটার দেয়, আপনি দেখতে পাচ্ছেন যে এটি স্পষ্টভাবে সীমাবদ্ধ এবং অসুবিধেয় :

সীমাবদ্ধ ডেটা বিচ্ছুরক

###################################
# Calculate & plot the true lines #
###################################
x <- seq(min(xtest), max(xtest), by=.1)
y <- beta1*x^3+intercept
y_female <- y + beta2
y[y > fake_ceiling] <- fake_ceiling
y[y < fake_floor] <- fake_floor
y_female[y_female > fake_ceiling] <- fake_ceiling
y_female[y_female < fake_floor] <- fake_floor

tr_df <- data.frame(x=x, y=y, y_female=y_female)
true_line_plot <- xyplot(y  + y_female ~ x, 
                         data=tr_df,
                         type="l", 
                         xlim=my_xlim, 
                         ylim=my_ylim, 
                         ylab="Outcome", 
                         auto.key = list(
                           text = c("Male"," Female"),
                           columns=2))

##########################
# Test regression models #
##########################

# Regular linear regression
fit_lm <- Glm(linpred~rcs(xtest, 5)+gender, x=T, y=T)
boot_fit_lm <- bootcov(fit_lm, B=500)
p <- Predict(boot_fit_lm, xtest=seq(-2.5, 3.5, by=.001), gender=c("Male", "Female"))
lm_plot <- plot(p, 
             se=T, 
             col.fill=c("#9999FF", "#BBBBFF"), 
             xlim=my_xlim, ylim=my_ylim)

নিম্নলিখিত চিত্রের ফলস্বরূপ যেখানে মহিলারা স্পষ্টভাবে উপরের সীমানার উপরে আছেন:

সত্য লাইনের সাথে তুলনা করে লিনিয়ার রিগ্রেশন

# Quantile regression - regular
fit_rq <- Rq(formula(fit_lm), x=T, y=T)
boot_rq <- bootcov(fit_rq, B=500)
# A little disturbing warning:
# In rq.fit.br(x, y, tau = tau, ...) : Solution may be nonunique

p <- Predict(boot_rq, xtest=seq(-2.5, 3.5, by=.001), gender=c("Male", "Female"))
rq_plot <- plot(p, 
             se=T, 
             col.fill=c("#9999FF", "#BBBBFF"), 
             xlim=my_xlim, ylim=my_ylim)

এটি একই সমস্যা সহ নিম্নলিখিত প্লট দেয়:

প্রকৃত রেখার তুলনায় কোয়ান্টাইল রিগ্রেশন

# The logit transformations
logit_fn <- function(y, y_min, y_max, epsilon)
    log((y-(y_min-epsilon))/(y_max+epsilon-y))


antilogit_fn <- function(antiy, y_min, y_max, epsilon)
    (exp(antiy)*(y_max+epsilon)+y_min-epsilon)/
        (1+exp(antiy))

epsilon <- .0001
y_min <- min(linpred, na.rm=T)
y_max <- max(linpred, na.rm=T)

logit_linpred <- logit_fn(linpred, 
                            y_min=y_min,
                            y_max=y_max,
                            epsilon=epsilon)

fit_rq_logit <- update(fit_rq, logit_linpred ~ .)
boot_rq_logit <- bootcov(fit_rq_logit, B=500)

p <- Predict(boot_rq_logit, 
             xtest=seq(-2.5, 3.5, by=.001), 
             gender=c("Male", "Female"))

# Change back to org. scale
# otherwise the plot will be
# on the logit scale
transformed_p <- p
transformed_p$yhat <- antilogit_fn(p$yhat,
                                    y_min=y_min,
                                    y_max=y_max,
                                    epsilon=epsilon)
transformed_p$lower <- antilogit_fn(p$lower, 
                                     y_min=y_min,
                                     y_max=y_max,
                                     epsilon=epsilon)
transformed_p$upper <- antilogit_fn(p$upper, 
                                     y_min=y_min,
                                     y_max=y_max,
                                     epsilon=epsilon)

logit_rq_plot <- plot(transformed_p, 
             se=T, 
             col.fill=c("#9999FF", "#BBBBFF"), 
             xlim=my_xlim)

লজিস্টিক কোয়ান্টাইল রিগ্রেশন যার খুব সুন্দর বাউন্ডেড প্রেডিকশন রয়েছে:

লজিস্টিক কোয়ান্টাইল রিগ্রেশন

এখানে আপনি বিটাটির সাথে সমস্যাটি দেখতে পাচ্ছেন যে প্রতিশোধিত ফ্যাশনে বিভিন্ন অঞ্চলে (যেমন প্রত্যাশার সাথে) আলাদা হয়:

# Some issues trying to display the gender factor
contrast(boot_rq_logit, list(gender=levels(gender), 
                             xtest=c(-1:1)), 
         FUN=function(x)antilogit_fn(x, epsilon))

   gender xtest Contrast   S.E.       Lower      Upper       Z      Pr(>|z|)
   Male   -1    -2.5001505 0.33677523 -3.1602179 -1.84008320  -7.42 0.0000  
   Female -1    -1.3020162 0.29623080 -1.8826179 -0.72141450  -4.40 0.0000  
   Male    0    -1.3384751 0.09748767 -1.5295474 -1.14740279 -13.73 0.0000  
*  Female  0    -0.1403408 0.09887240 -0.3341271  0.05344555  -1.42 0.1558  
   Male    1    -1.3308691 0.10810012 -1.5427414 -1.11899674 -12.31 0.0000  
*  Female  1    -0.1327348 0.07605115 -0.2817923  0.01632277  -1.75 0.0809  

Redundant contrasts are denoted by *

Confidence intervals are 0.95 individual intervals

তথ্যসূত্র

  1. আর কোয়েঙ্কার এবং জি। বাসেট জুনিয়র, "রিগ্রেশন কোয়ান্টাইলস," একনোমেট্রিক: একনোমেট্রিক সোসাইটির জার্নাল, পৃষ্ঠা: ৩৩-–০, 1978।
  2. এম বোট্টাই, বি। কাই এবং আর ম্যাককাউন, "সীমিত ফলাফলের জন্য লজিস্টিক কোয়ান্টাইল রিগ্রেশন," মেডিসিনের পরিসংখ্যান, খণ্ড vol 29, না। 2, পিপি 309–317, 2010।

কৌতূহলের জন্য প্লটগুলি এই কোডটি ব্যবহার করে তৈরি করা হয়েছিল:

# Just for making pretty graphs with the comparison plot
compareplot <- function(regr_plot, regr_title, true_plot){
  print(regr_plot, position=c(0,0.5,1,1), more=T)
  trellis.focus("toplevel")
  panel.text(0.3, .8, regr_title, cex = 1.2, font = 2)
  trellis.unfocus()
  print(true_plot, position=c(0,0,1,.5), more=F)
  trellis.focus("toplevel")
  panel.text(0.3, .65, "True line", cex = 1.2, font = 2)
  trellis.unfocus()
}

Cairo_png("Comp_plot_lm.png", width=10, height=14, pointsize=12)
compareplot(lm_plot, "Linear regression", true_line_plot)
dev.off()

Cairo_png("Comp_plot_rq.png", width=10, height=14, pointsize=12)
compareplot(rq_plot, "Quantile regression", true_line_plot)
dev.off()

Cairo_png("Comp_plot_logit_rq.png", width=10, height=14, pointsize=12)
compareplot(logit_rq_plot, "Logit - Quantile regression", true_line_plot)
dev.off()

Cairo_png("Scat. plot.png")
qplot(y=linpred, x=xtest, col=gender, ylab="Outcome")
dev.off()

ভাল রেফারেন্স, পুনরায়: বিটা রিগ্রেশন আমি প্রস্তাব করব Smithson, M. and Verkuilen, J. (2006). A better lemon squeezer? maximum-likelihood regression with beta-distributed dependent variables. Psychological Methods, 11(1):54-71., ডিওআই , অনলাইন পিডিএফ । মেঝে / সিলিং এর প্রভাব সহ মডেল বিতরণগুলির জন্য এটির অনুরূপ অনুপ্রেরণা রয়েছে।
অ্যান্ডি ডাব্লু

@ অ্যান্ডিডাব্লু: আপনার রেফারেন্সের জন্য ধন্যবাদ, আমি কখনই বিটা রিগ্রেশনের মুখোমুখি হই নি তবে আশাব্যঞ্জক মনে হচ্ছে।
ম্যাক্স গর্ডন

@ ম্যাক্সগোর্ডন আপনি কীভাবে লজিস্টিক কোয়ানটাইল রিজ রিগ্রেশন বাস্তবায়ন করতে চান? আমার অনেকগুলি বৈশিষ্ট্য রয়েছে ....
পাস্কালভিকুটেন

@ দ্বৈততা দুঃখিত, আমি এটি চেষ্টা করিনি।
ম্যাক্স গর্ডন

@ প্যাসক্লভকুটেন আপনি যদি উচ্চ-বৈশিষ্ট্যযুক্ত ডেটা নিয়ে কাজ করতে চান তবে কোয়ান্টাইল রিগ্রেশন সেরা পছন্দ বলে আমি মনে করি না। যখন আমার কাছে এমন অনেকগুলি বৈশিষ্ট্য না থাকে তবে আমি ডেটা এবং বিভিন্ন অঞ্চলে ফলাফল কী চালাচ্ছে তার জন্য আরও ভাল অনুভূতি পেতে চাইলে আমি এটি আরও ব্যবহার করি।
ম্যাক্স গর্ডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.