হাতের সাহায্যে বক্ররেখার আওতাধীন অঞ্চল (এউসি) বা সি-স্ট্যাটিস্টিক কীভাবে গণনা করা যায়


78

বাইনারি লজিস্টিক রিগ্রেশন মডেলটির জন্য হাত বক্ররেখার (এউসি), বা সি-স্ট্যাটিস্টিকের অধীনে অঞ্চল গণনা করতে আমি আগ্রহী।

উদাহরণস্বরূপ, বৈধতা ডেটাসেটে, নির্ভরশীল ভেরিয়েবল, রিটেনশন (1 = ধরে রাখা; 0 = ধরে রাখা হয়নি) এর সত্যিকারের মূল্য আমার আছে, পাশাপাশি প্রতিটি পর্যবেক্ষণের জন্য আমার প্রতিরোধ বিশ্লেষণের দ্বারা উত্পাদিত একটি মডেল ব্যবহার করে পূর্বাভাস প্রাপ্ত প্রতিরোধের স্থিতি রয়েছে প্রশিক্ষণ সেট ব্যবহার করে নির্মিত (এটি 0 থেকে 1 অবধি হবে)।

আমার প্রাথমিক চিন্তাগুলি ছিল মডেল শ্রেণিবদ্ধকরণের "সঠিক" সংখ্যা চিহ্নিত করা এবং সি-স্ট্যাটিস্টিকগুলি গণনা করার জন্য কেবল "সঠিক" পর্যবেক্ষণের সংখ্যাকে মোট পর্যবেক্ষণের সংখ্যা দ্বারা বিভক্ত করা। "সঠিক" দ্বারা, যদি কোনও পর্যবেক্ষণের সত্য ধারণার স্থিতি = 1 এবং পূর্বাভাসিত ধারণার স্থিতি> 0.5 হয় তবে এটি একটি "সঠিক" শ্রেণিবদ্ধকরণ। তদ্ব্যতীত, যদি কোনও পর্যবেক্ষণের আসল ধারণার স্থিতি = 0 এবং পূর্বাভাসিত ধারণার স্থিতি <0.5 হয় তবে এটি একটি "সঠিক" শ্রেণিবদ্ধকরণ। আমি ধরে নিয়েছি একটি "টাই" ঘটতে পারে যখন পূর্বাভাসিত মান = 0.5, তবে সেই ঘটনাটি আমার বৈধতা ডেটাসেটে ঘটে না। অন্যদিকে, "ভুল" শ্রেণিবিন্যাস যদি পর্যবেক্ষণের সত্য ধারণার স্থিতি = 1 হয় এবং পূর্বাভাসিত ধারণার স্থিতি <0 হয়। 5 বা যদি কোনও ফলাফলের জন্য সত্য ধারণের স্থিতি = 0 এবং পূর্বাভাসপ্রাপ্ত ধারণার স্থিতি> 0.5 হয়। আমি টিপি, এফপি, এফএন, টিএন সম্পর্কে সচেতন, তবে এই তথ্য প্রদত্ত সি-স্ট্যাটিস্টিক কীভাবে গণনা করব সে সম্পর্কে সচেতন নই।

উত্তর:


115

আমি হ্যানলির & ম্যাকনিলের 1982-এর কাগজটি ' রিসিভার অপারেটিং বৈশিষ্ট্যযুক্ত (আরওসি) বক্ররেখার অধীনে অঞ্চলটির অর্থ এবং ব্যবহার ' সুপারিশ করব।

উদাহরণ

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

(1) অবশ্যই স্বাভাবিক: 33/3
(2) সম্ভবত স্বাভাবিক: 6/2
(3) প্রশ্নোত্তর: 6/2
(4) সম্ভবত অস্বাভাবিক: 11/11
(5) অবশ্যই অস্বাভাবিক: 2/33

