这与6月份的早期问题有关:
我有一个自定义混合分布使用第二个自定义分布定义,跟随@Sasha过去一年的许多答案中讨论的行.
定义分布的代码如下:
nDist /: CharacteristicFunction[nDist[a_, b_, m_, s_],
t_] := (a b E^(I m t - (s^2 t^2)/2))/((I a + t) (-I b + t));
nDist /: PDF[nDist[a_, b_, m_, s_], x_] := (1/(2*(a + b)))*a*
b*(E^(a*(m + (a*s^2)/2 - x))* Erfc[(m + a*s^2 - x)/(Sqrt[2]*s)] +
E^(b*(-m + (b*s^2)/2 + x))*
Erfc[(-m + b*s^2 + x)/(Sqrt[2]*s)]);
nDist /: CDF[nDist[a_, b_, m_, s_],
x_] := ((1/(2*(a + b)))*((a + b)*E^(a*x)*
Erfc[(m - x)/(Sqrt[2]*s)] -
b*E^(a*m + …Run Code Online (Sandbox Code Playgroud) 圣路易斯联邦储备银行在各种网页上提供了大量数据,例如:
http://research.stlouisfed.org/fred2/series/OILPRICE/downloaddata?cid=32217 http://www.federalreserve.gov/releases/h10/summary/default.htm http://research.stlouisfed.org/ fred2 /系列/ DGS20
数据集会更新,有些甚至每天都会更新.我倾向于对每日数据感兴趣(请参阅URLS上的上述设置)
我想将这些价格或费率数据流(可在上述URL中作为CSV或Excel文件访问)直接导入Mathematica.
我已经查看了有关Importing []的文档,但我找不到关于如何进行此类操作的文档(实际上没有).
看起来我需要导航到页面,发送一些数据来选择特定的文件和格式,触发下载,然后从我自己的机器访问下载的数据.如果我可以直接从站点访问数据,那就更好了.
我曾希望Wolfram Alpha可以轻松做到这一点,但我没有取得任何成功.
FinancialData[]对于这类事情来说似乎很自然,但我还是没有看到这样做.财务数据有很多功能,但我没有看到你得到这种东西的方式.
有没有人有这方面的经验或有人指出我正确的方向?
使用Mathematica,我有一个列表:
l={0,0,0,1,2,0,0,0,1,0,0,0,2,0,0,0}
Run Code Online (Sandbox Code Playgroud)
我想将一个函数应用于上面的列表以获得以下内容:
{0,0,0,1,2,2,2,2,1,1,1,1,2,2,2,2}
Run Code Online (Sandbox Code Playgroud)
本质上,我想用相同长度的运行替换0值的运行,但是使用每次运行0之前的正整数的值.
我认为我可以使用FoldList轻松完成这项工作,但我无法看到解决方案.
非常感谢.
我有两个自定义分布的PDF和CDF,一种为每个分布生成RandomVariates的方法,以及用于将参数拟合到数据的代码.我之前发布的一些代码:
其中一些如下:
nlDist /: PDF[nlDist[alpha_, beta_, mu_, sigma_],
x_] := (1/(2*(alpha + beta)))*alpha*
beta*(E^(alpha*(mu + (alpha*sigma^2)/2 - x))*
Erfc[(mu + alpha*sigma^2 - x)/(Sqrt[2]*sigma)] +
E^(beta*(-mu + (beta*sigma^2)/2 + x))*
Erfc[(-mu + beta*sigma^2 + x)/(Sqrt[2]*sigma)]);
nlDist /:
CDF[nlDist[alpha_, beta_, mu_, sigma_],
x_] := ((1/(2*(alpha + beta)))*((alpha + beta)*E^(alpha*x)*
Erfc[(mu - x)/(Sqrt[2]*sigma)] -
beta*E^(alpha*mu + (alpha^2*sigma^2)/2)*
Erfc[(mu + alpha*sigma^2 - x)/(Sqrt[2]*sigma)] +
alpha*E^((-beta)*mu + (beta^2*sigma^2)/2 + alpha*x + beta*x)*
Erfc[(-mu + beta*sigma^2 + x)/(Sqrt[2]*sigma)]))/
E^(alpha*x);
dplDist /: PDF[dplDist[alpha_, beta_, mu_, sigma_], …Run Code Online (Sandbox Code Playgroud) 在任何Mathematica图表或绘图中,如何在y轴上显示%值?
我可能有这样的数据:
data = {{{2010, 8, 3}, 0.}, {{2010, 8, 31}, -0.052208}, {{2010, 9, 30},
0.008221}, {{2010, 10, 29}, 0.133203}, {{2010, 11, 30},
0.044557}, {{2010, 12, 31}, 0.164891}, {{2011, 1, 31},
0.055141}, {{2011, 2, 28}, 0.114801}, {{2011, 3, 31},
0.170501}, {{2011, 4, 29}, 0.347566}, {{2011, 5, 31},
0.461358}, {{2011, 6, 30}, 0.244649}, {{2011, 7, 29},
0.41939}, {{2011, 8, 31}, 0.589874}, {{2011, 9, 30},
0.444151}, {{2011, 10, 31}, 0.549095}, {{2011, 11, 30}, 0.539669}};
DateListPlot@data
Run Code Online (Sandbox Code Playgroud)
我只想让y轴的范围从0%到60%而不是0.0到0.6.
我需要一种方法来识别Mathematica的时间序列数据中的局部最小值和最大值.这似乎应该是一件容易的事情,但它变得棘手.我在MathForum上发布了这个,但我想我可能会在这里得到一些额外的关注.
您可以在以下网址找到讨论该问题的论文:http://www.cs.cmu.edu/~eugene/research/full/compress-series.pdf
到目前为止我试过这个...
获取并格式化一些数据:
data = FinancialData["SPY", {"May 1, 2006", "Jan. 21, 2011"}][[All, 2]];
data = data/First@data;
data = Transpose[{Range[Length@data], data}];
Run Code Online (Sandbox Code Playgroud)
定义2个功能:
第一种方法:
findMinimaMaxima[data_, window_] := With[{k = window},
data[[k + Flatten@Position[Partition[data[[All, 2]], 2 k + 1, 1], x_List /; x[[k + 1]] < Min[Delete[x, k + 1]] || x[[k + 1]] > Max[Delete[x, k + 1]]]]]]
Run Code Online (Sandbox Code Playgroud)
现在另一种方法,虽然不那么灵活:
findMinimaMaxima2[data_] := data[[Accumulate@(Length[#] & /@ Split[Prepend[Sign[Rest@data[[All, 2]] - Most@data[[All, 2]]], 0]])]]
Run Code Online (Sandbox Code Playgroud)
看看每个功能的作用.首先findMinimaMaxima2 []:
minmax = findMinimaMaxima2[data];
{Length@data, …Run Code Online (Sandbox Code Playgroud) 这个问题建立在我在之前的问题上得到的很好的答案上:
可以在Mathematica中扩展PDF,CDF,FindDistributionParameters等功能吗?
首先,我有两个自定义发行版的PDF和CDF:nlDist和dplDist,你可以从代码dplDist构建的nlDist上看到.
nlDist /: PDF[nlDist[alpha_, beta_, mu_, sigma_],
x_] := (1/(2*(alpha + beta)))*alpha*
beta*(E^(alpha*(mu + (alpha*sigma^2)/2 - x))*
Erfc[(mu + alpha*sigma^2 - x)/(Sqrt[2]*sigma)] +
E^(beta*(-mu + (beta*sigma^2)/2 + x))*
Erfc[(-mu + beta*sigma^2 + x)/(Sqrt[2]*sigma)]);
nlDist /:
CDF[nlDist[alpha_, beta_, mu_, sigma_],
x_] := ((1/(2*(alpha + beta)))*((alpha + beta)*E^(alpha*x)*
Erfc[(mu - x)/(Sqrt[2]*sigma)] -
beta*E^(alpha*mu + (alpha^2*sigma^2)/2)*
Erfc[(mu + alpha*sigma^2 - x)/(Sqrt[2]*sigma)] +
alpha*E^((-beta)*mu + (beta^2*sigma^2)/2 + alpha*x + beta*x)*
Erfc[(-mu + beta*sigma^2 + x)/(Sqrt[2]*sigma)]))/
E^(alpha*x);
dplDist /: PDF[dplDist[alpha_, beta_, mu_, sigma_], …Run Code Online (Sandbox Code Playgroud) 我有2条曲线用以下Mathematica代码说明:
Show[Plot[PDF[NormalDistribution[0.044, 0.040], x], {x, 0, 0.5}, PlotStyle -> Red],
Plot[PDF[NormalDistribution[0.138, 0.097], x], {x, 0, 0.5}]]
Run Code Online (Sandbox Code Playgroud)

我需要做两件事:
我之前没有在Mathematica中做过这种问题,也没有找到在文档中做到这一点的方法.不确定要搜索什么.
我开始使用新的Mathematica统计和数据分析功能做越来越多的工作.
我参加了周二的"Mathematica统计与数据分析"在线研讨会(精彩的演讲,我强烈推荐),但我遇到了一些问题,我希望这个论坛上有人可能会有一些时间考虑.
我已经创建了一个相当广泛的笔记本来简化我的数据分析,称之为"AnalysisNotebook".它输出一系列广泛的图表和数据,包括:直方图,PDF以及CDF图,QQ图,图研究尾配合,假设检验数据等
这只要我留的伟大工程与数学的现成的货架分布和可能工作正常进行简单的MixtureDistributions乃至ParameterMixtureDistributionS作为这些Mathematica可以容易弄清楚的时刻,PDF并且CDF,FindDistributionParameters通过打破混合物分解成块,等等.
当我尝试定义和使用一个简单的TransformedDistributionie 时遇到麻烦,
LogNormalNormalDistribution[Gamma_, Sigma_, Delta_] :=
TransformedDistribution[ u*v + Delta,
{Distributed[ u, LogNormalDistribution[ Log[Gamma], Sigma] ],
Distributed[ v, NormalDistribution[0, Sqrt[2]]}
];
Run Code Online (Sandbox Code Playgroud)
我想在这样的变形分布中做很多事情.我很欣赏这样的挑战(我在这个论坛上学到了一些 - 谢谢大家):
PDF并且CDF计算可能需要插值,解决方法或自定义方法;FindDistributionParameters并且DistributionFitTest不知道如何处理这种事情.基本上,人们想要使用的标准事物实际上不会/不能工作,人们不能指望他们这样做.
人们可以编写自定义代码来做这些事情(这个论坛再次帮助了我很多),但是然后将自定义替代品的所有复杂性结合到我的AnalysisNotebook中,看起来很愚蠢.AnalysisNotebook会随着每个新的自定义函数而增长.
这将帮助我极大这项工作,如果我能写的我的自定义版本PDF,CDF,FindDistributionParameters,DistributionFitTest和其他任何我可能需要的是更普遍的内置版本只会无缝调用标准.这样,像我的AnalysisNotebook这样的东西可以保持简单和整洁,这是我工具箱中的标准组件.如果你理解我的意思,我可以把时间花在数学而不是管道上.
为了澄清我的意思,类似于如何定义一个函数的版本来做不同的事情(使用不同数量的参数或其他类型的态势感知),Mathematica必须为使用分布作为参数的函数做类似的事情.知道用于特定内置分发的解决方案.我想补充或扩展的功能的能力PDF[],CDF[],FindDistributionParameters[],DistributionFitTest[]在该级别和相关职能-为自定义分布及其配套所需的代码,内置的功能会/可以无缝调用添加功能.
也许只是一个梦想,但如果有人知道我可以采取任何方式,我非常感谢您的反馈.
编辑 -我遇到的那种问题:
以下代码永远不会完成执行
r1 = …Run Code Online (Sandbox Code Playgroud) 在进一步开发早期问题的解决方案时,我遇到了一些意想不到的不一致:
这似乎有点不同,值得一篇新帖子.
从相同的数据开始:
data = {{{2010, 8, 3},
0.}, {{2010, 8, 31}, -0.052208}, {{2010, 9, 30},
0.008221}, {{2010, 10, 29}, 0.133203}, {{2010, 11, 30},
0.044557}, {{2010, 12, 31}, 0.164891}, {{2011, 1, 31},
0.055141}, {{2011, 2, 28}, 0.114801}, {{2011, 3, 31},
0.170501}, {{2011, 4, 29}, 0.347566}, {{2011, 5, 31},
0.461358}, {{2011, 6, 30}, 0.244649}, {{2011, 7, 29},
0.41939}, {{2011, 8, 31}, 0.589874}, {{2011, 9, 30},
0.444151}, {{2011, 10, 31}, 0.549095}, {{2011, 11, 30},
0.539669}};
Run Code Online (Sandbox Code Playgroud)
我定义了一种方法,可以FrameTicks根据上一篇文章中提供的贡献和见解建立百分比:
myFrameTicks =
Table[ …Run Code Online (Sandbox Code Playgroud) 我有2组数据:
d1= {0.119894,0.430666,0.0831885,0.0319174,0.120422,0.113005,0.396407,0.286316,0.0846212,0.0380193,0.047136,0.0362305,0.0445161,0.142403,0.0540607,0.133119,0.10831,0.173586,0.162465,0.0704632,0.0856676,0.086322,0.31334,0.210488,0.165907,0.119317,0.0995894,0.103821,0.135736,0.245069,0.0814167,0.142331,0.321499,0.0576824,0.0535766,0.0546975,0.121395,0.0608112,0.0606295,0.133289,0.0468469,0.0501325,0.0641351,0.0846396,0.317252,0.0779754,0.105217,0.0749865,0.302625,0.301864,0.0929992,0.12178,0.279253,0.245539,0.198353,0.107202,0.17784,0.145572,0.055006,0.0770127,0.0861758,0.189966,0.21403,0.0834313,0.206845,0.2087,0.263422,0.0767717,0.162445,0.0542824,0.0553086,0.141381,0.052898,0.0945407,0.0776741,0.0367623,0.0565677,0.166219,0.035447,0.120121,0.0418321,0.11264,0.0540176,0.120358,0.074417,0.242225,0.398622,0.308373,0.15192,0.278717};
d2={0.170719,0.099203,0.0539713,0.15749,0.150455,0.142714,0.0705496,0.0690684,0.0630756,0.0372223,0.0885515,0.0305229,0.0869673,0.0426363,0.0504665,0.0371966,0.0766164,0.0402321,0.0334813,0.0489499,0.0753463,0.0942363,0.0786223,0.335095,0.0706324,0.0764047,0.0682716,0.0699429,0.0355438,0.0755698,0.10206,0.199187,0.0560379,0.0342713,0.0500202,0.0558365,0.0624332,0.0418887,0.0531662,0.0499419,0.0273659,0.0228881,0.0893776,0.0643183,0.0171277,0.0373337,0.0457631,0.0764322,0.0963383,0.0633643,0.107952,0.0570244,0.19336,0.0428824,0.0629954,0.120787,0.0924894,0.0562895,0.125588,0.116919,0.196895,0.264337,0.0787541,0.318374,0.193144,0.147134,0.0456675,0.0419496,0.057378,0.0577714,0.0706519,0.0410366,0.0716635,0.0547774,0.0157382,0.030444,0.0769898,0.0121786,0.0586156,0.0314843,0.0942514,0.1627,0.0781299,0.148406,0.423559,0.276206,0.0708934,0.0812794,0.159947};
Run Code Online (Sandbox Code Playgroud)
现在我想找到一个使用StableDistribution []的估计分布
对于第一个数据集,我执行以下操作:
dist1 = EstimatedDistribution[d1, StableDistribution[alpha, beta, mu, sigma]]
Run Code Online (Sandbox Code Playgroud)
我得到一条消息和输出
FindMaximum::sdprec: Line search unable to find a sufficient increase in the function value with MachinePrecision digit precision. >>
StableDistribution[1,0.863446,1.,-0.0781627,0.0345779]
Run Code Online (Sandbox Code Playgroud)
输出看起来不错(不太适合数据,但也不是太糟糕)但是消息对输出意味着什么?
对于第二个数据集,d2
dist2 = EstimatedDistribution[d2, StableDistribution[alpha, beta, mu, sigma]]
Run Code Online (Sandbox Code Playgroud)
我收到了不同的消息.
Optimization`ModifiedCholeskyDecomposition::herm: The matrix {{2.76856*10^157,-1.75574*10^159,-1.84519*10^157,-2.26892*10^157},{7.88598*10^159,0.,6.41507*10^159,7.88598*10^159},{1.82386*10^157,6.41507*10^159,1.13495*10^157,1.82386*10^157},{-2.26892*10^157,-1.75574*10^159,-1.84519*10^157,1.68961*10^157}} is not Hermitian or real and symmetric.
Run Code Online (Sandbox Code Playgroud)
并输出:
StableDistribution[1,0.834688,1.,-0.0101189,0.0181306]
Run Code Online (Sandbox Code Playgroud)
所以,我有几个问题.谁能解释这些消息及其相关性?在我看来,Mathematica尝试了许多不同的方法来估计分布,有些方法不能很好地工作.
谢谢.
J.