Я создал функцию R, которая включает цикл for и функцию return (), но она не выдает правильный результат - PullRequest
0 голосов
/ 01 ноября 2018

Я изучаю R функций. Я пытался создать функцию my_variance. Это код:

my_variance <- function(d){
 variance <- 0
 m <- mean(d)
 for (i in d){
   v <- i-m
   variance <- variance + v
 }
 return(variance)
}

Тогда я попробовал вектор:

my_variance(1:33)

Но результат, сгенерированный в R:

[1] 0

Может кто-нибудь объяснить, что не так с моим кодом?

Заранее спасибо!

1 Ответ

0 голосов
/ 01 ноября 2018

Вы совершаете статистическую ошибку. Сумма

sum(x - mean(x))

- это всегда ноль. И это то, что ваш код вычисляет.
Вы также забываете делить на length(d) - 1 или length(d), если предпочитаете оценку ML.

Правильный путь будет

my_variance <- function(d){
  n <- length(d)
  variance <- 0
  m <- mean(d)
  for (i in d){
    v <- (i - m)^2
    variance <- variance + v
  }
  variance/(n - 1)
}

my_variance(1:33)
#[1] 93.5

var(1:33)
#[1] 93.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...