আর-তে, গড়ের মানক ত্রুটিটি কীভাবে খুঁজে পাবে?


উত্তর:



167

স্ট্যান্ডার্ড ত্রুটিটি কেবলমাত্র নমুনার আকারের বর্গমূল দিয়ে বিভক্ত স্ট্যান্ডার্ড বিচ্যুতি। সুতরাং আপনি সহজেই নিজের কাজটি করতে পারেন:

> std <- function(x) sd(x)/sqrt(length(x))
> std(c(1,2,3,4))
[1] 0.6454972

93

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

se <- function(x) sqrt(var(x)/length(x))

ফাংশনটিকে কেবল আরও জটিল করতে এবং আপনি যে বিকল্পগুলিতে যেতে পারেন সেগুলি হ্যান্ডেল করার জন্য var, আপনি এই পরিবর্তনটি করতে পারেন।

se <- function(x, ...) sqrt(var(x, ...)/length(x))

এই বাক্য গঠনটি ব্যবহার করে যে কোনও কীভাবে varঅনুপস্থিত মানগুলির সাথে ডিল করে things varনামযুক্ত আর্গুমেন্ট হিসাবে যে কোনও কিছু পাস করা যেতে পারে এই seকলটিতে ব্যবহার করা যেতে পারে ।


4
মজার বিষয় হল, আপনার ফাংশন এবং আয়ান প্রায় একইভাবে দ্রুত। আমি উভয়কে 10 times 6 মিলিয়ন রনরম ড্রয়ের বিপরীতে 1000 বার পরীক্ষা করেছি (তাদের চেয়ে শক্ততর তাদের ধাক্কা দেওয়ার মতো শক্তি নেই)। বিপরীতে, প্লট্রিক্সের ফাংশনটি এই দুটি ফাংশনের সবচেয়ে ধীরতম রানের চেয়ে সর্বদা ধীর ছিল - তবে এটি আরও অনেক বেশি চলছে h
ম্যাট পার্কার

6
নোট এটি stderrমধ্যে একটি ফাংশন নাম base
টম

4
এটা খুব ভাল পয়েন্ট। আমি সাধারণত সে ব্যবহার করি। আমি প্রতিবিম্বিত করতে এই উত্তরটি পরিবর্তন করেছি।
জন

4
টম, কোনও stderrমানক ত্রুটি এটি প্রদর্শিত হয় তা গণনা করে নাdisplay aspects. of connection
পূর্বাভাসকারী

15
@ ফরেস্টার টম stderrস্ট্যান্ডার্ড ত্রুটির গণনার কথা বলেননি , তিনি হুঁশিয়ারি দিয়েছিলেন যে এই নামটি বেসে ব্যবহৃত হয় এবং জন প্রথমে তার ফাংশনটির নাম রেখেছিলেন stderr(সম্পাদনা ইতিহাস পরীক্ষা করুন ...)।
মলেক্স

60

উপরে জন এর উত্তরের একটি সংস্করণ যা পেস্কি এনএ'র অপসারণ করে:

stderr <- function(x, na.rm=FALSE) {
  if (na.rm) x <- na.omit(x)
  sqrt(var(x)/length(x))
}

নোট নামক একটি বিদ্যমান ফাংশন আছে যে stderrbaseপ্যাকেজ যে কিছু আর, তাই এটা ভাল হতে পারে অন্য একটি নাম এই এক জন্য যেমন বেছে নিতে আগ্রহীse
চড়ুই


3

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

দ্রষ্টব্য, এটি @ ইয়ান এবং @ জন এর উত্তরগুলির জন্য আমি অন্য সংস্করণ তৈরি করেছি। ব্যবহারের পরিবর্তে length(x), আমি sum(!is.na(x))(এনএএস এড়ানোর জন্য) ব্যবহার করেছি । আমি ১০,০০০ পুনরাবৃত্তি সহ 10 ^ 6 এর একটি ভেক্টর ব্যবহার করেছি।

library(microbenchmark)

set.seed(123)
myVec <- rnorm(10^6)

IanStd <- function(x) sd(x)/sqrt(length(x))

