Matlab函数rsquare的问题
Problems with Matlab function rsquare
我正在计算模型的决定系数,方法是:
Rsqrd1 = 1- sum( (DataSeries(:)-ModelSeries(:)).^2 ) / sum( (DataSeries(:)-mean(ModelSeries(:) )).^2 ) ;
但是,当我使用下面的 Matlab 函数时,我收到了不同的结果(即零)。我的问题是什么? (Matlab函数的编码和测试方法我不是很懂,所以只能比较一部分...)
[Rsqrd2, ~] = rsquare(DataSeries,ModelSeries);
仅供参考,下面是我使用了以下两个结果的数据示例:
Rsqrd1 = 0.300314935784522;
Rsqrd2 = 0;
DataSeries = [ 8.109999999999999; 7.340000000000000; 8.140000000000001; 8.529999999999999; 8.580000000000000; 10.060000000000000; 34.219999999999999; 37.899999999999999; 41.490000000000002; 41.960000000000001; 43.280000000000001; 42.950000000000003; 40.950000000000003; 41.979999999999997; 43.909999999999997; 43.250000000000000; 41.259999999999998; 49.960000000000001; 59.829999999999998; 56.850000000000001; 49.960000000000001; 39.420000000000002; 43.020000000000003; 36.509999999999998; 37.020000000000003; 35.829999999999998; 32.289999999999999; 30.079999999999998; 30.010000000000002; 28.030000000000001; 27.210000000000001; 30.460000000000001; 36.600000000000001; 38.799999999999997; 40.320000000000000; 40.530000000000001; 38.500000000000000; 36.719999999999999; 33.000000000000000; 32.009999999999998; 32.869999999999997; 40.210000000000001; 47.490000000000002; 44.950000000000003; 36.890000000000001; 34.520000000000003; 36.000000000000000; 32.289999999999999; 33.060000000000002; 29.039999999999999; 25.590000000000000; 23.340000000000000; 23.250000000000000; 24.989999999999998; 15.119999999999999; 26.010000000000002; 34.649999999999999; 36.189999999999998; 37.500000000000000; 38.560000000000002; 36.930000000000000; 33.030000000000001; 29.930000000000000; 28.390000000000001; 26.390000000000001; 33.039999999999999; 38.990000000000002; 33.930000000000000; 27.079999999999998; 18.899999999999999; 25.070000000000000; 12.250000000000000; 13.630000000000001; 15.380000000000001; 22.480000000000000; 26.090000000000000; 28.390000000000001; 31.320000000000000; 48.689999999999998; 59.969999999999999; 54.789999999999999; 44.000000000000000; 42.090000000000003; 38.390000000000001; 37.649999999999999; 32.590000000000003; 29.800000000000001; 28.649999999999999; 29.180000000000000; 34.960000000000001; 37.640000000000001; 36.939999999999998; 29.579999999999998; 26.370000000000001; 19.079999999999998; 8.789999999999999; 11.279999999999999; 10.460000000000001; 8.619999999999999; 8.770000000000000; 7.270000000000000; 20.059999999999999; 31.820000000000000; 39.460000000000001; 38.840000000000003; 38.520000000000003; 38.039999999999999; 33.590000000000003; 32.979999999999997; 32.960000000000001; 36.640000000000001; 38.119999999999997; 39.549999999999997; 46.990000000000002; 58.469999999999999; 54.539999999999999; 39.770000000000003; 37.560000000000002; 39.259999999999998; 32.049999999999997; 34.729999999999997; 34.630000000000003; 31.260000000000002; 30.039999999999999; 30.280000000000001; 31.890000000000001; 41.670000000000002; 59.890000000000001; 59.890000000000001; 59.329999999999998; 58.409999999999997; 59.090000000000003; 55.969999999999999; 53.520000000000003; 49.939999999999998; 47.289999999999999; 47.570000000000000; 55.899999999999999; 59.939999999999998; 59.240000000000002; 52.939999999999998; 38.329999999999998; 36.710000000000001; 35.460000000000001; 35.810000000000002; 34.840000000000003; 33.259999999999998; 32.590000000000003; 33.259999999999998; 34.090000000000003; 44.939999999999998; 59.430000000000000; 58.270000000000003; 58.270000000000003; 58.270000000000003; 58.079999999999998; 56.039999999999999; 55.430000000000000; 53.950000000000003; 53.439999999999998; 51.969999999999999; 58.880000000000003; 82.299999999999997; 70.109999999999999; 62.310000000000002; 51.930000000000000; 45.950000000000003; 37.549999999999997];
ModelSeries = [ 8.109999999999998; 8.033959427220921; 8.323743041322626; 8.642708281120481; 8.582517975760446; 11.267851534695547; 19.265627892290375; 24.383823505293059; 24.255451695071979; 23.221588621286294; 23.061055862798810; 22.113019289306415; 21.371289863159902; 20.649139051697372; 20.517347467041816; 20.204389732885463; 20.152889919509455; 23.796341860624523; 28.357685405641778; 26.637620279541537; 22.250623983516938; 18.521786633703048; 17.231002075227554; 13.067216036414376; 19.142739022137061; 17.721978391048754; 15.855447009714094; 14.671720684372842; 14.681919810093815; 14.765381876692128; 11.357099766936273; 15.816337667523761; 20.080445840613475; 21.201625338935443; 22.073981571269272; 22.515202276491678; 21.543798733221458; 19.960000354644297; 18.067072108251327; 17.381842068691483; 17.031516337275718; 21.137586012909246; 25.023728337649139; 22.772401470260085; 18.479087827412922; 14.972363725126110; 17.654172434932196; 11.716255484871617; 19.715961876585990; 18.155212284709371; 16.157517128358631; 14.873595374529506; 14.807724678847782; 14.816736894019828; 11.339910137512746; 15.714998343157673; 19.855463769222808; 20.864416383513849; 21.621229985316365; 21.951821367820752; 20.909538825844994; 19.286028051295396; 17.380523953397315; 16.649325149265788; 16.244747678122277; 20.077382742947545; 23.671685948867548; 21.455816819780182; 17.342414495551786; 13.997360909813795; 16.442356118812683; 10.871782060716438; 9.254066806706989; 9.020435845559256; 9.198343907518664; 9.402433405571619; 9.194123813724323; 11.889052472788039; 20.026481568965160; 24.977165077948360; 24.489207826870764; 23.114540096244365; 22.636235398768406; 21.409588152343272; 20.414075626818608; 19.464490741778725; 19.090081921322344; 18.560137046203984; 18.282057191300733; 21.323265914583974; 25.105779337411779; 23.305664987061846; 19.243112642200309; 15.837518714974767; 14.571028978312411; 10.930566921047774; 8.043061483121409; 7.828278448844956; 7.971443209965454; 8.137571402681322; 7.947505847139930; 10.477597371114410; 17.994873577687876; 22.884932423902036; 22.880903074120706; 22.024300523218443; 21.996973699650383; 21.219211759187829; 20.636217357395591; 20.069520890245851; 20.077349735794858; 19.910967044646512; 20.005696385024002; 23.801346418078619; 28.585076924647108; 27.067028838815997; 22.796087957505328; 19.136718350436571; 17.957761530043999; 13.739457493789578; 10.310824888906227; 10.234357169105408; 10.627415478755154; 11.062492850356721; 11.016017242485642; 14.506641643689173; 24.884595907986515; 31.606278720197437; 31.557624279398006; 30.332367155586006; 30.248647555318538; 29.132457008298452; 28.284532096511711; 27.459546453686421; 27.419960762893837; 27.140870313592835; 27.215931128615544; 32.312946353894560; 38.724658154432746; 36.587267960523683; 30.743914731877290; 25.748050465465422; 24.103274970768545; 18.395418569792440; 13.769537490600122; 13.631459113517636; 14.116779371574737; 14.654058009734536; 14.551159058407341; 19.106427552870549; 32.677949691257076; 41.379150497789212; 41.187871023605659; 39.464033938070862; 39.228799119138912; 37.657741343154058; 36.440049352143852; 35.257483623102601; 35.085564440852409; 34.607106722839973; 34.579707730445875; 40.908025648164319; 48.846243022607112; 45.979419502968788; 38.491201346114494; 32.114034660484577; 29.947100964693604; 22.766547766228452];
拥有一些数据将有助于确定问题。
您指的是 here 发布的 Matlab 函数吗?
如果是,在发布的示例中,它似乎适用于行向量。也许这可能是问题 (?) 我无法访问 Matlab,但这可能有效:
rsquareColumnTest = @(x,y) rsquare( (x(:).') , (y(:).') );
然后是 Rsqrd2 = rsquareColumnTest(DataSeries,ModelSeries);
如果通过测试,当然可以直接通过你的数据转置,不需要定义匿名函数。
收到数据后进一步编辑
感谢您提供数据。
首先:R^2 通常不是一个好主意你可能想看看 at this site,例如。
也就是说,如果您想比较线性模型与常数模型的表现,R^2 是有意义的。常量模型是线性模型的一个子集,这就是为什么 R^2 永远不会为负(或者如果使用得当,永远不应该为负)的原因。
如果您查看 definition,您将 R^2 定义为
Rsqrd1 = 1 - sumSqDiff(DataSeries, ModelSeries) / sumSqDiff(DataSeries, mean(ModelSeries));
我定义的地方
sumSqDiff = @(x,y) sum( (x(:)-y(:)).^2 );
根据 R^2 的定义(我鼓励你看看为什么),你应该使用:
Rsqrd1 = 1-sumSqDiff(DataSeries, ModelSeries) / sumSqDiff(DataSeries, mean(DataSeries);
如果你这样做,你有 Rsqrd1 = -0.6791;
这没有任何意义,因为 R^2 在 0 和 1 之间,但这是可能的,因为您的模型不是线性模型(不包含常数模型,作为子集)。您在网上找到的 rsquare 函数考虑到了这一点并将其限制为 0,具体来说是
r2 = max(0,1 - sum((y(:)-f(:)).^2)/sum((y(:)-mean(y(:))).^2));
因为 r2 是负数,所以结果是 0。考虑到模型中没有常数项,您可以使用该函数,调用它
rsquare(DataSeries,ModelSeries, false)(如果您查看文档,它指的是这种情况)。
同样,我建议您不要使用 R^2,尤其是在这种情况下,但我希望我已经阐明了您得到不同结果的原因。
我正在计算模型的决定系数,方法是:
Rsqrd1 = 1- sum( (DataSeries(:)-ModelSeries(:)).^2 ) / sum( (DataSeries(:)-mean(ModelSeries(:) )).^2 ) ;
但是,当我使用下面的 Matlab 函数时,我收到了不同的结果(即零)。我的问题是什么? (Matlab函数的编码和测试方法我不是很懂,所以只能比较一部分...)
[Rsqrd2, ~] = rsquare(DataSeries,ModelSeries);
仅供参考,下面是我使用了以下两个结果的数据示例:
Rsqrd1 = 0.300314935784522;
Rsqrd2 = 0;
DataSeries = [ 8.109999999999999; 7.340000000000000; 8.140000000000001; 8.529999999999999; 8.580000000000000; 10.060000000000000; 34.219999999999999; 37.899999999999999; 41.490000000000002; 41.960000000000001; 43.280000000000001; 42.950000000000003; 40.950000000000003; 41.979999999999997; 43.909999999999997; 43.250000000000000; 41.259999999999998; 49.960000000000001; 59.829999999999998; 56.850000000000001; 49.960000000000001; 39.420000000000002; 43.020000000000003; 36.509999999999998; 37.020000000000003; 35.829999999999998; 32.289999999999999; 30.079999999999998; 30.010000000000002; 28.030000000000001; 27.210000000000001; 30.460000000000001; 36.600000000000001; 38.799999999999997; 40.320000000000000; 40.530000000000001; 38.500000000000000; 36.719999999999999; 33.000000000000000; 32.009999999999998; 32.869999999999997; 40.210000000000001; 47.490000000000002; 44.950000000000003; 36.890000000000001; 34.520000000000003; 36.000000000000000; 32.289999999999999; 33.060000000000002; 29.039999999999999; 25.590000000000000; 23.340000000000000; 23.250000000000000; 24.989999999999998; 15.119999999999999; 26.010000000000002; 34.649999999999999; 36.189999999999998; 37.500000000000000; 38.560000000000002; 36.930000000000000; 33.030000000000001; 29.930000000000000; 28.390000000000001; 26.390000000000001; 33.039999999999999; 38.990000000000002; 33.930000000000000; 27.079999999999998; 18.899999999999999; 25.070000000000000; 12.250000000000000; 13.630000000000001; 15.380000000000001; 22.480000000000000; 26.090000000000000; 28.390000000000001; 31.320000000000000; 48.689999999999998; 59.969999999999999; 54.789999999999999; 44.000000000000000; 42.090000000000003; 38.390000000000001; 37.649999999999999; 32.590000000000003; 29.800000000000001; 28.649999999999999; 29.180000000000000; 34.960000000000001; 37.640000000000001; 36.939999999999998; 29.579999999999998; 26.370000000000001; 19.079999999999998; 8.789999999999999; 11.279999999999999; 10.460000000000001; 8.619999999999999; 8.770000000000000; 7.270000000000000; 20.059999999999999; 31.820000000000000; 39.460000000000001; 38.840000000000003; 38.520000000000003; 38.039999999999999; 33.590000000000003; 32.979999999999997; 32.960000000000001; 36.640000000000001; 38.119999999999997; 39.549999999999997; 46.990000000000002; 58.469999999999999; 54.539999999999999; 39.770000000000003; 37.560000000000002; 39.259999999999998; 32.049999999999997; 34.729999999999997; 34.630000000000003; 31.260000000000002; 30.039999999999999; 30.280000000000001; 31.890000000000001; 41.670000000000002; 59.890000000000001; 59.890000000000001; 59.329999999999998; 58.409999999999997; 59.090000000000003; 55.969999999999999; 53.520000000000003; 49.939999999999998; 47.289999999999999; 47.570000000000000; 55.899999999999999; 59.939999999999998; 59.240000000000002; 52.939999999999998; 38.329999999999998; 36.710000000000001; 35.460000000000001; 35.810000000000002; 34.840000000000003; 33.259999999999998; 32.590000000000003; 33.259999999999998; 34.090000000000003; 44.939999999999998; 59.430000000000000; 58.270000000000003; 58.270000000000003; 58.270000000000003; 58.079999999999998; 56.039999999999999; 55.430000000000000; 53.950000000000003; 53.439999999999998; 51.969999999999999; 58.880000000000003; 82.299999999999997; 70.109999999999999; 62.310000000000002; 51.930000000000000; 45.950000000000003; 37.549999999999997];
ModelSeries = [ 8.109999999999998; 8.033959427220921; 8.323743041322626; 8.642708281120481; 8.582517975760446; 11.267851534695547; 19.265627892290375; 24.383823505293059; 24.255451695071979; 23.221588621286294; 23.061055862798810; 22.113019289306415; 21.371289863159902; 20.649139051697372; 20.517347467041816; 20.204389732885463; 20.152889919509455; 23.796341860624523; 28.357685405641778; 26.637620279541537; 22.250623983516938; 18.521786633703048; 17.231002075227554; 13.067216036414376; 19.142739022137061; 17.721978391048754; 15.855447009714094; 14.671720684372842; 14.681919810093815; 14.765381876692128; 11.357099766936273; 15.816337667523761; 20.080445840613475; 21.201625338935443; 22.073981571269272; 22.515202276491678; 21.543798733221458; 19.960000354644297; 18.067072108251327; 17.381842068691483; 17.031516337275718; 21.137586012909246; 25.023728337649139; 22.772401470260085; 18.479087827412922; 14.972363725126110; 17.654172434932196; 11.716255484871617; 19.715961876585990; 18.155212284709371; 16.157517128358631; 14.873595374529506; 14.807724678847782; 14.816736894019828; 11.339910137512746; 15.714998343157673; 19.855463769222808; 20.864416383513849; 21.621229985316365; 21.951821367820752; 20.909538825844994; 19.286028051295396; 17.380523953397315; 16.649325149265788; 16.244747678122277; 20.077382742947545; 23.671685948867548; 21.455816819780182; 17.342414495551786; 13.997360909813795; 16.442356118812683; 10.871782060716438; 9.254066806706989; 9.020435845559256; 9.198343907518664; 9.402433405571619; 9.194123813724323; 11.889052472788039; 20.026481568965160; 24.977165077948360; 24.489207826870764; 23.114540096244365; 22.636235398768406; 21.409588152343272; 20.414075626818608; 19.464490741778725; 19.090081921322344; 18.560137046203984; 18.282057191300733; 21.323265914583974; 25.105779337411779; 23.305664987061846; 19.243112642200309; 15.837518714974767; 14.571028978312411; 10.930566921047774; 8.043061483121409; 7.828278448844956; 7.971443209965454; 8.137571402681322; 7.947505847139930; 10.477597371114410; 17.994873577687876; 22.884932423902036; 22.880903074120706; 22.024300523218443; 21.996973699650383; 21.219211759187829; 20.636217357395591; 20.069520890245851; 20.077349735794858; 19.910967044646512; 20.005696385024002; 23.801346418078619; 28.585076924647108; 27.067028838815997; 22.796087957505328; 19.136718350436571; 17.957761530043999; 13.739457493789578; 10.310824888906227; 10.234357169105408; 10.627415478755154; 11.062492850356721; 11.016017242485642; 14.506641643689173; 24.884595907986515; 31.606278720197437; 31.557624279398006; 30.332367155586006; 30.248647555318538; 29.132457008298452; 28.284532096511711; 27.459546453686421; 27.419960762893837; 27.140870313592835; 27.215931128615544; 32.312946353894560; 38.724658154432746; 36.587267960523683; 30.743914731877290; 25.748050465465422; 24.103274970768545; 18.395418569792440; 13.769537490600122; 13.631459113517636; 14.116779371574737; 14.654058009734536; 14.551159058407341; 19.106427552870549; 32.677949691257076; 41.379150497789212; 41.187871023605659; 39.464033938070862; 39.228799119138912; 37.657741343154058; 36.440049352143852; 35.257483623102601; 35.085564440852409; 34.607106722839973; 34.579707730445875; 40.908025648164319; 48.846243022607112; 45.979419502968788; 38.491201346114494; 32.114034660484577; 29.947100964693604; 22.766547766228452];
拥有一些数据将有助于确定问题。 您指的是 here 发布的 Matlab 函数吗?
如果是,在发布的示例中,它似乎适用于行向量。也许这可能是问题 (?) 我无法访问 Matlab,但这可能有效:
rsquareColumnTest = @(x,y) rsquare( (x(:).') , (y(:).') );
然后是 Rsqrd2 = rsquareColumnTest(DataSeries,ModelSeries);
如果通过测试,当然可以直接通过你的数据转置,不需要定义匿名函数。
收到数据后进一步编辑
感谢您提供数据。
首先:R^2 通常不是一个好主意你可能想看看 at this site,例如。
也就是说,如果您想比较线性模型与常数模型的表现,R^2 是有意义的。常量模型是线性模型的一个子集,这就是为什么 R^2 永远不会为负(或者如果使用得当,永远不应该为负)的原因。
如果您查看 definition,您将 R^2 定义为
Rsqrd1 = 1 - sumSqDiff(DataSeries, ModelSeries) / sumSqDiff(DataSeries, mean(ModelSeries));
我定义的地方
sumSqDiff = @(x,y) sum( (x(:)-y(:)).^2 );
根据 R^2 的定义(我鼓励你看看为什么),你应该使用:
Rsqrd1 = 1-sumSqDiff(DataSeries, ModelSeries) / sumSqDiff(DataSeries, mean(DataSeries);
如果你这样做,你有 Rsqrd1 = -0.6791; 这没有任何意义,因为 R^2 在 0 和 1 之间,但这是可能的,因为您的模型不是线性模型(不包含常数模型,作为子集)。您在网上找到的 rsquare 函数考虑到了这一点并将其限制为 0,具体来说是
r2 = max(0,1 - sum((y(:)-f(:)).^2)/sum((y(:)-mean(y(:))).^2));
因为 r2 是负数,所以结果是 0。考虑到模型中没有常数项,您可以使用该函数,调用它 rsquare(DataSeries,ModelSeries, false)(如果您查看文档,它指的是这种情况)。
同样,我建议您不要使用 R^2,尤其是在这种情况下,但我希望我已经阐明了您得到不同结果的原因。