কোনটি অপ্টিমাইজেশন অ্যালগরিদম আর-তে গ্ল্যাম ফাংশনে ব্যবহৃত হয়?


17

এই জাতীয় কোড ব্যবহার করে কেউ আর-তে লগইট রিগ্রেশন করতে পারে:

> library(MASS)
> data(menarche)
> glm.out = glm(cbind(Menarche, Total-Menarche) ~ Age,
+                                              family=binomial(logit), data=menarche)
> coefficients(glm.out)
(Intercept)         Age 
 -21.226395    1.631968

দেখে মনে হচ্ছে অপটিমাইজেশন অ্যালগরিদম রূপান্তরিত হয়েছে - ফিশার স্কোরিং অ্যালগরিদমের পদক্ষেপের সংখ্যা সম্পর্কে তথ্য রয়েছে:

Call:
glm(formula = cbind(Menarche, Total - Menarche) ~ Age, family = binomial(logit), 
    data = menarche)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.0363  -0.9953  -0.4900   0.7780   1.3675  

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -21.22639    0.77068  -27.54   <2e-16 ***
Age           1.63197    0.05895   27.68   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3693.884  on 24  degrees of freedom
Residual deviance:   26.703  on 23  degrees of freedom
AIC: 114.76

Number of Fisher Scoring iterations: 4

আমি কী উত্সাহিত এটি সর্বোত্তম অ্যালগরিদম সম্পর্কে? এটি কি নিউটন-রাফসন অ্যালগরিদম (দ্বিতীয় ক্রমের গ্রেডিয়েন্ট বংশোদ্ভূত)? আমি কাউচি অ্যালগরিদম (প্রথম ক্রমের গ্রেডিয়েন্ট বংশোদ্ভূত) ব্যবহার করতে কিছু পরামিতি সেট করতে পারি?


5
নিউটন-রাফসন অ্যালগরিদমকে "গ্রেডিয়েন্ট বংশোদ্ভূত স্তর II" হিসাবে উল্লেখ করা হয় যেখানে উল্লেখ করে আপনার আপত্তি আছে?
ক্লিফ এবি

4
এফিশার স্কোরিং নিজেই সম্পর্কিত, তবে নিউটন-র‌্যাফসনের থেকে আলাদা, বাস্তবে মডেলটির অধীনে হেসিয়ানকে প্রত্যাশিত মান দিয়ে প্রতিস্থাপন করবে।
গ্লেন_বি -রেইনস্টেট মনিকা

পুনঃটুইট আমি এটি Newton's methodদ্বিতীয় ক্রম গ্রেডিয়েন্ট বংশদ্ভুত পদ্ধতি।
মার্সিন কোসিস্কি

1
@ hxd1011, অন্য কারও প্রশ্ন পরিবর্তন করার জন্য আপনাকে সম্পাদনা করা উচিত নয়। এটা তোলে সম্পাদন করা যখন আপনি কি মনে করেন আপনি কি জানেন তারা যা মানে এক জিনিস, কিন্তু তাদের প্রশ্ন অস্পষ্ট (সম্ভবত ইংরেজি তাদের স্থানীয় ভাষায় নয়, যেমন), কিন্তু আপনি তাদের প্রশ্ন করা উচিত নয় বিভিন্ন (যেমন, আরও সাধারণ) তুলনায় তারা ছিল চেয়েছিলেন। পরিবর্তে, আপনি যা চান তা নিয়ে একটি নতুন প্রশ্ন জিজ্ঞাসা করুন। আমি সম্পাদনাটি আবার ঘুরিয়ে দিচ্ছি।
গুং - মনিকা পুনরায়

1
@ মার্সিনকোসিস্কি নিউটনের পদ্ধতি হ'ল নিউটন- র‌্যাফসন, রাফসন আরও সাধারণ মামলার জন্য কেবল নিউটনের ধারণাগুলির উপর নির্ভরশীল।
আদমো

উত্তর:


19

