লজিস্টিক রিগ্রেশন জন্য কৃত্রিম ডেটা অনুকরণ কিভাবে?


45

আমি জানি আমি লজিস্টিক রিগ্রেশন সম্পর্কে আমার বোঝার মধ্যে কিছু মিস করছি এবং সত্যিই কোনও সহায়তার প্রশংসা করব।

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

#create data:
x1 = rnorm(1000)           # some continuous variables 
x2 = rnorm(1000)
z = 1 + 2*x1 + 3*x2        # linear combination with a bias
pr = 1/(1+exp(-z))         # pass through an inv-logit function
y = pr > 0.5               # take as '1' if probability > 0.5

#now feed it to glm:
df = data.frame(y=y,x1=x1,x2=x2)
glm =glm( y~x1+x2,data=df,family="binomial")

এবং আমি নিম্নলিখিত ত্রুটি বার্তা পেয়েছি:

সতর্কতা বার্তা: 1: glm.fit: অ্যালগরিদম 2 রূপান্তরিত হয়নি: glm.fit: সংযুক্ত সংখ্যায় 0 বা 1 সংযুক্ত সম্ভাবনা

আমি আর এর সাথে কিছু সময়ের জন্য কাজ করেছি; এতটুকু জানতে পেরে যথেষ্ট যে সম্ভবত আমিই একজনকে দোষ দিচ্ছি .. এখানে কী হচ্ছে?


2
আপনি যেভাবে আপনার ডেটা সিমুলেট করেন তা আমার কাছে অদ্ভুত লাগে। : আপনি যদি চান, একটি বিকল্প আরো আদর্শ উপায় স্বরূপ, আপনি কটাক্ষপাত এখানে থাকতে পারে stats.stackexchange.com/questions/12857/...
ocram

@ একরাম: আপনি ঠিক বলেছেন; এটি একটি সদৃশ প্রশ্ন!
ব্যবহারকারী 60

2
@ স্টাফেন লরেন্টের ব্যাখ্যা অনুসারে আমি একটি ভুল অনুকরণ চালিয়েছি। তবে সমস্যাটি ছিল লজিস্টিক রিগ্রেশনে নিখুঁত পৃথকীকরণ , এমন একটি সমস্যা যার সাথে আমি পরিচিত ছিলাম না এবং এটি সম্পর্কে জানতে পেরে আমি বরং অবাক হয়েছিল।
জোরবার

@ জোরবার: এটি আপনার প্রশ্নের জবাবে ছিল (এখন মুছে ফেলা হয়েছে)।
ব্যবহারকারী 60

1
@ ইউজার 603: আমি সম্ভবত আপনার প্রতিক্রিয়া মিস করেছি; যাইহোক ধন্যবাদ
জোরবার

উত্তর:


63

না। প্রতিক্রিয়া ভেরিয়েবল হল একটি বার্নোল্লি র্যান্ডম ভেরিয়েবল যা সম্ভাব্যতা সহ মান নিচ্ছে । 1 p r ( i )yi1pr(i)

> set.seed(666)
> x1 = rnorm(1000)           # some continuous variables 
> x2 = rnorm(1000)
> z = 1 + 2*x1 + 3*x2        # linear combination with a bias
> pr = 1/(1+exp(-z))         # pass through an inv-logit function
> y = rbinom(1000,1,pr)      # bernoulli response variable
> 
> #now feed it to glm:
> df = data.frame(y=y,x1=x1,x2=x2)
> glm( y~x1+x2,data=df,family="binomial")

Call:  glm(formula = y ~ x1 + x2, family = "binomial", data = df)

Coefficients:
(Intercept)           x1           x2  
     0.9915       2.2731       3.1853  

Degrees of Freedom: 999 Total (i.e. Null);  997 Residual
Null Deviance:      1355 
Residual Deviance: 582.9        AIC: 588.9 

আপনি ঠিক বলেছেন - আমি এই পদক্ষেপটি মিস করেছি। আপনার সাহায্যের জন্য অসংখ্য ধন্যবাদ!
জোরবার

1
আপনি কীভাবে ডেটা অনুকরণ করবেন সে সম্পর্কে আমার একটি প্রশ্ন ছিল। যখন আমরা লিনিয়ার রিগ্রেশন এর জন্য ডেটা সিমুলেট করি তখন আমরা একটি শব্দ (ps এপসিলন )ও অনুকরণ করি। আমি বুঝতে পারি যে লজিস্টিক ফাংশন প্রত্যাশার একটি ফাংশন যা নিজেই শব্দটি আউট করে দেয়। আপনার জেডে আপনার কোনও শব্দ নেই এমন কারণ কি?
স্যাম

5
@ সেফার লিনিয়ার রিগ্রেশন গাউসির বিতরণ অনুমান করে। "গোলমাল" মানে প্রায় পার্থক্যগুলির ব্যাখ্যা, তবে এটি প্রতিক্রিয়ায় যোগ করা গোলমাল নয়: প্রতিক্রিয়াটিকে হিসাবে লেখা হয় , এটি কেবল একটি ব্যাখ্যা। লজিস্টিক রিগ্রেশন ধরে নেয় প্রতিক্রিয়াটির দ্বিপদী বিতরণ রয়েছে এবং একইভাবে প্রতিক্রিয়াতে কোনও আওয়াজ যুক্ত হয়নি। mean response+noise
স্টাফেন লরেন্ট

@ স্টাফেনলরেন্ট, ঠিক আমি সম্পূর্ণ পেতে। আপনার উত্তরের জন্য অনেক ধন্যবাদ।
স্যাম

2

সম্ভাব্যতা বা অনুপাতগুলি কেবলমাত্র 0/1 ফলাফল নয়, লক্ষ্য হিসাবে সরবরাহ করা হয় যদি লজিস্টিক রিগ্রেশন ফিটিংয়ের জন্য উপযুক্ত।

import numpy as np
import pandas as pd
def logistic(x, b, noise=None):
    L = x.T.dot(b)
    if noise is not None:
        L = L+noise
    return 1/(1+np.exp(-L))

x = np.arange(-10., 10, 0.05)
bias = np.ones(len(x))
X = np.vstack([x,bias]) # Add intercept
B =  [1., 1.] # Sigmoid params for X

# True mean
p = logistic(X, B)
# Noisy mean
pnoisy = logistic(X, B, noise=np.random.normal(loc=0., scale=1., size=len(x)))
# dichotomize pnoisy -- sample 0/1 with probability pnoisy
dichot = np.random.binomial(1., pnoisy)

pd.Series(p, index=x).plot(style='-')
pd.Series(pnoisy, index=x).plot(style='.')
pd.Series(dichot, index=x).plot(style='.')

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

আপনার অ্যাপ্লিকেশন উপর নির্ভর করে আপনি অভদ্রতা পছন্দ করতে পারেন।

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

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