সুতরাং এখানে মোট 58 'সাধারণ' রোগী এবং '51' অস্বাভাবিক লোক রয়েছে। আমরা দেখতে পাই যে ভবিষ্যদ্বাণীকারী 1, 'অবশ্যই স্বাভাবিক', রোগী সাধারণত স্বাভাবিক (36 রোগীর মধ্যে 33 এর ক্ষেত্রে সত্য) এবং যখন এটি 5 হয়, 'অবশ্যই অস্বাভাবিক' রোগীরা সাধারণত অস্বাভাবিক হন (33 টির ক্ষেত্রে সত্য) 35 জন রোগী), সুতরাং ভবিষ্যদ্বাণীকারী বোধগম্য হয়। তবে কীভাবে আমরা 2, 3, বা 4 এর স্কোর সহ একজন রোগীর বিচার করব? ফলস্বরূপ পরীক্ষার সংবেদনশীলতা এবং সুনির্দিষ্টতা নির্ধারণ করার জন্য রোগীদের অস্বাভাবিক বা সাধারণ হিসাবে বিচার করার জন্য আমরা কী আমাদের কাট অফ সেট করেছি।

সংবেদনশীলতা এবং নির্দিষ্টতা

আমরা বিভিন্ন কাট অফের জন্য অনুমান সংবেদনশীলতা এবং নির্দিষ্টতা গণনা করতে পারি । (আমি এখন থেকে 'সংবেদনশীলতা' এবং 'নির্দিষ্টতা' লিখব, মানগুলির অনুমানিত প্রকৃতিকে অন্তর্নিহিত হতে দেই))

যদি আমরা আমাদের কাট অফটি বেছে নিই যাতে আমরা সমস্ত রোগীদের অস্বাভাবিক হিসাবে শ্রেণিবদ্ধ করি , তাদের পরীক্ষার ফলাফল যা বলুক না কেন (যেমন, আমরা কাটফট 1+ বেছে নিই), আমরা 51/51 = 1 এর সংবেদনশীলতা পাব The / 58 = 0. এত ভাল শোনাচ্ছে না।

ঠিক আছে, সুতরাং একটি কম কঠোর কাটঅফ চয়ন করি। আমরা কেবলমাত্র রোগীদের 2 বা ততোধিক পরীক্ষার ফলাফল পেলে অস্বাভাবিক হিসাবে শ্রেণিবদ্ধ করি। তারপরে আমরা 3 অস্বাভাবিক রোগী মিস করি এবং 48/51 = 0.94 এর সংবেদনশীলতা রয়েছে। তবে আমাদের 33/58 = 0.57 এর অনেক বেশি নির্দিষ্টতা রয়েছে।

আমরা এখন এটি চালিয়ে যেতে পারি, বিভিন্ন কাট অফগুলি (3, 4, 5,> 5) চয়ন করে। (শেষের ক্ষেত্রে, আমরা কোনও রোগীকে অস্বাভাবিক হিসাবে শ্রেণিবদ্ধ করব না , এমনকি যদি তাদের সর্বোচ্চ 5 এর স্কোর পরীক্ষাও হয়)

আরওসি বক্ররেখা

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

# Data
norm     = rep(1:5, times=c(33,6,6,11,2))
abnorm   = rep(1:5, times=c(3,2,2,11,33))
testres  = c(abnorm,norm)
truestat = c(rep(1,length(abnorm)), rep(0,length(norm)))

# Summary table (Table I in the paper)
( tab=as.matrix(table(truestat, testres)) )

আউটপুটটি হ'ল:

        testres
truestat  1  2  3  4  5
       0 33  6  6 11  2
       1  3  2  2 11 33

আমরা বিভিন্ন পরিসংখ্যান গণনা করতে পারি:

( tot=colSums(tab) )                            # Number of patients w/ each test result
( truepos=unname(rev(cumsum(rev(tab[2,])))) )   # Number of true positives
( falsepos=unname(rev(cumsum(rev(tab[1,])))) )  # Number of false positives
( totpos=sum(tab[2,]) )                         # The total number of positives (one number)
( totneg=sum(tab[1,]) )                         # The total number of negatives (one number)
(sens=truepos/totpos)                           # Sensitivity (fraction true positives)
(omspec=falsepos/totneg)                        # 1 − specificity (false positives)
sens=c(sens,0); omspec=c(omspec,0)              # Numbers when we classify all as normal

এবং এটি ব্যবহার করে আমরা (আনুমানিক) আরওসি বক্ররেখা প্লট করতে পারি:

plot(omspec, sens, type="b", xlim=c(0,1), ylim=c(0,1), lwd=2,
     xlab="1 − specificity", ylab="Sensitivity") # perhaps with xaxs="i"
grid()
abline(0,1, col="red", lty=2)

এউসি বক্ররেখা

ম্যানুয়ালি এওসি গণনা করা হচ্ছে

ট্র্যাপিজয়েডের ক্ষেত্রের সূত্রটি ব্যবহার করে আমরা খুব সহজেই আরওসি বক্ররেখার অঞ্চলটি গণনা করতে পারি:

height = (sens[-1]+sens[-length(sens)])/2
width = -diff(omspec) # = diff(rev(omspec))
sum(height*width)

ফলাফল 0.8931711।

একটি সম্মতি পরিমাপ

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

o = outer(abnorm, norm, "-")
mean((o>0) + .5*(o==0))

উত্তরটি আবার 0.8931711, আরওসি বক্ররেখার অধীনে অঞ্চল। সর্বদা এটি হবে।

সম্মিলনের একটি গ্রাফিকাল ভিউ

হ্যারেল তার উত্তরে যেমন উল্লেখ করেছেন, এর গ্রাফিকাল ব্যাখ্যাও রয়েছে। এক্স- এক্সিসে y -axis এবং সত্য রোগের স্থিতির উপর পরীক্ষা স্কোর (ঝুঁকি প্রাক্কলন) প্লট করা যাক ( ওভারল্যাপিং পয়েন্টগুলি দেখানোর জন্য এখানে কিছু বিড়ম্বনা সহ):

plot(jitter(truestat,.2), jitter(testres,.8), las=1,
     xlab="True disease status", ylab="Test score")

সত্য রোগের স্থিতির বিপরীতে ঝুঁকিপূর্ণ স্কোরের ছড়িয়ে পড়া প্লট।

এখন আসুন বাম দিকে (একটি 'স্বাভাবিক' রোগী) এবং ডানদিকে প্রতিটি পয়েন্টের (একটি 'অস্বাভাবিক' রোগী) এর মধ্যে একটি লাইন আঁকুন। ধনাত্মক opeালের সাথে রেখাগুলির অনুপাত (যেমন, সম্মিলিত জোড়গুলির অনুপাত ) সম্মতি সূচক (সমতল রেখাগুলি '50% একত্রীকরণ 'হিসাবে গণনা করা হয়)।

সম্পর্কের সংখ্যার (সমতুল্য ঝুঁকির স্কোর) কারণে এই উদাহরণের জন্য প্রকৃত লাইনগুলি কল্পনা করা কিছুটা কঠিন, তবে কিছুটা ক্ষোভ এবং স্বচ্ছতার সাথে আমরা যুক্তিসঙ্গত প্লট পেতে পারি:

d = cbind(x_norm=0, x_abnorm=1, expand.grid(y_norm=norm, y_abnorm=abnorm))
library(ggplot2)
ggplot(d, aes(x=x_norm, xend=x_abnorm, y=y_norm, yend=y_abnorm)) +
  geom_segment(colour="#ff000006",
               position=position_jitter(width=0, height=.1)) +
  xlab("True disease status") + ylab("Test\nscore") +
  theme_light()  + theme(axis.title.y=element_text(angle=0))

সমস্ত সম্ভাব্য পর্যবেক্ষণ জোড়ের মধ্যে লাইন সহ সত্য রোগের স্থিতির বিপরীতে ঝুঁকিপূর্ণ স্কোরের প্লট প্লট।

আমরা দেখতে পাই যে বেশিরভাগ লাইন upালু উপরের দিকে থাকে, সুতরাং সম্মতি সূচকটি বেশি হবে। আমরা প্রতিটি ধরণের পর্যবেক্ষণ জোড়া থেকে সূচকে অবদানও দেখতে পাই। এটি বেশিরভাগই 5 (1-5 জোড়া) এর ঝুঁকির স্কোর সহ অস্বাভাবিক রোগীদের সাথে 1 পেয়ারযুক্ত ঝুঁকিপূর্ণ স্কোর সহ সাধারণ রোগীদের কাছ থেকে আসে তবে বেশ কিছুটা 1–4 জোড়া এবং 4-55 জোড়া থেকেও আসে। এবং opeালের সংজ্ঞা অনুসারে প্রকৃত সম্মিলিত সূচক গণনা করা খুব সহজ:

