কিভাবে লগারিদমে নেতিবাচক মানগুলি রূপান্তর করবেন?


12

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

> log(-1.27+1)
[1] NaN
Warning message:
In log(-1.27 + 1) : NaNs produced
> 

আগাম ধন্যবাদ

হালনাগাদ:

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

এটি আমার কাঁচা তথ্য


2
লগারিদমটি কেবল ধনাত্মক সংখ্যার জন্য সংজ্ঞায়িত করা হয় এবং এটি ইতিবাচক ডেটাতে একটি পরিসংখ্যানগত রূপান্তর হিসাবে ব্যবহৃত হয় যাতে কোনও মডেল এই ইতিবাচকতা রক্ষা করতে পারে। log(x+1)রূপান্তরটি কেবল তখনই সংজ্ঞাযুক্ত x > -1, যেমনটি x + 1ইতিবাচক। আপনার ডেটা রূপান্তর করতে লগ ইন করতে চাওয়ার জন্য আপনার কারণটি জেনে রাখা ভাল।
ম্যাথু ড্র্যুরি

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

6
বিশদ যোগ করার জন্য ধন্যবাদ। এই জাতীয় ডেটার জন্য 0 এর একটি অর্থ (সমতা!) রয়েছে যা সম্মান করা উচিত, প্রকৃতপক্ষে সংরক্ষণ করা উচিত । এটি এবং অন্যান্য কারণে আমি কিউব শিকড় ব্যবহার করব। অনুশীলনে, আপনার sign(x) * (abs(x))^(1/3)সফ্টওয়্যার সিনট্যাক্সের উপর নির্ভর করে বিশদগুলির উপর কিছুটা প্রকারের প্রয়োজন হবে । কিউব শিকড় সম্পর্কে আরও তথ্যের জন্য উদাহরণস্বরূপ দেখুন stata-jorter.com/sjpdf.html?articlenum=st0223 (esp। Pp.152-3 দেখুন)। আমরা ঘন শিকড়কে প্রতিক্রিয়াশীল ভেরিয়েবলের দৃশ্যায়নে সহায়তা করতে সহায়তা করি যা প্রকৃতিতে
নিক কক্স

8
আপনি কেন পার্থক্যের পরিবর্তে মূল পরিবর্তনশীল রূপান্তর করছেন না ?
whuber

4
log(x+4)x>45

উত্তর:


14

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

মনে করুন আপনার কাছে নেতিবাচক তথ্য রয়েছে:

x <- rlnorm(n = 1e2, meanlog = 0, sdlog = 1)
x <- x - 5
plot(density(x))

(1,1)

z <- (x - min(x)) / (max(x) - min(x)) * 2 - 1
z <- z[-min(z)]
z <- z[-max(z)]
min(z); max(z)

এবং অবশেষে বিপরীতমুখী হাইপারবোলিক স্পর্শক প্রয়োগ করুন:

t <- atanh(z)
plot(density(t))

এখন, আপনার ডেটা প্রায় সাধারণভাবে বন্টিত দেখায়। একে ফিশার ট্রান্সফর্মেশনও বলা হয়।


9
atanh[(xmin(x))/(max(x)min(x))]

2
@ নিককক্স আপনি একদম ঠিক বলেছেন ওপি যদি তার সমস্যা সম্পর্কে আরও বিশদ যুক্ত করে, তবে আমরা একটি বিকল্প সমাধান বের করতে পারি!
stochazesthai

আমার প্রথম মন্তব্যে অভ্যন্তরীণ তর্কটি রূপান্তরিত হচ্ছে না তা নয় , তবে আমার মন্তব্যের স্পিরিটটি আমি অবিচ্ছিন্ন বলে মনে করি।
নিক কক্স

