logistic回归方程模型模型代码 有方程和数据怎么用matlab求啊

查看: 794|回复: 11|关注: 0
如何用MATLAB实现生长曲线拟合,如用Logistic模型等
我有如附件中的体重生长数据,总数据大约有30万条,个体有大约2500个左右,数据也不是太理想,有些有部分缺失,想做个群体及个体生长曲线拟合,用Logistic函数和Gompertz函数等其他生长曲线模型,如何用MATLAB实现,求解,谢谢!
14:47 上传
点击文件名下载附件
22.09 KB, 下载次数: 9
关注者: 26
本帖最后由 jingzhaos 于
15:47 编辑
方法很多。cftool、lsqcurvefit、nlinfit、lsqnonlin、fit等均可拟合Logistic曲线。举个例子:
t=1:12;
y=[180,189,199,236,275, 405,522, 516,672,756,819,877]
Logistic=inline('p(1)./(1+p(2).*exp(-p(3).*t))','p','t')
p0=[.3]
[p sse]=lsqcurvefit('Logistic',p0,t,y)
[p1,r,J,CovB,Mse,EMI]= nlinfit(t,y,Logistic,p0)复制代码
关注者: 49
用logistic, gompertz, richards等拟合均不太合适。LZ所说该组数据为体重数据,但这不太正常,因为体重数据一般不会在短时间内大幅下降,比如人、动物在短时间内体重大幅下降,除非是大病的原因,这不是正常的数据,应剔除这些不正常的数据,才可能得到合适的关系式。
用logistic, gompertz, richards等拟合均不太合适。LZ所说该组数据为体重数据,但这不太正常,因为体重数据 ...
您说的非常对,但确实是体重数据(猪),数据的情况是:从约20~30kg进入测定系统的,有出生第一天的体重数据,缺出生重到进入测定系统前的每日体重数据,并且生长曲线后期进入平缓阶段的数据可能也不多。拟合起来可能有问题。应该用什么拟合。而且异常数据确实不少,机器异常造成的,该如何剔除?每天体重差3kg以内我们姑且认为是正常的吧(有的生病情况可以较为明显的看出来,该日采食次数和采食量减少较为明显,体重逐渐下降,又逐渐回升,而机器异常则表现为:缺失数据,无规律跳跃数据,某几天体重整体异常升高和降低),因为数据来源是这样的:每天有约5~20次的单次体重数据,取这些数据的中位数作为该个体的该日体重数据,每个个体大约有100条数据。这些异常数据只能手动剔除吗?数据量太大,约30万条,因为几乎半数以上的个体都存在个别和部分数据异常。
快哭了,版主救命啊
关注者: 49
您说的非常对,但确实是体重数据(猪),数据的情况是:从约20~30kg进入测定系统的,有出生第一天的体重 ...
clear,clc,warning off
fx=@(b,x)(b(1)+b(2)*x+b(3)*x.^2+b(4)*x.^3)./(1+b(5)*exp(-b(6)*x+b(7)*x.^2+b(8)*x.^3));
%x=xlsread('data','a1:b111');输入第一组数据
y=x(:,2);x(:,2)=[];
figure(1),clf
plot(x,y,'o','markerfacecolor','b')
b=[&&-30..&&-0.&&31..&&0.9&&-5.e-06];
& & b=lsqcurvefit(fx,b,x,y);
& & b=nlinfit(x,y,fx,b)
n=length(y);
disp('data1')
SSy=var(y)*(n-1)
y1=fx(b,x);
RSS=(y-y1)'*(y-y1)
Rsquare=(SSy-RSS)/SSy
x1=linspace(min(x),max(x),350);
y1=fx(b,x1);
plot(x1,y1,'b-','linewidth',2.5)
%x=xlsread('data','a112:b230');输入第二组数据
y=x(:,2);x(:,2)=[];
plot(x,y,'rs','markerfacecolor','r')
b=[&&-238..&&-0.&&885..&&0.&&-9.e-06];
& & b=lsqcurvefit(fx,b,x,y);
& & b=nlinfit(x,y,fx,b)
n=length(y);
disp('data2')
SSy=var(y)*(n-1)
y1=fx(b,x);
RSS=(y-y1)'*(y-y1)
Rsquare=(SSy-RSS)/SSy
x1=linspace(min(x),max(x),350);
y1=fx(b,x1);
plot(x1,y1,'r-','linewidth',2.5)
%x=xlsread('data','a231:b384');第3组数据
y=x(:,2);x(:,2)=[];
plot(x,y,'k^','markerfacecolor','k')
b=[954.7179915&&-20..&&-0.5&&48..&&0.9&&-7.e-06];
& & b=lsqcurvefit(fx,b,x,y);
& & b=nlinfit(x,y,fx,b)
n=length(y);
disp('data3')
SSy=var(y)*(n-1)
y1=fx(b,x);
RSS=(y-y1)'*(y-y1)
Rsquare=(SSy-RSS)/SSy
x1=linspace(min(x),max(x),350);
y1=fx(b,x1);
plot(x1,y1,'k-','linewidth',2.5)
axis tight
legend('data1','fit1','data2','fit2','data3','fit3','location','best')
本帖最后由 Daletxt 于
15:24 编辑
clear,clc,warning off
fx=@(b,x)(b(1)+b(2)*x+b(3)*x.^2+b(4)*x.^3)./(1+b(5)*exp(-b(6)*x+b(7)*x.^2+b ...
谢谢!不好意思,我是小白,还有些看的不明白呀,程序跑出来跟你的不一样咋。这是我改的代码(红色部分是改动的)
clear,clc,warning off
fx=@(b,x)(b(1)+b(2)*x+b(3)*x.^2+b(4)*x.^3)./(1+b(5)*exp(-b(6)*x+b(7)*x.^2+b(8)*x.^3));
x=xlsread('体重生长数据.xlsx','c1:d111');%输入第一组数据
y=x(:,2);x(:,2)=[];
figure(1),clf
plot(x,y,'o','markerfacecolor','b')
b=[&&-30..&&-0.&&31..&&0.9&&-5.e-06];
& & b=lsqcurvefit(fx,b,x,y);
& & b=nlinfit(x,y,fx,b)
n=length(y);
disp('data1')
SSy=var(y)*(n-1)
y1=fx(b,x);
RSS=(y-y1)'*(y-y1)
Rsquare=(SSy-RSS)/SSy
x1=linspace(min(x),max(x),350);
y1=fx(b,x1);
plot(x1,y1,'b-','linewidth',2.5)
x=xlsread('体重生长数据.xlsx','c112:d230');%输入第二组数据
y=x(:,2);x(:,2)=[];
plot(x,y,'rs','markerfacecolor','r')
b=[&&-238..&&-0.&&885..&&0.&&-9.e-06];
& & b=lsqcurvefit(fx,b,x,y);
& & b=nlinfit(x,y,fx,b)
n=length(y);
disp('data2')
SSy=var(y)*(n-1)
y1=fx(b,x);
RSS=(y-y1)'*(y-y1)
Rsquare=(SSy-RSS)/SSy
x1=linspace(min(x),max(x),350);
y1=fx(b,x1);
plot(x1,y1,'r-','linewidth',2.5)
x=xlsread('体重生长数据.xlsx','c231:d384');%第3组数据
y=x(:,2);x(:,2)=[];
plot(x,y,'k^','markerfacecolor','k')
b=[954.7179915&&-20..&&-0.5&&48..&&0.9&&-7.e-06];
& & b=lsqcurvefit(fx,b,x,y);
& & b=nlinfit(x,y,fx,b)
n=length(y);
disp('data3')
SSy=var(y)*(n-1)
y1=fx(b,x);
RSS=(y-y1)'*(y-y1)
Rsquare=(SSy-RSS)/SSy
x1=linspace(min(x),max(x),350);
y1=fx(b,x1);
plot(x1,y1,'k-','linewidth',2.5)
axis tight
legend('data1','fit1','data2','fit2','data3','fit3','location','best')
首先,b=[......]这个是啥,哪里来的?
b=lsqcurvefit(fx,b,x,y);
b=nlinfit(x,y,fx,b)这两个做非线性曲线拟合的函数为什么运行5次循环呢?
n=length(y);这个是数组维度的最大长度是做啥的?
最后一步是画图我明白。
还有这是3个个体的程序,而且每条曲线都定义了颜色,问题是循环程序怎么写,我的3000头数据不能够一条一条画出来,一个一个写代码。
谢谢!非常感激!
关注者: 49
最大的问题在于横坐标,我哪里用的大约是出生后的天数,起始位置应在10天(左右)。你这里显然不对,logistic, gompertz方程原则上应以0为起始点。
关注者: 49
本帖最后由 stats01 于
15:37 编辑
谢谢!不好意思,我是小白,还有些看的不明白呀,程序跑出来跟你的不一样咋。这是我改的代码(红色部分是 ...
横坐标不对,logistic, gompertz方程的起始X应以0开始,你这里明显不对。我的大概将第一组数据从X=8~9(天)左右开始。
本帖最后由 Daletxt 于
16:57 编辑
横坐标不对,logistic, gompertz方程的起始X应以0开始,你这里明显不对。我的大概将第一组数据从X=8~9(天 ...
对,我的数据确实没有0~30kg的数据,从出生到测定之间大概有2个月的时间是没有的,所以该怎么弄呢,你讲第一组数据从X=8~9天开始在程序里怎么体现的,还有你做的这个是什么曲线拟合,不是Logistic和Gompertz吧?是多项式吗?然后我模拟了一个出生日期,把横坐标时间换成该个体的日龄,做出来的图像和你的一样了。可是如何写循环语句呢,3000个体不能这样写程序吧。
横坐标不对,logistic, gompertz方程的起始X应以0开始,你这里明显不对。我的大概将第一组数据从X=8~9(天 ...
我模拟了一个出生日期,把横坐标改为日龄,然后画出来了跟你一样的结果,但是现在求解循环语句。还有你用的这是什么模型的曲线拟合?不是Logistic和Gompertz是吧?是多项式吗
站长推荐 /1
Powered by求高人解决,求教怎么用matlab求解logistic参数?_百度知道
求高人解决,求教怎么用matlab求解logistic参数?
c0,b.com/(1-(1-(k&#47.baidu,216,146://zhidao,115,2,/link,3,85?url=ZvGf2R-xhXIeVwWVE9Vk_A_hFIunhrzib3-sr2aIrRHvahmwbfltXt48oBO4JuXXGCHNVlmfARu3I0rbmBC9_q" target="_blank">http,9]y=[37.baidu,求大神解答,6,246.4,5:t=[0,c1之前用的这里面的程序<a href="http,8;37)*exp(-r*t)))这里面的参数是k和ry=k&#47,72,r;b)这里的参数是k,289]方程是y=(1-(1-(k&#47?url=ZvGf2R-xhXIeVwWVE9Vk_A_hFIunhrzib3-sr2aIrRHvahmwbfltXt48oBO4JuXXGCHNVlmfARu3I0rbmBC9_q但是我把他的数据和方程改了之后放在matlab7,1,191;30)^b)*exp(-r*b*(c0*t^2+c1*x)))^(1&#47,4://zhidao,在线等.5.11里面运行报错数据是这些
提问者采纳
而后用矩阵相除求解。2两种方法,拟合法:1,简化logistic模型为线型,通过数据运算,用 nonlinfit命令
大神能给详细的程序吗,整好了我给50块,没时间折腾了。有兴趣可以加我Q Q:
提问者评价
采纳率100%
其他类似问题
为您推荐:
matlab的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁查看: 4133|回复: 10|关注: 0
logistic 方程的系数求解
已知logistic模型为 x(t)=xm/(1+(xm/x0-r)*exp(-r*t))其中XM,X0,R是参数。
已经年的人口数据,x=[1:29]
y=[3750.96
4629.43]'希望能拟合出那3个参数?
请教高手求解~~~~
本人试过CFTOOL,lsqcurvefit都拟合不来?请高手实际能做出后得到答案?
关注者: 1
用1stopt算的哈
参数& & & & 最佳估算
a& && && & & & & & 132
b& && && & & & & & 468
r& && && & & & & & 0.0537
其中 a=xm,b=x0.
关注者: 1
1stopt 代码如下:
Title &logistic function&;
Function y = a/(1+(a/b-1)*exp(-r*x));;
1& & & & 0000
2& & & & 0000
3& & & & 0000
4& & & & 0000
5& & & & 0000
6& & & & 0000
7& & & & 0000
8& & & & 0000
9& & & & 0000
10& & & & 0000
11& & & & 0000
12& & & & 0000
13& & & & 0000
14& & & & 0000
15& & & & 0000
16& & & & 0000
17& & & & 0000
18& & & & 0000
19& & & & 0000
20& & & & 0000
21& & & & 0000
22& & & & 0000
23& & & & 0000
24& & & & 0000
25& & & & 0000
26& & & & 0000
27& & & & 0000
28& & & & 0000
29& & & & 0000
关注者: 24
这个用SAS求比较好 还可以给出P值和标准偏回归系数!
回复 4# hgsz2003 的帖子
我用过SPSS的那个logistic来求解。能解出来东西,图形,但是就是不给参数,无法预测!
回复 3# mathjiang 的帖子
谢谢,用那个软件确实解了出来。但是我想MATLAB的那些为什么不可以呢?
我想问的是,你那边用MATLAB的话,能不能得到解啊?
关注者: 24
16:04 发表
我用过SPSS的那个logistic来求解。能解出来东西,图形,但是就是不给参数,无法预测!
用SAS吧 需要程序PM我 我传给你
回复 7# hgsz2003 的帖子
你好,能不能传个SAS LOGISTIC回归给我。.顺便问下怎么预测
回复 7# hgsz2003 的帖子
能不能传个SAS LOGISTIC回归给我。怎么预测?
楼主,我用matlab的nlinfit写的是这样:
clear all
clc
%%数据准备
x=[1:29]';
y=[3750.96
3792.33
3826.58
3871.51
3924.32
3963.1
3993.09
4029.56
4070.07
4121.19
4169.85
4208.88
4234.91
4261.37
4285.91
4313.3
4341.2
4369.63
4400.09
4422.28
4446.86
4467.46
4501.22
4519.84
4535.98
4551.58
4577.22
4602.11
4629.43];
%%非线性拟合
beta0=ones(1,3);
[beta,r,j] = nlinfit(x,y,'fun',beta0);
fun函数如下
function [ y ] = fun( beta0, x )
%UNTITLED2 拟合的函数
%& &此处显示详细说明
y=beta0(1)./(1+(beta0(1)./beta0(2)-beta0(3)).*exp(-beta0(3).*x));
但是得到的结果和楼上的不太一样:funk: 不知道哪里出错了,希望能够不吝赐教帮我指正下。谢谢
& &1.0e+03 *
& & 4.2476& & 1.2461& & 1.2465
&&-77.7993
&&-38.7693
&&-12.7393
& &13.7207
& &38.2607
& &65.6507
& &93.5507
&&121.9807
&&152.4407
&&174.6307
&&199.2107
&&219.8107
&&253.5707
&&272.1907
&&288.3307
&&303.9307
&&329.5707
&&354.4607
&&381.7807
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
& & 1.0000& && && &0& && && &0
r是残差,j是jacobian矩阵
站长推荐 /1
Powered by&&源码搜搜[中文],大家一起找最好的开源代码。
&&请提交您认为需要收录的源码网站。
求解偏微分方程的matlab源码matlab1.rar - 偏微分方程的数值解法的MATLAB程序介绍了应用最为广泛的椭圆型、双曲型、抛物型偏微分方程的数值解法,而且还详细编程实现了每种方程的多种常见数值解法。 附件使用MATLAB编程来实现这些算法。标签:matlab&评论:0条
图像处理的变分和偏微分方程方法,比较经典,该领域少有的几本中文资料之一标签:专题技术&评论:0条
local.rar - 将求解偏微分方程和局部网格加密简单组合在了一起。用的方程是一个含有间断二次系数的椭圆型方程,在系数间断的位置,解会有一个弱间断。-Will solve the partial differential equations and local mesh refinement simple combinations together.标签:Others, 算法&评论:0条
vbC13.rar - 用VB语言实现偏微分方程的解法 包括解边值问题的松弛法、交替方向隐式方法等-VB language PDE solution of the boundary value problems including Xie relaxation method, alternating direction implicit methods标签:vb, 数据结构&评论:0条
heat2.rar - 使用ADI方法解偏微分方程(二微加热器方程)-ADI method for the use of partial differential equations (2 micro-heater equation)标签:matlab&评论:0条
difequ.rar - defequ,是用来解偏微分方程的求解器。能够自主定义边界条件,并且可以得到图示的效果。-defequ is used solution of partial differential equations solver. Autonomy definition of boundary conditions,标签:C++, 算法&评论:0条
cedif.rar - 一致性扩散原理求解偏微分方程,常用来进行超声图像的斑纹噪声消除算法-consistency proliferation principles of nonlinear partial differential equations, commonly used to stain the ultrasound image noise reduction algorithm标签:matlab&评论:0条
PartialDifferential. - 偏微分方程的解法大全,数值分析应用非常好的程序。-Partial Differential Equation Daquan, a very good application of numerical analysis program标签:matlab, 算法&评论:0条
VBFORMULA.rar - 结合实例用VB编程表达了一阶偏微分方程的数值解法,希望能为您提供一点帮助。 -with examples using VB expression of an order partial differential equations of the numerical method, we wish to offer you some help标签:vb, 算法&评论:0条
说明:用小波求解偏微分方程,特别是椭圆形偏微分方程标签:matlab&评论:0条
说明:在Matlab环境下编写的偏微分方程的数值解法,偏微分方程的数值实验的Matlab程序实现标签:matlab&评论:0条
MATLAB.PDEtool.rar - 详细介绍了MATLAB求解偏微分方程的PDE工具箱。-PDEtool标签:matlab, 电子书&评论:0条
说明:小波方法和偏微分方程方法是图像去噪中的主要方法。该文提出基于离散小波变换对图像进行阈值去噪,得出了小波阈值的偏微
分方程表示形式,在此基础上研究偏微分方程的解法,采用分数步的小波阈值方法对图像去噪,得到了较好的去噪效果,同时可以保护边
缘。数值试验结果表明,该方法具有比小波方法更好的去噪效果,能获得较高的信噪比标签:Visual C++&评论:0条
imageprocessing.rar - 这是基于偏微分方程的图像处理的附带光盘内容,希望对大家有用-This is based on partial differential equations in image processing with CD-ROM and, hopefully, be useful to everyone标签:word, Special Effects&评论:0条
GACspf.rar - 图像处理的偏微分方程方法中利用GAC水平集方法实现图像分割-Image processing method of partial differential equations using GAC Level Set Method for Image Segmentation标签:matlab, Special Effects&评论:0条
说明:求解偏微分方程的matlab程序,求接双曲偏微分方程组的标签:matlab&评论:0条
说明:C-N解偏微分方程的程序。解的是定步长的抛物型偏微分方程:
du/dx - a * d2u/dx2 = 0
在程序中可以更改 a 的值以实现不同系数的解。在循环中改变 a 的值以实现变系数. 该说明在压缩包是也有标签:matlab&评论:0条
zishe.rar - 图像处理的偏微分方程方法中利用自蛇模型算法实现二值图象平滑-Image processing method of partial differential equations model the use of the snake algorithm since the value of image smoothing abuse标签:matlab, Special Effects&评论:0条
RBFcollocRO.rar - 本代码为基于matlab的求解偏微分方程的利用径向基函数的无网格方法的源码-based on the Matlab code for the solution of partial differential equations using Radial Basis Functions non-grid method FOSS标签:matlab&评论:1条
说明:偏微分方程的数值解法的MATLAB程序介绍了应用最为广泛的椭圆型、双曲型、抛物型偏微分方程的数值解法,而且还详细编程实现了每种方程的多种常见数值解法。
附件使用MATLAB编程来实现这些算法。
标签:matlab&评论:0条
CopyRight (&)
All Rights Reserved&

我要回帖

更多关于 logistic模型matlab 的文章

 

随机推荐