d = transform(d, slope=(y_norm-y_abnorm)/(x_norm-x_abnorm))
mean((d$slope > 0) + .5*(d$slope==0))

উত্তরটি আবার 0.8931711, অর্থাৎ এটিসি।

উইলকক্সন – মান – হুইটনি পরীক্ষা

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

> ( wi = wilcox.test(abnorm,norm) )
    Wilcoxon rank sum test with continuity correction

data:  abnorm and norm
W = 2642, p-value = 1.944e-13
alternative hypothesis: true location shift is not equal to 0

পরীক্ষার পরিসংখ্যান ( W = 2642) সম্মতিযুক্ত জোড়গুলির সংখ্যা গণনা করে। যদি আমরা এটি সম্ভাব্য জোড় সংখ্যার দ্বারা ভাগ করি তবে আমরা একটি ফ্যামিলার নম্বর পাই:

w = wi$statistic
w/(length(abnorm)*length(norm))

হ্যাঁ, এটি 0.8931711, আরওসি বক্ররেখার অধীনে অঞ্চল।

AUC গণনা করার সহজ উপায় (আর মধ্যে)

তবে আসুন আমরা নিজের জন্য জীবনকে আরও সহজ করে তুলি। বিভিন্ন প্যাকেজ রয়েছে যা আমাদের জন্য স্বয়ংক্রিয়ভাবে এটিউকে গণনা করে।

এপিআই প্যাকেজ

Epiপ্যাকেজ (AUC সহ) এমবেডেড বিভিন্ন পরিসংখ্যান একটা চমৎকার আরওসি বক্ররেখা তৈরি করে:

library(Epi)
ROC(testres, truestat) # also try adding plot="sp"

এপিআই প্যাকেজ থেকে আরওসি বক্ররেখা

পিআরসি প্যাকেজ

আমি pROCপ্যাকেজটিও পছন্দ করি , যেহেতু এটি আরওসি প্রাক্কলনকে মসৃণ করতে পারে (এবং স্মুথড আরওসি এর ভিত্তিতে একটি এউসি অনুমান গণনা করে):

পিআরও প্যাকেজ থেকে আরওসি বক্ররেখা (আনমোথড এবং স্মুটেড)

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

থেকে আনুমানিক AUC মসৃণ আরওসি 0,9107, অনুরূপ, কিন্তু চেয়ে সামান্য বড়, unsmoothed রকপাখি থেকে AUC (যদি আপনি চিত্রে তাকান, আপনি সহজেই দেখতে পারেন কেন এটা বড় ব্যাপার)। (যদিও আমাদের কাছে মসৃণ এউসি গণনা করার জন্য খুব কম সম্ভাব্য স্বতন্ত্র পরীক্ষার ফলাফলের মান রয়েছে)।

আরএমএস প্যাকেজ

হ্যারেলের rmsপ্যাকেজটি rcorr.cens()ফাংশনটি ব্যবহার করে বিভিন্ন সম্পর্কিত সম্মিলিত পরিসংখ্যান গণনা করতে পারে । C Indexতার আউটপুটে AUC হল:

> library(rms)
> rcorr.cens(testres,truestat)[1]
  C Index 
0.8931711

CATools প্যাকেজ

অবশেষে, আমাদের caToolsপ্যাকেজ এবং এর colAUC()কার্যকারিতা রয়েছে। অন্যান্য প্যাকেজগুলির তুলনায় এর কয়েকটি সুবিধা রয়েছে (মূলত গতি এবং বহু-মাত্রিক ডেটা দিয়ে কাজ করার ক্ষমতা - দেখুন ?colAUC) যা কখনও কখনও সহায়ক হতে পারে। তবে অবশ্যই এটি একই উত্তর দেয় যা আমরা বারবার গণনা করেছি:

library(caTools)
colAUC(testres, truestat, plotROC=TRUE)
             [,1]
0 vs. 1 0.8931711

