我正在尝试重现此答案中的代码,但是这样做时遇到问题。VGAM我正在使用 package和中的gumbel 发行版fitdistrplus。执行以下操作时出现问题:
fit = fitdist(data1, 'gumbel', start = list(location = 0, scale = 1))
Error in mledist(data, distname, start, fix.arg, ...) :
'start' must specify names which are arguments to 'distr'.
Run Code Online (Sandbox Code Playgroud)
就好像location和scale不是 *gumbel 的参数一样。
dgumbel、pgumbel、rgumbel和qgumbel均由 正确提供VGAM。然而,该包还提供了一个名为 的函数gumbel,具有不同的语法。这可能会引起问题吗?
编辑:是的,它确实引起了问题:使用包FAdist代替工作得很好。
当使用glm中的R功能的一个可以使用的功能,如addNA或log内部formula参数.比方说,我们有一个数据帧Data有4列:Class,var1这是因素和var2,var3这是数值变量,我们适合:
Model <- glm(data = Data,
formula = Class ~ addNA(var1) + var2+ log(var3),
family = binomial)
Run Code Online (Sandbox Code Playgroud)
在glm输出变量1现在将被调用addNA(var1)(例如,在Model$xlevels),而变量3将被调用log(var3).
是否可以从glm输出中检索一个列表,该列表指示var1,var2和var3是从数据帧中提取的,而变量名中没有出现addNA(var1)或log(var3)?
更一般的是,在调用glm 之后,在 glm函数内生成任何变换/交叉项等之前,是否有可能推断出哪些列是通过glm从输入数据帧中提取的?
我想优化 SIR 模型的拟合。如果我只用 60 个数据点拟合 SIR 模型,我会得到一个“好”的结果。“好”意味着,拟合模型曲线接近数据点,直到 t=40。我的问题是,我怎样才能得到更好的拟合,也许基于所有数据点?
ydata = ['1e-06', '1.49920166169172e-06', '2.24595472686361e-06', '3.36377954575331e-06', '5.03793663882291e-06', '7.54533628058909e-06', '1.13006564683911e-05', '1.69249500601052e-05', '2.53483161761933e-05', '3.79636391699325e-05', '5.68567547875179e-05', '8.51509649182741e-05', '0.000127522555808945', '0.000189928392105942', '0.000283447055673738', '0.000423064043409294', '0.000631295993246634', '0.000941024110897193', '0.00140281896645859', '0.00209085569326554', '0.00311449589149717', '0.00463557784224762', '0.00689146863803467', '0.010227347567051', '0.0151380084180746', '0.0223233100045688', '0.0327384810150231', '0.0476330618585758', '0.0685260046667727', '0.0970432959143974', '0.134525888779423', '0.181363340075877', '0.236189247803334', '0.295374180276257', '0.353377036130714', '0.404138746080267', '0.442876028839178', '0.467273954573897', '0.477529937494976', '0.475582401936257', '0.464137179474659', '0.445930281787152', '0.423331710456602', '0.39821360956389', '0.371967226561944', '0.345577884704341', '0.319716449520481', '0.294819942458255', '0.271156813453547', '0.24887641905719', '0.228045466022105', '0.208674420183194', '0.190736203926912', '0.174179448652951', '0.158937806544529', '0.144936441326754', '0.132096533873646', '0.120338367115739', '0.10958340819268', '0.099755679236243', '0.0907826241267504', '0.0825956203546979', '0.0751302384111894', '0.0683263295744258', '0.0621279977639921', '0.0564834809370572', '0.0513449852139111', '0.0466684871328814', '0.042413516167789', '0.0385429293775096', …Run Code Online (Sandbox Code Playgroud) 我有两个变量的散点图,例如:
x<-c(0.108,0.111,0.113,0.116,0.118,0.121,0.123,0.126,0.128,0.131,0.133,0.136)
y<-c(-6.908,-6.620,-5.681,-5.165,-4.690,-4.646,-3.979,-3.755,-3.564,-3.558,-3.272,-3.073)
Run Code Online (Sandbox Code Playgroud)
我想找到更适合这两个变量之间关系的函数.
准确地说,我想拟合比较三种模式:linear,exponential和logarithmic.
我正在考虑将每个函数拟合到我的值,计算每种情况下的可能性并比较AIC值.
但我真的不知道如何或从哪里开始.任何可能的帮助将非常感激.
非常感谢你提前.
蒂娜.
我试图重现Kostakis的纸张解决方案.在本文中,使用de Heligman-Pollard模型将删节死亡率表扩展为完整的生命表.该模型有8个参数必须安装.作者使用了改进的Gauss-Newton算法; 该算法(E04FDF)是NAG计算机程序库的一部分.Levenberg Marquardt不应该产生相同的参数集吗?我的代码或LM算法的应用有什么问题?
library(minpack.lm)
## Heligman-Pollard is used to expand an abridged table.
## nonlinear least squares algorithm is used to fit the parameters on nqx observed over 5 year intervals (5qx)
AGE <- c(0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70)
MORTALITY <- c(0.010384069, 0.001469140, 0.001309318, 0.003814265, 0.005378395, 0.005985625, 0.006741766, 0.009325056, 0.014149626, 0.021601755, 0.034271934, 0.053836246, 0.085287751, 0.136549522, 0.215953304)
## The start parameters for de Heligman-Pollard Formula (Converged set a=0.0005893,b=0.0043836,c=0.0828424,d=0.000706,e=9.927863,f=22.197312,g=0.00004948,h=1.10003)
## I …Run Code Online (Sandbox Code Playgroud) r nonlinear-functions nonlinear-optimization model-fitting levenberg-marquardt
我试图在python中执行最小二乘拟合到具有三个变量的已知函数.我能够为随机生成的有错误的数据完成此任务,但我需要适合的实际数据包括一些数据点,这些数据点是值的上限.该函数将通量描述为波长的函数,但在某些情况下,在给定波长下测量的通量不是带有误差的绝对值,而是通量的最大值,实际值低于零到零的值.
是否有某种方法告诉拟合任务某些数据点是上限?另外,我必须为许多数据集执行此操作,并且可能为上限的数据点的数量对于每个数据集是不同的,因此能够自动执行此操作将是有益的但不是必需的.
如果有任何不清楚的地方我会道歉,如果需要,我会尽力更清楚地解释.
我用来拟合我的数据的代码包含在下面.
import numpy as np
from scipy.optimize import leastsq
import math as math
import matplotlib.pyplot as plt
def f_all(x,p):
return np.exp(p[0])/((x**(3+p[1]))*((np.exp(14404.5/((x*1000000)*p[2])))-1))
def residual(p,y,x,error):
err=(y-(f_all(x,p)))/error
return err
p0=[-30,2.0,35.0]
data=np.genfromtxt("./Data_Files/Object_001")
wavelength=data[:,0]
flux=data[:,1]
errors=data[:,2]
p,cov,infodict,mesg,ier=leastsq(residual, p0, args = (flux, wavelength, errors), full_output=True)
print p
Run Code Online (Sandbox Code Playgroud) 我正在尝试将2D表面适合数据。更具体地说,我想找到一个将像素坐标映射到波长坐标的函数,就像FITCOORDS在IRAF中一样。
举例来说,我想test在以下代码片段中找到适合数组的内容:
import numpy as np
from astropy.modeling.models import Chebyshev2D
from astropy.modeling.fitting import LevMarLSQFitter
#%%
test = np.array([[7473, 7040, 6613, 6183, 5753, 5321, 4888],
[7474, 7042, 6616, 6186, np.nan, 5325, 4893],
[7476, 7044, 6619, 6189, 5759, 5328, 4897],
[7479, 7047, np.nan, 6192, 5762, 5331, 4900]])
grid_pix, grid_wave = np.mgrid[:4, :7]
fitter = LevMarLSQFitter()
c2_init = Chebyshev2D(x_degree=3, y_degree=3)
c2_fit = fitter(c2_init, grid_wave, grid_pix, test)
print(c2_fit)
Run Code Online (Sandbox Code Playgroud)
ResultI 在Python 3.6 上astropy 2.0.2和numpy 1.13.3以下:
Model: Chebyshev2D …Run Code Online (Sandbox Code Playgroud) 应用不同的过滤和分割技术后,我最终得到如下图像:
我可以访问一些轮廓检测函数,它们返回该对象边缘上的点列表,或者返回一个拟合多边形(虽然有很多边,但远远超过4).我想要一种方法来将四边形贴合到那个形状上,因为我知道它是一个鞋盒的正面,应该是一个四边形.由于透视图,并行性不守恒,因此我现在没有约束,只需要包含此框的四个线段.
到目前为止我能找到的只是矩形拟合,它并没有真正返回我需要的结果,因为它迫使拟合的四边形为矩形.
如果我可以访问相机与鞋盒的相对角度并知道鞋盒与相机之间的距离,我可以生成一个Homography矩阵并扭曲图像,使鞋盒再次显示为矩形,但是现在我无法访问这些信息并希望以纯粹的愿景为基础.
任何已知的解决此类问题的方法?
我正在使用 R 中 MASS 库中的活检数据集。我正处于创建逻辑回归模型的初始阶段,以了解哪些变量对罹患恶性肿瘤的概率有影响。我删除了所有缺失数据的行(大约 16 个观察值)。所有变量本身都很重要,因此我从包含所有变量的最完整模型开始,第三个变量(V3 - 细胞大小的均匀性)是这个最完整模型中最不重要的变量。
我创建了另一个模型,删除了 V3。然后我想使用 anova() 函数来查看两个模型的拟合是否存在显着差异。但是,我从方差分析测试中没有得到 p 值。这是否意味着 p 值接近 1?我的模型设置中是否有错误?
感谢所有输入!
#post removal of rows with missing data from biopsy in library(MASS)
relevel(biopsy$class, ref = "malignant")
#assigns value of interst to malignant instead of benign.
fullest.model = glm(biopsy$class~biopsy[,2]+biopsy[,3]+biopsy[,4]+biopsy[,5]+
biopsy[,6]+biopsy[,7]+biopsy[,8]+biopsy[,9]+biopsy[,10]
,family = binomial(link = "logit"))
model1 = glm(biopsy$class~biopsy[,2]+biopsy[,4]+biopsy[,5]+
biopsy[,6]+biopsy[,7]+biopsy[,8]+biopsy[,9]+biopsy[,10]
,family = binomial(link = "logit"))
anova(model1, fullest.model)
Run Code Online (Sandbox Code Playgroud)
我得到的输出:
Resid. Df Resid. Dev Df Deviance
1 674 102.89
2 673 102.89 1 0.00090001
Run Code Online (Sandbox Code Playgroud)
^看不到p值!
我正在使用 keras 进行文本分类。预处理和矢量化后,我的训练和验证数据详细信息如下所示:
print(X_train.shape, ',', X_train.ndim, ',', type(X_train))
print(y_train.shape, ',', y_train.ndim, ',', type(y_train))
print(X_valid.shape, ',', X_valid.ndim, ',', type(X_valid))
print(y_valid.shape, ',', y_valid.ndim, ',', type(y_valid))
print(data_dim)
Run Code Online (Sandbox Code Playgroud)
输出是:
(14904,) , 1 , <class 'numpy.ndarray'>
(14904,) , 1 , <class 'numpy.ndarray'>
(3725,) , 1 , <class 'numpy.ndarray'>
(3725,) , 1 , <class 'numpy.ndarray'>
15435
Run Code Online (Sandbox Code Playgroud)
那么模型定义是:
model = Sequential()
model.add(LSTM(100, input_shape=(data_dim,1 ), return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(200))
model.add(Dropout(0.2))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics = ['accuracy'])
model.summary()
Run Code Online (Sandbox Code Playgroud)
模型总结:
模型拟合:
model.fit(X_train,y_train, validation_data = (X_valid, y_valid),
batch_size=batch_size, epochs=epochs)
Run Code Online (Sandbox Code Playgroud)
为什么会出现这个错误?
----> …Run Code Online (Sandbox Code Playgroud) model-fitting ×10
r ×5
python ×4
anova ×1
astropy ×1
fitdistrplus ×1
glm ×1
keras ×1
missing-data ×1
numpy ×1
opencv ×1
scipy ×1
statistics ×1
tensorflow ×1