我正在尝试在MatLab中进行简单的逻辑回归分析。
X = [103.4843 103.4843 100.3871 101.8535 101.7658 101.9658];
Y = [120.9189 107.3617 122.5506 96.9701 101.9798 118.3035];
B = mnrfit(X,Y)
我一直收到这个错误:
If Y is a column vector, it must contain positive integer category numbers.
我不确定为什么。有人可以帮忙吗?!谢谢!
答案 0 :(得分:0)
请阅读mnrfit的文档:
https://www.mathworks.com/help/stats/mnrfit.html#btmaowv-Y
尝试使用表,然后让Y为分类数组。
例如,我的代码:
%% Multinomial Logistic Regression
% read csv file and create table
% header = {'Year','Abortion','DowJones','Incarceration','Crime_Rate'};
data = csvread("E:\code\project\regression.csv",1,0);
year = data(:,1);
abortion = data(:,2);
dowjones = data(:,3);
incarceration = data(:,4);
crime_rate = data(:,5);
T = table(year,abortion,dowjones,incarceration,crime_rate);
% multinomial logistic regression
X = [abortion,dowjones,incarceration];
Y = categorical(crime_rate);
% B: coefficicent estimates
% dev: deviance of the fit
% stats: model statistics
[B,dev,stats] = mnrfit(X,Y,'Model','ordinal','link','logit');
希望这会有所帮助。
答案 1 :(得分:0)
当因变量即变量y为a时使用逻辑回归 二进制数0或1。标称Logistic回归与从属关系相当 变量可以使用2个以上的值,但必须是连续自然的 数字。例如Y = 0、1、2、3,... X,自变量没有此限制,它可以是任何卷轴 数。
要使用mnrfit,请按以下步骤操作
X = [103.4843 103.4843 100.3871 101.8535 101.7658 101.9658];
if X > 103 --> X large --> translated to Y = 2
if 101 < X < 103 --> X medium --> translated to Y = 1
if X < 101 --> X small--> translated to Y = 0
共有3类:O小,1中,2大 遵循以上逻辑
Y = [2 2 0 1 1 1]
在matalb中键入以下代码并检查
X = [103.4843 103.4843 100.3871 101.8535 101.7658 101.9658];
Y = [2 2 0 1 1 1];
Y = categorical(Y);
B = mnrfit(X,Y);
根据您的Y数据格式,建议您使用多项式线性回归 模型,而不是逻辑回归,因为您的Y值不是离散的。
多项式线性回归
X = [103.4843 103.4843 100.3871 101.8535 101.7658 101.9658];
Y = [120.9189 107.3617 122.5506 96.9701 101.9798 118.3035];
B = polyfit(X,Y,length(X)-1);