CATools প্যাকেজ থেকে আরওসি বক্ররেখা

চূড়ান্ত শব্দ

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

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

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

সুতরাং আমি মনে করি সত্যিকারের আরওসি বক্ররেখা অধ্যয়ন করা কেবলমাত্র এউসি সংক্ষিপ্ত পরিমাপের চেয়ে বেশি উপকারী হবে। এবং আপনি যদি অধ্যয়ন করছেন তার বেসের হারের সাথে মিথ্যা ধনাত্মক এবং মিথ্যা নেতিবাচক ব্যয়ের (অনুমানের) একসাথে আরওসি ব্যবহার করে , আপনি কোথাও পেতে পারেন।

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

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

যদি ভাল ক্রমাঙ্কন এবং ভাল বৈষম্য উভয়ই সহ একটি মডেল থাকে , তবে আপনার ভাল মডেল হওয়া শুরু হয়। :)


8
আপনাকে ধন্যবাদ, @ কার্ল ওভ হুফহ্যামার, এটি আমার কাছে পাওয়া সবচেয়ে সুনির্দিষ্ট উত্তর। আমি বিশেষত আপনার "চূড়ান্ত শব্দ" বিভাগটির প্রশংসা করি। চমৎকার কাজ! আবার ধন্যবাদ!
ম্যাট রেইচেনবাচ

এই বিস্তারিত উত্তরের জন্য আপনাকে অনেক ধন্যবাদ। আমি একটি ডেটাসেটের সাথে কাজ করছি যেখানে এপিআই :: আরওসি () ভি ২.২. is নিশ্চিত যে এওসি ১.62২ (এটি মানসিকবাদী অধ্যয়ন নয়) তবে আরওসি অনুসারে আমি 0.56 তে অনেক বেশি বিশ্বাস করি যে উপরের কোডের ফলাফল ইন
বার্নিনলিও

32

এই প্রশ্নটি একবার দেখুন: আরওসি বক্ররেখা বোঝা

এখানে কীভাবে একটি আরওসি বক্রতা তৈরি করা যায় (সেই প্রশ্ন থেকে):

আরওসি বক্ররেখা আঁকছে

আপনার র‌্যাঙ্কিং শ্রেণিবদ্ধ দ্বারা প্রক্রিয়াজাত একটি ডেটা দেওয়া হয়েছে

  • হ্রাস স্কোর উপর র‌্যাঙ্ক পরীক্ষার উদাহরণ
  • (0,0)
  • x
    • x1/pos
    • x1/neg

posneg

নিম্নলিখিত আলগোরিদিমটি ব্যবহার করে আপনি নিজেই এওসি আরওসি গণনা করার জন্য এই ধারণাটি ব্যবহার করতে পারেন:

auc = 0.0
height = 0.0

for each training example x_i, y_i
  if y_i = 1.0:
    height = height + tpr
  else 
    auc = auc + height * fpr

return auc

এই দুর্দান্ত জিআইএফ-অ্যানিমেটেড চিত্রটির এই প্রক্রিয়াটি আরও পরিষ্কার করা উচিত

বক্ররেখা তৈরি


1
ধন্যবাদ @ অ্যালেক্সা গ্রিগোরভ, এটি একটি দুর্দান্ত দৃশ্য এবং এটি সম্ভবত ভবিষ্যতে কার্যকর প্রমাণিত হবে! +1
ম্যাট রেইচেনবাচ

1
অনুগ্রহ করে "ইতিবাচক এবং নেতিবাচক উদাহরণগুলির ভগ্নাংশ" সম্পর্কে কিছুটা ব্যাখ্যা করতে পারলে, আপনি দুটি অক্ষের ক্ষুদ্রতম এককের মান বোঝাতে চান?
অ্যালান রুইন

1
@ অ্যালান রুইন: posএখানে ইতিবাচক তথ্যের সংখ্যা বোঝানো হয়েছে। আসুন বলুন আপনার কাছে 20 ডেটা পয়েন্ট রয়েছে যার 11 টি পয়েন্ট রয়েছে। সুতরাং, চার্টটি আঁকানোর সময় আমাদের একটি আয়তক্ষেত্র 11x9 (উচ্চতা x প্রস্থ) থাকে। আলেক্সি গ্রিগোরভ স্কেল করেছেন তবে এটি আপনার পছন্দ মতো করুন let এখন, প্রতিটি পদক্ষেপে কেবল চার্টে 1 সরান।
Catbuilts

