#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]);
Найдите подробное объяснение в этом блоге