लॉजिस्टिक रिग्रेशन के गुणांकों की मानक त्रुटियों की गणना कैसे करें


18

मैं एक लॉजिस्टिक रिग्रेशन को प्रशिक्षित करने और परीक्षण करने के लिए पायथन के स्किटिट-लर्न का उपयोग कर रहा हूं।

scikit-learn स्वतंत्र चर के प्रतिगमन गुणांक को लौटाता है, लेकिन यह गुणांक के मानक त्रुटियों को प्रदान नहीं करता है। मुझे प्रत्येक गुणांक के लिए एक वाल्ड सांख्यिकीय की गणना करने के लिए इन मानक त्रुटियों की आवश्यकता है और, बदले में, इन गुणांक की एक दूसरे से तुलना करें।

मैंने लॉजिस्टिक रिग्रेशन ( यहां ) के गुणांकों के लिए मानक त्रुटियों की गणना करने का एक विवरण पाया है , लेकिन इसका पालन करना थोड़ा मुश्किल है।

यदि आपको इन मानक त्रुटियों की गणना करने के तरीके के सरल, संक्षिप्त विवरण के बारे में पता है और / या मुझे एक प्रदान कर सकता है, तो मैं वास्तव में इसकी सराहना करूँगा! मेरा मतलब विशिष्ट कोड नहीं है (हालांकि कृपया किसी भी कोड को बेझिझक पोस्ट करें जो सहायक हो सकता है), बल्कि इसमें शामिल चरणों का एक एल्गोरिथम विवरण है।


1
क्या आप मानक त्रुटियों को प्राप्त करने के लिए पायथन कोड के लिए पूछ रहे हैं, या कैसे एसई की गणना की जाती है (गणितीय / एल्गोरिदमिक रूप से) ताकि आप इसे स्वयं कर सकें? यदि पूर्व, यह क्यू सीवी के लिए ऑफ-टॉपिक होगा (हमारा सहायता केंद्र देखें ), लेकिन स्टैक ओवरफ्लो पर ऑन-टॉपिक हो सकता है । यदि बाद में, यह यहाँ विषय पर होगा (लेकिन आपको कोई कोड सुझाव नहीं मिल सकता है)। कृपया इसे स्पष्ट करने के लिए अपने Q को संपादित करें। यदि यह पूर्व है, तो हम इसे आपके लिए SO पर भेज सकते हैं ( कृपया क्रॉस-पोस्ट न करें, हालांकि )।
गूँग - मोनिका

1
धन्यवाद, गंग। मैंने जानबूझकर यहां पोस्ट किया है क्योंकि मैं बाद की उम्मीद कर रहा हूं, लेकिन मैं स्पष्ट करने के लिए संपादित करूंगा। मैंने उल्लेख किया कि मैं पाइकॉन में काम कर रहा हूं, जो कि इस सॉफ्टवेयर का उपयोग करने वाले व्यक्ति को सीखता है, जो मुझे इसके लिए विशिष्ट सुझाव दे सकता है।
ज्ञान वेद

हाय @GyanVeda, मैं अब एक ही समस्या का सामना कर रहा हूं, आपका अंतिम समाधान क्या है, कृपया?
zyxue

जवाबों:


12

क्या आपका सॉफ्टवेयर आपको एक पैरामीटर कोविरियन (या विचरण-सहसंयोजक) मैट्रिक्स देता है? यदि हां, तो मानक त्रुटियां उस मैट्रिक्स के विकर्ण का वर्गमूल हैं। आप शायद कैसे पाने के लिए एक पाठ्यपुस्तक से परामर्श करने (या विश्वविद्यालय व्याख्यान नोट्स के लिए गूगल) चाहते रैखिक के लिए मैट्रिक्स और मॉडल रैखिक सामान्यीकृत।Vβ


1
मैं सामान्यीकृत लीनियर मॉडल मामले के लिए ऑनलाइन कुछ भी नहीं खोज पाया (शायद मुझे सही खोज शब्द नहीं पता?)। मदद?
केविन एच। लिन

3
यहाँ एक है जो मुझे गुग्लिंग के कुछ मिनट बाद मिला। मेरी सलाह पहले यह समझना है कि एक बुनियादी रैखिक मॉडल में पैरामीटर भिन्नता की गणना कैसे की जाती है। एक बार जब आप ऐसा कर लेते हैं, तो जीएलएम का विस्तार आसान हो जाता है। सभी समान, यह जानने के लिए कि इसकी गणना कैसे की जाती है और किसी सॉफ़्टवेयर पैकेज में इसे प्राप्त करने का तरीका जानना एक ही बात नहीं है। www.sagepub.com/upm-data/21121_Chapter_15.pdf
जेनेरिक_युसर

18

