Стандартное отклонение одного элемента - PullRequest
8 голосов
/ 06 ноября 2011

Когда я пытаюсь выполнить

StandardDeviation[{1}]

Я получаю ошибку

StandardDeviation::shlen: "The argument {1} should have at least two elements"

Но std одного элемента равен 0, не так ли?

Ответы [ 5 ]

14 голосов
/ 06 ноября 2011

Стандартное отклонение обычно определяется как квадратный корень из несмещенной оценки отклонения:

enter image description here

Вы можете легко увидеть, что дляодин образец, N=1, и вы получите 0/0, который не определен.Следовательно, ваше стандартное отклонение не определено для одного образца в Mathematica.

Теперь, в зависимости от ваших соглашений, вы можете определить стандартное отклонение для отдельной выборки (либо вернуть Null, либо какое-либо значение или 0).Вот пример, который показывает вам, как определить его для одного образца.

std[x_List] := Which[(Length[x] == 1), 0, True, StandardDeviation[x]]
std[{1}]
Out[1]= 0
8 голосов
/ 06 ноября 2011

Стандартное отклонение константы равно нулю.

Расчетное стандартное отклонение одного образца не определено.

1 голос
/ 19 ноября 2011

Если размер вашей популяции составляет один элемент, то да, стандартное отклонение вашей популяции будет равно 0. Однако обычно стандартные выборки используются для выборок, а не для всей популяции, поэтому вместо деления на количество элементов в выборка, вы делите на количество элементов минус один. Это связано с ошибкой, присущей выполнению расчетов на выборке, а не на совокупности.

Выполнение расчета стандартного отклонения для популяции размера 1 не имеет абсолютно никакого смысла, что, я думаю, является причиной возникновения путаницы. Если вы знаете, что ваша популяция содержит только один элемент, то обнаружение стандартного отклонения этого элемента не имеет смысла, поэтому обычно вы увидите стандартное отклонение одного элемента, записанное как неопределенное.

1 голос
/ 06 ноября 2011

Если вам нужна формальность:

p[x_] := DiracDelta[x - mu];
expValue = Integrate[x p[x] , {x, -Infinity, Infinity}]
stdDev = Sqrt[Integrate[(x - expValue)^2 p[x] , {x, -Infinity, Infinity}]]

(*
-> ConditionalExpression[mu, mu \[Element] Reals]
-> ConditionalExpression[0, mu \[Element] Reals]
*)

Редактировать

Или лучше, используя Mathematica ProbabilityDistribution[]:

dist = ProbabilityDistribution[DiracDelta[x - mu], {x, -Infinity, Infinity}];
{Mean[dist], StandardDeviation[dist]}

(*
 -> { mu, ConditionalExpression[0, mu \[Element] Reals]}
*)
0 голосов
/ 06 ноября 2011

Стандартное отклонение - которое является мерой отклонения фактического значения от среднего значения данного набора - для списка из одного элемента не имеет никакого смысла (вы можете установить его в 0, если хотите).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...