Python 为什么scipy的曲线拟合给出了基因表达数据的多元回归线?
“”“ 我正在尝试将一个指数deacy函数拟合到一个大的基因表达数据集。我在stackoverflow上花了很多时间,我发现了一些我想尝试的东西 但我得到了多重回归线,我不知道为什么以及如何修复它。如果你能建议一个更好的选项或函数,我也非常感激。 提前谢谢你帮了我的忙 “”“ 这就是函数 将函数应用于我的数据Python 为什么scipy的曲线拟合给出了基因表达数据的多元回归线?,python,scipy,curve-fitting,non-linear-regression,Python,Scipy,Curve Fitting,Non Linear Regression,“”“ 我正在尝试将一个指数deacy函数拟合到一个大的基因表达数据集。我在stackoverflow上花了很多时间,我发现了一些我想尝试的东西 但我得到了多重回归线,我不知道为什么以及如何修复它。如果你能建议一个更好的选项或函数,我也非常感激。 提前谢谢你帮了我的忙 “”“ 这就是函数 将函数应用于我的数据 您只需对数据进行排序: t=np.array(df_样本['smallRNA']) y=np.array(df_sample['genexpr']) t_范数=(t-t[0])/(t[-
您只需对数据进行排序:
t=np.array(df_样本['smallRNA'])
y=np.array(df_sample['genexpr'])
t_范数=(t-t[0])/(t[-1]-t[0])#归一化
c_0=y[-1]
tau_0=1
a_0=(y[0]-y[-1])
popt,pcov=曲线拟合(func,t_范数,y,p0=(a_0,tau_0,c_0))
a、 tau,c=popt
y_fit=func(t_范数,a,tau,c)
plt.plot(t_norm,y,'b.)
idx=np.argsort(t#u norm)#对数据进行排序
plt.plot(t_范数[idx],y_拟合[idx],'r-')#plot排序拟合
plt.show()
虽然从统计学上看,这里似乎没有任何结构…但你甚至不应该为这个数据拟合一个常数,更不用说一个三参数非线性方程;-)。多条曲线是否来自于
t
未排序的事实,因此它实际上是曲线上点之间的锯齿形连接。尝试将拟合绘制为点或在t
中按升序对数据进行排序。
smallRNA = [1.4847814317391115,
1.233300788320302,
1.3482469618574953,
1.370572550987182,
1.2942438021815492,
1.8362649665550308,
1.9478952510177636,
1.7449833728367992,
1.133732460554052,
1.3172194208200945,
2.2366329568831316,
1.2651420206147634,
2.0615652798644457,
1.5188246709945887,
1.1466238867527543,
1.3408780599606556,
1.4771209497656745,
1.651149617228606,
1.6860351720116376,
1.2506453147790253,
1.4870430365838434,
1.524647241933158,
1.4547220043517506,
1.7128458331422909,
1.2111590790051767,
1.4833400674312536,
1.5011399997244916,
1.3913217014556971,
1.4161650806831194,
1.6373102731988107,
2.3951290051934726,
1.6848115128561434,
2.9188929470100784,
1.9035779757468991,
1.7306658643903157,
1.698255623968752,
1.2847578416257817,
2.2638689793456934,
1.5930676648572581,
1.679254296180541,
1.2719964106792359,
1.2037024877731124,
1.7079879931344195,
1.6544933181202117,
1.0485948565930532,
1.9978932787991883,
2.1584455179465056,
1.5855391880033107,
1.4131624973162846,
1.0491493504262577,
1.5440379870152185,
0.9634572526320548,
1.334006585966365,
1.7079879931344195,
1.3190420464570736,
1.7181179328838307,
1.6561191123457741,
1.6147186951451824,
1.6720869623098138,
1.6979813431306043,
1.3513988445861689,
1.09654186866835,
2.315102280947673,
1.651724518310352,
1.557770505403525,
1.6749162715346937,
2.830459562006103,
1.6607070287389956,
1.8426125062701317,
1.9938047370848269,
1.512871040315023,
1.4719534246949146,
1.9462952066313157,
1.3476999540804735,
1.552935620670088,
1.6963623896975115,
1.6051862355080382,
2.1400574327564597,
1.6455025236112542,
1.6099862265092482,
1.260871347310878,
1.4181056734587187,
1.602878345784571,
1.2470179140349023,
1.6386413699560323,
1.6153749530357946,
0.5972531564093516,
1.3845760323803993,
1.8707082507565052,
1.9446057842893594,
2.5911426074059265,
1.6216778595798695,
0.8267211148215126,
1.280072164005035,
2.1448277971531833,
1.5136542988762927,
1.3597890830112078,
1.1988223702026333,
1.485048887858052,
1.5852724352684031,
1.9208129532406653,
1.5292685023520693,
2.2402533306161008,
1.5809553088645034,
1.0324008985174453,
1.8372713254640423,
1.4196121857885755,
0.8993753827747732,
1.5813286847624104,
0.5972531564093516,
1.4514089682216447,
1.9534275512344357,
1.1590345756261624,
1.804573660514313,
0.9634572526320548,
1.188872137425364,
0.8796857765384195,
1.0875640778916444,
1.034092960428115,
1.6288585084680207,
2.3897534428254215,
1.75047276418574,
1.9774667460114315,
1.8513017159377254,
1.7340966607967765,
1.645240704520543,
1.5108664977177522,
1.4648163848908131,
2.1410823211778403,
1.7687196791762685,
1.6052523491007507,
2.675390064982142,
1.5070320893546723,
2.2705554362094054,
1.5778785887497413,
1.2719078004338622,
1.8033673563678885,
1.6084038766685629,
1.5577609032739919,
2.626402622679313,
1.368055381284621,
1.5096502028846615,
1.4691415136668815,
1.8571664694047927,
1.4357218027785223,
1.9861933433596186,
1.3559989421473164,
1.6960705653999977,
1.5797554562676404,
2.115884188384194,
1.6867706454133078,
1.526968779225678,
1.4058990171935448,
1.4992705571074072,
1.8738790555045006,
2.234660547275298,
1.849839119767255,
1.6956736498899025,
1.3843844598715376,
1.5522559968891674,
1.5989945747221277,
1.5668369355838003,
1.5051787003315549,
2.1660347974066982,
1.5701051075918644,
1.4417027546447603,
1.678262947477572,
1.8586497010487721,
1.7331317397634975,
2.184363648350726,
1.302107256488202,
1.7992548616068385,
1.7233369992526086,
2.013788196548857,
1.1118655144253595,
1.704118347478623,
1.098330571815151,
1.847087848386142,
1.1941744714226987,
2.223319853488265,
1.4970096850509844,
1.4482165159623221,
2.1289427671857952,
2.0193939201711064,
1.3704162307853769,
1.7787672437633182,
2.8434461654396217,
1.542418719275772,
1.3168345086654032,
1.6394693078981621,
1.7693003851568454,
1.8268796411139967,
1.7639346193000356,
1.3493655386282142,
1.7773817319879697,
0.9922918299081754,
1.2368583317807773,
1.636321610695747,
1.1519565606344542,
1.3065764144587242,
1.7440698169796038,
2.061929554443146,
1.3491116903528981,
1.6063853580404708,
2.10098612376305,
1.198169879301653,
1.4518215531821759,
0.7675283643313485,
0.9611096795514968,
2.124215900612652,
2.559775672893104,
1.7229719764638614,
1.6462651881380896,
1.843684956282479,
1.6311941249724367,
1.8157031826262484,
1.6158347871076075,
1.7408216031833423,
1.9934887015956644,
1.4499191247016987,
1.4534251582590787,
1.8941771885645704,
1.8228838742044629,
1.65265052648444,
1.5987070126638212,
1.7492374674300186,
1.5240334282452728,
1.451787927798003,
2.1244081460368367,
1.3664968183514556,
1.2587077236907418,
0.9634572526320548,
1.2931813736665314,
1.3748856243767726,
1.5491163587347603,
1.4115648465514437,
1.3978420086866388,
1.2332977966159,
1.344852878031716,
1.162517954982421,
1.1517456660514334,
1.716341874802147,
1.1958484823358815,
1.2544892396556067,
1.3063709067507911,
1.3413680728167385,
1.972490647444594,
2.2086387144887407,
1.109882319947273,
1.6147924084093643,
1.6682388199482967,
1.6916983477048313,
1.749454060523717,
1.5310321270003897,
1.5317066167115303,
1.8090237778630935,
1.7305465679927772,
1.3671638088116929,
1.1722510807146163,
1.326669744758649,
1.8474648005518322,
1.495649602488043,
1.7548840396870868,
1.7917594692280552,
1.5090723851424706,
1.3211543639244325,
1.4517146391746436,
1.639557958338597,
1.7943435003173827,
2.4502027948363927,
2.4079079798034706,
1.6700158510497638,
1.8695920379297737,
2.9903512612966665,
1.610484318675355,
1.4769844744372003,
1.2625974419262989,
1.4318932648446774,
2.045787584289522,
1.3535950298155,
1.584629122645107,
1.3492740003805157,
2.187673458149201,
1.4480468601975305,
1.3304008082847716,
2.3867159840087835,
1.4811867967797938,
1.6704033645129963,
1.377201264878756,
1.2299643405653156,
1.717234054622453,
1.2811699579251061,
2.300995121671421,
2.4856644882243546,
1.7744060018328025,
1.2932915858480336,
1.5513201167191744,
1.5011091737147157,
1.8078913880852043,
1.3006275650643129]
geneExpr = [1.3769050211772507,
3.7562462827448257,
2.6719763224779958,
1.1088030594011895,
3.146026602007864,
5.1314962447314505,
2.6605132571854435,
2.286485479964256,
1.9650113466570955,
1.2787138204750903,
2.7636641799765105,
4.5285096091180135,
2.055471332190772,
1.9978097053593409,
2.087677493805377,
0.6863704250688618,
2.0974613358210905,
2.2132254700071208,
2.48323841200138,
1.5039881301377562,
2.065007107942714,
2.049230428240303,
3.1503271044572427,
2.3342037488522647,
1.2879035090495468,
2.4580229092932604,
1.326194618426605,
1.467041043454956,
2.069229739358799,
0.9202774621803934,
1.913175975101608,
1.5289070141065204,
3.9252170136010194,
0.4793125314239097,
0.9274139930893066,
3.0955995956056253,
0.9350589706109779,
1.3667921114846069,
1.2438646855071578,
1.4746053869947549,
1.3828684829828457,
1.1102630744716409,
1.2884669631143617,
1.2019684569402267,
1.768584417233937,
3.3488851200048906,
1.3085841085041314,
1.949837840980232,
1.5458642815467911,
2.8734656865803703,
1.0097062308572082,
2.26417092115662,
0.5494502953108996,
2.852342629706449,
1.1610537731711952,
1.8628414163276428,
2.055877681980133,
2.031529704965473,
1.706727039705061,
5.562953440306615,
4.516805355870563,
1.7852720556314563,
2.1005987032703493,
2.0298194651259567,
4.067765793497416,
1.7752345258038185,
1.9350866537015463,
1.0961439126058516,
1.602554255421435,
2.291438448294199,
1.340880292313372,
2.408586242306745,
2.100697732173863,
0.77438404464467,
2.8981547413635966,
3.1998902982962987,
2.6960014653459727,
1.92074196528459,
1.8060268874721686,
0.7341812462712731,
4.040338021942181,
1.0206096517096142,
1.3877909962108417,
1.6341703208718996,
3.0749360871652254,
1.9089116792175367,
1.9474345491984089,
1.268331974681008,
0.8795809981676224,
1.9144190091281208,
0.1270802397390998,
4.24833595711353,
4.3669910031275565,
1.0416935096825009,
1.1940615718143244,
0.8558026237665811,
1.812046098646976,
1.311673507873615,
3.0093397849673607,
2.3649421461780626,
3.1504408119984464,
1.3703907267761202,
2.035010457899985,
1.97571648922404,
1.508716929296002,
0.9259976145453455,
5.087583944061218,
2.163327839574992,
5.164145580225468,
1.882381183129369,
2.1537323048551884,
1.4641679356399222,
1.2401260403911023,
1.8947336676344437,
1.87430000038156,
1.9324192128382656,
2.3637097605868256,
1.8153183897580145,
2.7034472776356075,
1.2548972291582945,
1.5302245388784623,
1.1170554826855297,
1.5474674616317405,
1.4778135582987868,
1.5177027250537067,
1.3100328840517919,
1.2022761604083556,
2.061201470946425,
1.4032400860384922,
1.6048491382684908,
1.213512354892811,
1.84219352998238,
0.7936446864683406,
2.2700301363565782,
3.003996024096597,
3.660411491521197,
2.195575305005744,
1.1541602033596847,
0.7881284979664975,
2.6849886985602893,
0.7206015440349863,
2.7252722206622386,
1.6010500579439904,
1.3923463784019967,
1.8243640168449449,
2.7880079433128633,
1.0659521525480418,
0.8876191860288731,
1.2036185828499717,
1.5163663935683656,
1.8751375205086147,
1.6593808016539568,
1.3450629536711138,
1.743046254509446,
2.383365679891565,
1.7202874287730594,
1.2505241744841202,
1.0648829013065944,
1.676612144448407,
2.5646208023284705,
2.9383803354532816,
0.6636096277744107,
1.980524826088373,
1.88716841838094,
1.4573506929257631,
2.8157783254949216,
2.3132066108617453,
3.5849957091245392,
1.3104222176649503,
5.005869186797619,
1.656583830703468,
1.4758563116669652,
3.1590106444683967,
1.5082266816326058,
1.3998383532758802,
1.84885674137052,
2.09998977154838,
3.78907586873952,
0.4662883394312476,
2.5388739765778756,
0.7611096254627837,
0.9830374176395882,
2.7322374977290544,
0.9792087840489858,
3.675105498156061,
0.8825732342313036,
3.1960685882274653,
5.259124190596204,
1.204476090855313,
1.3351614013975992,
1.3109417110191364,
2.100469817786245,
2.0151382362984953,
1.361158569885664,
1.0179610833986736,
0.8346346836719615,
1.9797759350043793,
3.2861656450393952,
2.334863099051601,
1.7086361720456942,
3.3297249235714377,
2.7703363951836004,
1.0897853295849105,
1.6964377929291818,
2.6302524565571352,
2.3217444361354165,
0.9778636256720471,
1.1641320302129619,
3.669759881539616,
1.8989776903183184,
1.8451729468670635,
2.284817884485841,
1.4322665246452273,
1.8028063251468571,
6.424313801576621,
1.3658464843728737,
3.6036740034305152,
2.4287401275948666,
1.9307836296113483,
2.3056947098759233,
1.7764027636098791,
1.1657155836935535,
3.0758095175369498,
2.1186188694505184,
1.0635003471332336,
0.6507112000963948,
1.7708163474637342,
2.2882337233824046,
1.3158185947256855,
1.8132723096072454,
1.6137762247932652,
1.108713242644792,
2.563727794452838,
2.6229335504139892,
1.63571914984831,
1.8453736442669983,
2.989346077449386,
0.6276060667250072,
1.0609944423522246,
2.15349991293981,
2.3320143470152193,
1.5118060325992106,
2.835346822718986,
1.5022536697497582,
0.8256556265785171,
2.7321833634584944,
2.526064328111412,
1.466756407403721,
1.7215191254561708,
1.0388635252424339,
1.715325294157353,
1.2076875587847855,
1.2362371642474348,
0.33394812674227087,
4.675284054378683,
2.389760294726976,
4.792628954075339,
2.1024724402368418,
0.8976139347165087,
0.6952074669183057,
2.709776326779585,
1.1764754694078634,
1.0073671761913532,
1.1187112550934273,
1.2764159114560854,
2.608374090493331,
2.27112424293213,
1.4332125797844384,
3.5283190803536235,
2.334990667936763,
2.285800451959592,
1.1186112799702084,
2.0399703968427336,
1.4570913440289304,
0.7014837257279548,
1.7852613553987886,
1.959023435165816,
1.5829877972968962,
1.4426312620833972,
1.496764100430386,
4.933175199545022,
4.060964038202633,
3.0709086261971392,
2.490130727772556,
3.964732991745056,
1.950304860608104,
3.60356269649804,
3.0678005050984707,
1.5710675762000597,
1.7144908152637672,
0.687838463709859,
4.599006382272776,
2.2675849365369922,
1.3590435271624708,
1.148793683412492,
2.2624825972759024,
0.9497618693732038,
1.6619770001458867,
1.53102207591445,
5.821619725812528]
df_sample = pd.DataFrame(list(zip(smallRNA,geneExpr)),columns=['smallRNA','geneExpr'])
def func(t, a, tau, c):
return a * np.exp(-t / tau) + c
t = np.array(df_sample['smallRNA'])
y = np.array(df_sample['geneExpr'])
t_norm = (t - t[0])/(t[-1] - t[0]) # normalized
c_0 = y[-1]
tau_0 = 1
a_0 = (y[0] - y[-1])
popt, pcov = curve_fit(func, t_norm, y, p0=(a_0, tau_0, c_0))
a, tau, c = popt
y_fit = func(t_norm, a, tau, c)
plt.plot(t, y, 'b.')
plt.plot(t, y_fit, 'r-')
plt.show()