প্রিয় @stochazesthai আপনার বিস্তারিত ব্যাখ্যার জন্য ধন্যবাদ, তবে আমি আপনার কোডটি আমার ডেটাতে প্রয়োগ করতে পারি না। আমি শেষে আমার কাঁচা ডেটার লিঙ্ক দিয়ে আমার প্রশ্ন আপডেট করেছি।
ডারউইন পিসি

বিবৃতি z <- z[-max(z)]এবং z <- z[-min(z)]অনুপযুক্তভাবে zএকটি একক মান সঙ্কুচিত । এছাড়াও সাধারণ ফাংশনটি সর্বনিম্ন এবং সর্বাধিক মানগুলির জন্য atanh(((x - min(x)) / (max(x) - min(x))))উত্পাদন করে । Infx
সর্বাধিক গেনিস

-1

এটি একটি লগ স্কেলে রূপান্তর করতে, প্রথমে ইতিবাচক সংখ্যার লগটি সন্ধান করুন তার চিহ্ন দ্বারা এটিকে গুণ করুন, নিম্নলিখিত কোডটি এটি করা উচিত।

transform_to_log_scale <- function(x){
    if(x==0){
        y <- 1
    } else {
        y <- (sign(x)) * (log(abs(x)))
    }
        y 
    }

উপরের উদাহরণটি ব্যবহার করে আমরা নিম্নলিখিত স্কিউ বিতরণ প্লট করতে পারি

x <- rlnorm(n = 1e2, meanlog = 0, sdlog = 1)
x <- x - 5
plot(density(x))

এখানে চিত্র বর্ণনা লিখুন

নিম্নরূপে ট্রান্সফর্মিং ফাংশনটি ব্যবহার করার পরে, আমরা একটি বিতরণ পাই যা আরও 'স্বাভাবিক' দেখায়

plot(density(sapply(x,FUN=transform_logs_scale)))

এখানে চিত্র বর্ণনা লিখুন


3
(1) বেশিরভাগ প্রোগ্রামিং ভাষা ( Rঅন্তর্ভুক্ত) সাইনাম ফাংশন বাস্তবায়িত করে (যা নেতিবাচক সংখ্যার জন্য -1, ইতিবাচক সংখ্যার জন্য 1 এবং শূন্যের জন্য 0) প্রদান করে। এটি ব্যবহার করা আরও অভিব্যক্তিপূর্ণ এবং দ্রুত হবে। (২) আপনার প্রস্তাবিত চিত্রগুলির মতো ডেটা বিশ্লেষণের জন্য এটি দুর্বল, কারণ এটির শূন্যে বিশাল বিরাম রয়েছে!
whuber

সাইনামের জন্য ধন্যবাদ, আমি এটি সম্পর্কে জানতাম না, অবাক হয়ে কীভাবে এটি বাস্তবায়িত হয়
yosemite_k

3
বিভিন্ন উপায় আছে। অনেকগুলি প্রসেসরের আর্কিটেকচারে অনেকগুলি ক্রিয়াকলাপের পরে একটি সাইন বিট সেট করা থাকে, যাতে এটি ব্যবহার করা যায়। আইইইই ডাবল স্পষ্টতা ভাসমান পয়েন্ট উপস্থাপনায়, চিহ্নটি একটি একক বিট (আরও একটি সত্য শূন্যের জন্য আরও একটি দ্রুত পরীক্ষা) পরিদর্শন করে পাওয়া যাবে। ভবিষ্যদ্বাণীমূলক শাখা ইত্যাদি সহ পাইপযুক্ত আর্কিটেকচারগুলিতে সাধারণত সম্ভব হলে শাখা না করানো অনেক বেশি দক্ষ, যার কারণে সাইনামের বিল্ট-ইন সংস্করণ ব্যবহার করা একটি উল্লেখযোগ্য গণনাযোগ্য লাভ হতে পারে। উল্লেখ্য, সেটিং y <- 1যখন সৌন্দর্য নির্বিচারে - এটি সত্যিই আপ পরিসংখ্যান বিশ্লেষণ স্ক্রু পারে। x=0
whuber
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.