Predictor and Response Variables must have same length error

조회 수: 20 (최근 30일)
Sam Mahdi
Sam Mahdi 2023년 6월 1일
편집: the cyclist 2023년 6월 1일
Hello,
I am attempting to use fitnlm, and come across an error I don't understand.
x =[p;l];
model=@(b,x)((x(1,:)+x(2,:)+b(2))-sqrt((x(1,:)+x(2,:)+b(2)).^2)-(4*x(1,:)*x(2,:)))*(b(1)/(2*x(1,:)));
beta0=[0.1,1];
for i=1:rows
y=csp(i,:)
x
size(x(1,:))
size(x(2,:))
size(y)
fitnlm(x,y,model,beta0)
end
Issue is, the x and y are the same length so I don't quite know why I'm getting this error
y =
0 0 0 0 0 0 0 0 0
x =
0.1500 0.1800 0.1900 0.2100 0.2300 0.2500 0.2600 0.2800 0.3000
1.1000 0.8800 0.7700 0.6300 0.4700 0.3700 0.2600 0.1400 0
ans =
1 9
ans =
1 9
ans =
1 9

채택된 답변

the cyclist
the cyclist 2023년 6월 1일
편집: the cyclist 2023년 6월 1일
fitnlm expects column vectors as input, not row vectors. Rows are the observations, and columns are variables.
y = [0 0 0 0 0 0 0 0 0]';
x = [0.1500 0.1800 0.1900 0.2100 0.2300 0.2500 0.2600 0.2800 0.3000;
1.1000 0.8800 0.7700 0.6300 0.4700 0.3700 0.2600 0.1400 0]';
model=@(b,x)((x(:,1)+x(:,2)+b(2))-sqrt((x(:,1)+x(:,2)+b(2)).^2)-(4*x(:,1).*x(:,2))).*(b(1)./(2.*x(:,1)));
beta0=[0.1,1];
fitnlm(x,y,model,beta0)
Warning: Rank deficient, rank = 1, tol = 9.077909e-15.
Warning: Rank deficient, rank = 1, tol = 9.037373e-15.
Warning: Rank deficient, rank = 1, tol = 9.033309e-15.
Warning: Rank deficient, rank = 1, tol = 9.032903e-15.
Warning: Some columns of the Jacobian are effectively zero at the solution, indicating that the model is insensitive to some of its parameters. That may be because those parameters are not present in the model, or otherwise do not affect the predicted values. It may also be due to numerical underflow in the model function, which can sometimes be avoided by choosing better initial parameter values, or by rescaling or recentering. Parameter estimates may be unreliable.
ans =
Nonlinear regression model: y ~ ((x1 + x2 + b2) - sqrt((x1 + x2 + b2)^2) - (4*x1*x2))*(b1/(2*x1)) Estimated Coefficients: Estimate SE tStat pValue ________ __________ ______ ________ b1 9.89e-16 3.4966e-16 2.8284 0.022204 b2 1 0 Inf 0 Number of observations: 9, Error degrees of freedom: 8 Root Mean Squared Error: 1.29e-15 R-Squared: -Inf, Adjusted R-Squared -Inf F-statistic vs. zero model: 0, p-value = 1
Note that I also did two fixes to your model definition:
  • converted it to accept the columns instead of the rows
  • used element-wise multiplication and division operators, instead of matrix operations

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Operators and Elementary Operations에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by