Statistics ::Regression не удается запустить одномерную регрессию?

#perl #statistics #regression

#perl #Статистика #регрессия

Вопрос:

Я использую модуль Perl of Statistics::Regression . Он отлично выполняет многовариантные регрессии. Однако, если я укажу только один регрессор в конструкторе

 my $reg = Statistics::Regression->new("Sample Regression", ['X']);
  

Он жалуется на это сообщение:

 Statistics::Regression:new: Cannot run a regression without at least two variables.
  

У людей такая же проблема? Сообщение об ошибке сформулировано нечетко, поэтому я интерпретировал его так, как будто я не указываю переменную ответа. Но это, оказывается, не так, поскольку, основываясь на его документе и некоторых примерах сценариев, которые я тестировал на стороне, ссылка на список в конструкторе должна включать только регрессоры.

В любом случае, как вы запускаете регрессию с одной переменной (без постоянного члена), используя этот модуль? (Я знаю Statistics::OLS , что могу это сделать, но для простоты я бы хотел, чтобы этот модуль работал. Во всяком случае, это похоже на глупое упущение, если оно действительно не может с этим справиться.) Спасибо!

Комментарии:

1. Учитывая, что в описании говорится «Regression.pm является многомерным пакетом линейной регрессии», я не понимаю, как вы собираетесь заставить его выполнять одномерные регрессии.

2. @CanSpice, хорошо, достаточно справедливо. Если вы дадите это в качестве ответа, я проверю вас. Спасибо.

Ответ №1:

Описание модуля гласит:

Regression.pm представляет собой многомерный пакет линейной регрессии.

Учитывая это, кажется маловероятным, что вы сможете заставить его выполнять одномерные регрессии.

Вы могли бы попробовать отправить электронное письмо автору. Прошло четыре года с тех пор Statistics::Regression , как он был выпущен для CPAN, поэтому он, возможно, перестал его поддерживать (или он в таком хорошем состоянии, что ему не нужно больше выпусков), но стоит попробовать узнать его мнение. У него может быть какая-то идея относительно исправления его для обработки одномерных регрессий.

Ответ №2:

Чтобы это работало для одномерной, укажите константу, например: (первый аргумент include — y, второй — [ constant, x ] ). Вы также можете указать 0 в качестве константы, если вы не хотите перехватывать

 my $reg=Statistics::Regression->new("Title", ["Intercept", "Slope"]);
 
$reg->include(1.3, [1.0, 1.0]);
$reg->include(2.9, [1.0, 2.0]);
$reg->include(4.2, [1.0, 3.0]);
$reg->include(5.4, [1.0, 4.0]);
  

Найдите подробное объяснение в этом блоге