मॉडल गुणांक के मानक त्रुटियां सहसंयोजक मैट्रिक्स के विकर्ण प्रविष्टियों की वर्गमूल हैं। निम्नलिखित को धयान मे रखते हुए:

  • डिज़ाइन मैट्रिक्स:

, जहां एक्स मैं , जे का मूल्य है j के लिए वें भविष्यवक्ता मैं वें टिप्पणियों।X = [1x1,1x1,p1x2,1x2,p1xn,1xn,p]xi,jjमैं

(नोट: यह एक अवरोधन के साथ एक मॉडल मानता है।)

  • , जहां π मैं अवलोकन के लिए कक्षा सदस्यता की अनुमानित संभावना का प्रतिनिधित्व करता है iV = [π^1(1π^1)000π^2(1π^2)000π^n(1π^n)]π^ii

सहसंयोजक मैट्रिक्स के रूप में लिखा जा सकता है:

(एक्सटीवीएक्स)-1

इसे निम्नलिखित कोड के साथ लागू किया जा सकता है:

import numpy as np
from sklearn import linear_model

# Initiate logistic regression object
logit = linear_model.LogisticRegression()

# Fit model. Let X_train = matrix of predictors, y_train = matrix of variable.
# NOTE: Do not include a column for the intercept when fitting the model.
resLogit = logit.fit(X_train, y_train)

# Calculate matrix of predicted class probabilities.
# Check resLogit.classes_ to make sure that sklearn ordered your classes as expected
predProbs = resLogit.predict_proba(X_train)

# Design matrix -- add column of 1's at the beginning of your X_train matrix
X_design = np.hstack([np.ones((X_train.shape[0], 1)), X_train])

# Initiate matrix of 0's, fill diagonal with each predicted observation's variance
V = np.diagflat(np.product(predProbs, axis=1))

# Covariance matrix
# Note that the @-operater does matrix multiplication in Python 3.5+, so if you're running
# Python 3.5+, you can replace the covLogit-line below with the more readable:
# covLogit = np.linalg.inv(X_design.T @ V @ X_design)
covLogit = np.linalg.inv(np.dot(np.dot(X_design.T, V), X_design))
print("Covariance matrix: ", covLogit)

# Standard errors
print("Standard errors: ", np.sqrt(np.diag(covLogit)))

# Wald statistic (coefficient / s.e.) ^ 2
logitParams = np.insert(resLogit.coef_, 0, resLogit.intercept_)
print("Wald statistics: ", (logitParams / np.sqrt(np.diag(covLogit))) ** 2)

कहा जा रहा है कि सभी statsmodelsका उपयोग करने के लिए एक बेहतर पैकेज होगा , यदि आप "आउट-ऑफ-द-बॉक्स" डायग्नोस्टिक्स तक पहुंच चाहते हैं।


2
मेमोरी के मुद्दों से बचने के लिए और एकवचन मैट्रिक्स केस के लिए, आप अपने कोड को निम्नानुसार अपडेट कर सकते हैं -V = np.product(predProbs, axis=1); covLogit = np.linalg.pinv(np.dot(X_design.T * V), X_design)
स्टेफिश

6

यदि आप इंट्रेंस करने में रुचि रखते हैं, तो आप शायद एक नजर डालते हैं । मानक त्रुटियां और सामान्य सांख्यिकीय परीक्षण उपलब्ध हैं। यहाँ एक लॉजिस्टिक रिग्रेशन उदाहरण है


सिफारिश के लिए धन्यवाद! मैं आँकड़ों में देखूँगा। बहुत बुरा है कि scikit- सीखना इस प्रकार का आउटपुट प्रदान नहीं करता है।
ज्ञान वेद

1
हाँ। यह (आमतौर पर) परिकल्पना परीक्षणों के लिए उपकरण प्रदान करने के लिए आमतौर पर मशीन लर्निंग-टाइप टूलबॉक्स का लक्ष्य नहीं है। यदि आप डेटा-साइज़ की कमी में भाग लेते हैं, जो कि स्टैटमॉडल में अच्छी तरह से काम नहीं करते हैं, लेकिन स्किटिट-लर्न में काम करते हैं, तो मुझे उनके बारे में सुनने की दिलचस्पी होगी।
jseabold

@jseabold हालांकि, यदि आप लॉजिस्टिक रिग्रेशन में फीचर महत्व की कुछ तदर्थ धारणा प्राप्त करना चाहते हैं, तो आप उनकी मानक त्रुटियों के बारे में सोचे बिना प्रभाव आकारों (गुणांक) को नहीं पढ़ सकते हैं। इसलिए भले ही आप बार-बार परीक्षण नहीं कर रहे हों, और आप केवल प्रभाव के आकार और मजबूती के कुछ संकेत चाहते हैं, लेकिन विचरण उत्पादन की कमज़ोर कमी चुनौतीपूर्ण है।
ely
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.