我有一组数据,我想比较哪条线最好地描述它(不同顺序的多项式,指数或对数).
我使用Python和Numpy,对于多项式拟合,有一个函数polyfit()
.但我没有发现指数和对数拟合的这些函数.
有吗?或者如何解决呢?
R中是否有适合直方图曲线的函数?
假设您有以下直方图
hist(c(rep(65, times=5), rep(25, times=5), rep(35, times=10), rep(45, times=4)))
Run Code Online (Sandbox Code Playgroud)
它看起来很正常,但它是偏斜的.我想要拟合一条倾斜的正常曲线来包裹这个直方图.
这个问题相当基本,但我似乎无法在互联网上找到R的答案.
我正在使用Python和Numpy来计算任意度数的最佳拟合多项式.我传递了一个x值,y值和我想要拟合的多项式的程度列表(线性,二次等).
这很有用,但我也想计算r(相关系数)和r平方(确定系数).我将我的结果与Excel的最佳拟合趋势线能力以及它计算的r平方值进行比较.使用这个,我知道我正在为线性最佳拟合(度等于1)正确计算r平方.但是,我的函数不适用于度数大于1的多项式.
Excel可以做到这一点.如何使用Numpy计算高阶多项式的r平方?
这是我的功能:
import numpy
# Polynomial Regression
def polyfit(x, y, degree):
results = {}
coeffs = numpy.polyfit(x, y, degree)
# Polynomial Coefficients
results['polynomial'] = coeffs.tolist()
correlation = numpy.corrcoef(x, y)[0,1]
# r
results['correlation'] = correlation
# r-squared
results['determination'] = correlation**2
return results
Run Code Online (Sandbox Code Playgroud) 我已经阅读了这个问题的答案并且它们非常有用,但我需要特别是在R中提供帮助.
我在R中有一个示例数据集,如下所示:
x <- c(32,64,96,118,126,144,152.5,158)
y <- c(99.5,104.8,108.5,100,86,64,35.3,15)
Run Code Online (Sandbox Code Playgroud)
我想为这些数据拟合一个模型y = f(x)
.我希望它是一个三阶多项式模型.
我怎么能在R?
另外,R可以帮我找到最合适的模型吗?
我试图绘制一条平滑的曲线R
.我有以下简单的玩具数据:
> x
[1] 1 2 3 4 5 6 7 8 9 10
> y
[1] 2 4 6 8 7 12 14 16 18 20
Run Code Online (Sandbox Code Playgroud)
现在,当我使用标准命令绘制它时,它看起来很崎岖和前卫,当然:
> plot(x,y, type='l', lwd=2, col='red')
Run Code Online (Sandbox Code Playgroud)
如何使曲线平滑,以便使用估计值对3条边进行舍入?我知道有很多方法可以拟合平滑曲线,但我不确定哪种方法最适合这种类型的曲线以及如何编写它R
.
我试图产生对我已经产生了散点图的线性回归,但是我的数据是在列表格式,所有的例子我能找到使用的polyfit
要求使用arange
.arange
虽然不接受名单.我已经搜索了如何将列表转换为数组的高低,似乎没有什么是清楚的.我错过了什么吗?
接下来,我如何才能最好地使用整数列表作为输入polyfit
?
这是我遵循的polyfit示例:
from pylab import *
x = arange(data)
y = arange(data)
m,b = polyfit(x, y, 1)
plot(x, y, 'yo', x, m*x+b, '--k')
show()
Run Code Online (Sandbox Code Playgroud) http://marakana.com/tutorials/android/2d-graphics-example.html
我在下面使用这个例子.但当我在屏幕上移动我的手指太快时,线条会变成单个点.
我不确定我是否可以加快绘图速度.或者我应该用直线连接最后两个点.这两个解决方案中的第二个似乎是一个不错的选择,除非你的手指移动非常快,你将有一条直线的长段然后是尖锐的曲线.
如果有任何其他解决方案,听到它们会很棒.
在此先感谢您的帮助.
我有一些观点,我正在尝试适合这一点的曲线.我知道存在scipy.optimize.curve_fit
函数,但我不懂文档,即如何使用这个函数.
我的观点: np.array([(1, 1), (2, 4), (3, 1), (9, 3)])
任何人都可以解释如何做到这一点?
我试图将分段线性拟合拟合为数据集,如图1所示
这个数字是通过设置线条获得的.我试图使用代码应用分段线性拟合:
from scipy import optimize
import matplotlib.pyplot as plt
import numpy as np
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ,11, 12, 13, 14, 15])
y = np.array([5, 7, 9, 11, 13, 15, 28.92, 42.81, 56.7, 70.59, 84.47, 98.36, 112.25, 126.14, 140.03])
def linear_fit(x, a, b):
return a * x + b
fit_a, fit_b = optimize.curve_fit(linear_fit, x[0:5], y[0:5])[0]
y_fit = fit_a * x[0:7] + fit_b
fit_a, fit_b = optimize.curve_fit(linear_fit, x[6:14], y[6:14])[0]
y_fit = np.append(y_fit, …
Run Code Online (Sandbox Code Playgroud) 首先让我告诉我得到的可能不是我所期望的,也许你可以在这里帮助我.我有以下数据:
>>> x
array([ 3.08, 3.1 , 3.12, 3.14, 3.16, 3.18, 3.2 , 3.22, 3.24,
3.26, 3.28, 3.3 , 3.32, 3.34, 3.36, 3.38, 3.4 , 3.42,
3.44, 3.46, 3.48, 3.5 , 3.52, 3.54, 3.56, 3.58, 3.6 ,
3.62, 3.64, 3.66, 3.68])
>>> y
array([ 0.000857, 0.001182, 0.001619, 0.002113, 0.002702, 0.003351,
0.004062, 0.004754, 0.00546 , 0.006183, 0.006816, 0.007362,
0.007844, 0.008207, 0.008474, 0.008541, 0.008539, 0.008445,
0.008251, 0.007974, 0.007608, 0.007193, 0.006752, 0.006269,
0.005799, 0.005302, 0.004822, 0.004339, 0.00391 , 0.003481,
0.003095])
Run Code Online (Sandbox Code Playgroud)
现在,我想用4度多项式拟合这些数据.所以我这样做:
>>> coefs …
Run Code Online (Sandbox Code Playgroud) curve-fitting ×10
numpy ×6
python ×6
r ×3
scipy ×3
android ×1
data-fitting ×1
histogram ×1
java ×1
math ×1
matplotlib ×1
piecewise ×1
plot ×1
r-faq ×1
regression ×1
statistics ×1
touch ×1