JohnSe <- function(x) sqrt(var(x)/length(x))

IanStdisNA <- function(x) sd(x)/sqrt(sum(!is.na(x)))

JohnSeisNA <- function(x) sqrt(var(x)/sum(!is.na(x)))

AranStderr <- function(x, na.rm=FALSE) {
  if (na.rm) x <- na.omit(x)
  sqrt(var(x)/length(x))
}

mbm <- microbenchmark(
  "plotrix" = {plotrix::std.error(myVec)},
  "IanStd" = {IanStd(myVec)},
  "JohnSe" = {JohnSe(myVec)},
  "IanStdisNA" = {IanStdisNA(myVec)},
  "JohnSeisNA" = {JohnSeisNA(myVec)},
  "AranStderr" = {AranStderr(myVec)}, 
  times = 1000)

mbm

ফলাফল:

Unit: milliseconds
       expr     min       lq      mean   median       uq      max neval cld
    plotrix 10.3033 10.89360 13.869947 11.36050 15.89165 125.8733  1000   c
     IanStd  4.3132  4.41730  4.618690  4.47425  4.63185   8.4388  1000 a  
     JohnSe  4.3324  4.41875  4.640725  4.48330  4.64935   9.4435  1000 a  
 IanStdisNA  8.4976  8.99980 11.278352  9.34315 12.62075 120.8937  1000  b 
 JohnSeisNA  8.5138  8.96600 11.127796  9.35725 12.63630 118.4796  1000  b 
 AranStderr  4.3324  4.41995  4.634949  4.47440  4.62620  14.3511  1000 a  


library(ggplot2)
autoplot(mbm)

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


0

আরও সাধারণভাবে, অন্য কোনও প্যারামিটারের স্ট্যান্ডার্ড ত্রুটির জন্য, আপনি বুটস্ট্র্যাপ সিমুলেশনগুলির জন্য বুট প্যাকেজটি ব্যবহার করতে পারেন (বা সেগুলি নিজের হাতে লিখুন)



0

মনে রাখবেন যে গড়টি লিনিয়ার মডেলটি ব্যবহার করে একটি একক ইন্টারসেপ্টের বিপরীতে ভেরিয়েবলটি পুনরায় চাপিয়েও আপনি এটির lm(x~1)জন্য ফাংশনটিও ব্যবহার করতে পারেন !

সুবিধাগুলি হ'ল:

  • আপনি সঙ্গে সঙ্গে আত্মবিশ্বাসের অন্তর পেতে confint()
  • আপনি গড় হিসাবে বিভিন্ন অনুমানের জন্য পরীক্ষা ব্যবহার করতে পারেন, উদাহরণস্বরূপ ব্যবহার করে car::linear.hypothesis()
  • স্ট্যান্ডার্ড বিচ্যুতি সম্পর্কে আপনি আরও পরিশীলিত প্রাক্কলন ব্যবহার করতে পারেন, যদি আপনার কাছে কিছু হেটেরোস্কেস্টাস্টিটি, ক্লাস্টারড ডেটা, স্পেসিয়াল ডেটা ইত্যাদি থাকে তবে প্যাকেজ দেখুন sandwich
## generate data
x <- rnorm(1000)

## estimate reg
reg <- lm(x~1)
coef(summary(reg))[,"Std. Error"]
#> [1] 0.03237811

## conpare with simple formula
all.equal(sd(x)/sqrt(length(x)),
          coef(summary(reg))[,"Std. Error"])
#> [1] TRUE

## extract confidence interval
confint(reg)
#>                   2.5 %    97.5 %
#> (Intercept) -0.06457031 0.0625035

2020-10-06 এ ডিপেক্স প্যাকেজ (v0.3.0) দ্বারা তৈরি হয়েছে


-12
y <- mean(x, na.rm=TRUE)

sd(y)var(y)বৈকল্পিক জন্য আদর্শ বিচ্যুতি জন্য।

উভয় ডেরাইভেশনগুলি n-1ডিনোমিনেটরে ব্যবহার করে তাই তারা নমুনা তথ্যের উপর ভিত্তি করে।

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