আপনি জানতে আগ্রহী যে ডকুমেন্টেশনগুলির glmমাধ্যমে অ্যাক্সেস করা, ?glmঅনেক দরকারী অন্তর্দৃষ্টি সরবরাহ করে: নীচে methodআমরা দেখতে পেলাম যে পুনরাবৃত্তির সাথে কমপক্ষে স্কোয়ারগুলি পুনঃনির্বাচিত হয় glm.fitযার জন্য ওয়ার্কহর্স ফাংশন glm। অতিরিক্তভাবে, ডকুমেন্টেশনে উল্লেখ করা হয়েছে যে ব্যবহারকারী-সংজ্ঞায়িত ফাংশনগুলি এখানে ডিফল্ট পরিবর্তে সরবরাহ করা যেতে পারে।


3
এছাড়াও আপনি শুধু ফাংশনের নাম টাইপ করতে পারেন glmবা fit.glmRপ্রম্পট সোর্স কোড অধ্যয়ন।
ম্যাথু ড্র্যারি

@ ম্যাথেজড্রুরি আমি মনে করি আপনার বোঝার মতো ওয়ার্কহর্স glm.fitযা পুরোপুরি পুনরুত্পাদনযোগ্য হবে না কারণ এটি সি কোডের উপর নির্ভর করে C_Cdqrls
আদমো

ইয়াহ, আপনি ঠিক বলেছেন, আমি আরডে অনেকটা মিশিয়ে দিচ্ছি। যদিও আপনি পুনরুত্পাদনযোগ্য না মানে?
ম্যাথু ড্রুরি

16

ব্যবহৃত পদ্ধতিটি আউটপুটে নিজেই উল্লেখ করা হয়েছে: এটি ফিশার স্কোরিং। এটি বেশিরভাগ ক্ষেত্রে নিউটন-রাফসনের সমান। আপনি অ-প্রাকৃতিক প্যারামিটারাইজেশন ব্যবহার করছেন এমন পরিস্থিতিতে ব্যতিক্রম। আপেক্ষিক ঝুঁকি প্রতিরোধ যেমন একটি দৃশ্যের উদাহরণ। সেখানে, প্রত্যাশিত এবং পর্যবেক্ষণ করা তথ্যগুলি আলাদা। সাধারণভাবে, নিউটন র‌্যাফসন এবং ফিশার স্কোরিং প্রায় অভিন্ন ফলাফল দেয়।

পিপি(1-পি)ফিশার স্কোরিং অতিরিক্তভাবে, এটি ইএম অ্যালগরিদমকে কিছু সুন্দর স্বীকৃতি দেয় যা জটিল সম্ভাবনাগুলি অনুমান করার জন্য আরও সাধারণ কাঠামো।

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

set.seed(1234)
x <- rnorm(1000)
y <- rbinom(1000, 1, exp(-2.3 + 0.1*x)/(1+exp(-2.3 + 0.1*x)))
f <- function(b) {
  p <- exp(b[1] + b[2]*x)/(1+exp(b[1] + b[2]*x))
  -sum(dbinom(y, 1, p, log=TRUE))
}
ans <- nlm(f, p=0:1, hessian=TRUE)

আমাকে দেয়

> ans$estimate
[1] -2.2261225  0.1651472
> coef(glm(y~x, family=binomial))
(Intercept)           x 
 -2.2261215   0.1651474 

গ্রেডিয়েন্ট শালীন / নিউটনের পদ্ধতি / বিএফজিএসের সাথে তুলনা করার পার্থক্য কী? আমি মনে করি আপনি ব্যাখ্যা করেছেন, তবে আমি বেশ অনুসরণ করছি না।
হাইতাও ডু

@ এইচএক্সডি 1011 "বেআইনীভাবে অপ্টিমাইজেশন এবং ননলাইনার সমীকরণের জন্য সাংখ্যিক পদ্ধতিগুলি" ডেনিস, জেই এবং
স্নাবেল