5

কার্লের পোস্টে প্রচুর চমৎকার তথ্য রয়েছে। তবে আমি বিগত ২০ বছরে এখনও আরওসি বক্ররেখার উদাহরণ দেখিনি যা কারও চিন্তাভাবনাটিকে একটি ভাল দিকে বদলেছে। আমার নম্র মতামতটিতে একটি আরওসি বক্ররেখার একমাত্র মূল্য হ'ল এর অঞ্চলটি খুব কার্যকর সংমিশ্রণের সম্ভাবনার সমান হয়। আরওসি বক্ররেখা নিজেই পাঠককে কাট অফ ব্যবহার করতে প্ররোচিত করে, যা খারাপ পরিসংখ্যান অনুশীলন।

cY=0,1xY=1yY=0Y=1

n

আর Hmiscপ্যাকেজ rcorr.censফাংশনের জন্য, আরও তথ্য দেখতে পুরো ফলাফলটি মুদ্রণ করুন, বিশেষত একটি স্ট্যান্ডার্ড ত্রুটি।


আপনাকে ধন্যবাদ, @ ফ্র্যাঙ্ক হেরেল, আমি আপনার দৃষ্টিভঙ্গির প্রশংসা করি। আমি কেবলমাত্র সি-স্ট্যাটিস্টিককে একত্রীকরণের সম্ভাবনা হিসাবে ব্যবহার করি, কারণ আমি কাট অফগুলি পছন্দ করি না। আবার ধন্যবাদ!
ম্যাট রেইচেনবাচ

4

আরওসি বক্ররেখার অধীনে অঞ্চলটি পেতে কেবল ট্র্যাপিজয়েডাল নিয়ম ব্যবহার করে এটিউকে গণনার প্রাকৃতিক পদ্ধতির বিকল্প is

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

n <- 100L

x1 <- rnorm(n, 2.0, 0.5)
x2 <- rnorm(n, -1.0, 2)
y <- rbinom(n, 1L, plogis(-0.4 + 0.5 * x1 + 0.1 * x2))

mod <- glm(y ~ x1 + x2, "binomial")

probs <- predict(mod, type = "response")

combinations <- expand.grid(positiveProbs = probs[y == 1L], 
        negativeProbs = probs[y == 0L])

mean(combinations$positiveProbs > combinations$negativeProbs)
[1] 0.628723

আমরা pROCপ্যাকেজ ব্যবহার করে যাচাই করতে পারি :

library(pROC)
auc(y, probs)
Area under the curve: 0.6287

এলোমেলো নমুনা ব্যবহার:

mean(sample(probs[y == 1L], 100000L, TRUE) > sample(probs[y == 0L], 100000L, TRUE))
[1] 0.62896

1
  1. আপনার পর্যবেক্ষণের জন্য সত্যিকারের মূল্য আছে।
  2. উত্তর সম্ভাব্যতা গণনা করুন এবং তারপরে এই সম্ভাব্যতা অনুসারে পর্যবেক্ষণগুলি স্থান করুন।
  3. PN
    Sum of true ranks0.5PN(PN+1)PN(NPN)

1
@ ব্যবহারকারী 73455 ... 1) হ্যাঁ, পর্যবেক্ষণগুলির জন্য আমার কাছে সত্যিকারের মূল্য রয়েছে। 2) উত্তরোত্তর সম্ভাবনা প্রতিটি পর্যবেক্ষণের জন্য পূর্বাভাসযুক্ত সম্ভাবনার সমার্থক? 3) বোঝা; তবে, "সত্য র‌্যাঙ্কের যোগফল" কী এবং কীভাবে এই মানটি গণনা করা যায়? সম্ভবত একটি উদাহরণ আপনাকে আরও উত্তরটি আরও ভালভাবে ব্যাখ্যা করতে সহায়তা করবে? ধন্যবাদ!
ম্যাট রেইচেনবাচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.