1
@ hxd1011 যতদূর আমি বলতে পারি, নিউটন র‌্যাফসনকে পদক্ষেপগুলিতে কোনও হেসিয়ান প্রয়োজন বা অনুমান করতে হবে না। নিউটোন-টাইপ পদ্ধতিটি nlmঅনুমানের অনুসারে গ্রেডিয়েন্টটি সংখ্যার পরে নিউটন রাফসন প্রয়োগ করে। বিএফজিএসে আমি মনে করি গ্রেটিয়েন্টটি নিউটন র‌্যাফসনের মতোই প্রয়োজন, তবে ধারাবাহিক পদক্ষেপগুলি দ্বিতীয় অর্ডার আনুমানিক ব্যবহার করে মূল্যায়ন করা হয় যার জন্য হেসিয়ান একটি অনুমান প্রয়োজন। BFGS অত্যন্ত ননলাইনার অপ্টিমাইজেশনের জন্য ভাল। তবে জিএলএমগুলির জন্য, তারা সাধারণত খুব ভাল আচরণ করে।
আদমো

2
বিদ্যমান উত্তরগুলি "পুনরাবৃত্তভাবে সর্বনিম্ন স্কোয়ারগুলি পুনরায় আলোকিত" উল্লেখ করা হয়েছে, আপনি এখানে উল্লিখিত অ্যালগরিদমের তুলনায় চিত্রটি কীভাবে প্রবেশ করবে?
অ্যামিবা বলছেন মনিকাকে

@ অ্যাডামো আপনি কি অমিবার মন্তব্যগুলিতে সম্বোধন করতে পারবেন? ধন্যবাদ
হাইটাও ডু

1

রেকর্ডের জন্য, ফিশার স্কোরিং (পুনরাবৃত্তভাবে ন্যূনতম স্কোয়ারগুলি) এর উপর ভিত্তি করে আর এর গ্ল্যাম অ্যালগরিদমের একটি সহজ খাঁটি আর বাস্তবায়ন, অন্য উত্তরে বর্ণিত হিসাবে:

glm_irls = function(X, y, weights=rep(1,nrow(X)), family=poisson(log), maxit=25, tol=1e-16) {
    if (!is(family, "family")) family = family()
    variance = family$variance
    linkinv = family$linkinv
    mu.eta = family$mu.eta
    etastart = NULL

    nobs = nrow(X)    # needed by the initialize expression below
    nvars = ncol(X)   # needed by the initialize expression below
    eval(family$initialize) # initializes n and fitted values mustart
    eta = family$linkfun(mustart) # we then initialize eta with this
    dev.resids = family$dev.resids
    dev = sum(dev.resids(y, linkinv(eta), weights))
    devold = 0
    beta_old = rep(1, nvars)

    for(j in 1:maxit)
    {
      mu = linkinv(eta) 
      varg = variance(mu)
      gprime = mu.eta(eta)
      z = eta + (y - mu) / gprime # potentially -offset if you would have an offset argument as well
      W = weights * as.vector(gprime^2 / varg)
      beta = solve(crossprod(X,W*X), crossprod(X,W*z), tol=2*.Machine$double.eps)
      eta = X %*% beta # potentially +offset if you would have an offset argument as well
      dev = sum(dev.resids(y, mu, weights))
      if (abs(dev - devold) / (0.1 + abs(dev)) < tol) break
      devold = dev
      beta_old = beta
    }
    list(coefficients=t(beta), iterations=j)
}

উদাহরণ:

## Dobson (1990) Page 93: Randomized Controlled Trial :
y <- counts <- c(18,17,15,20,10,20,25,13,12)
outcome <- gl(3,1,9)
treatment <- gl(3,3)
X <- model.matrix(counts ~ outcome + treatment)

coef(glm.fit(x=X, y=y, family = poisson(log))) 
  (Intercept)      outcome2      outcome3    treatment2    treatment3 
 3.044522e+00 -4.542553e-01 -2.929871e-01 -7.635479e-16 -9.532452e-16

coef(glm_irls(X=X, y=y, family=poisson(log)))
     (Intercept)   outcome2   outcome3    treatment2   treatment3
[1,]    3.044522 -0.4542553 -0.2929871 -3.151689e-16 -8.24099e-16

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.